内网探测脚本&简单代理访问 jsp/php 源码分享

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

 
 
 

..

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

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

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

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@ page isThreadSafe="false"%> 
<%@page import="java.io.PrintWriter"%> 
<%@page import="java.io.OutputStreamWriter"%> 
<%@page import="java.util.regex.Matcher"%> 
<%@page import="java.io.IOException"%> 
<%@page import="java.net.InetAddress"%> 
<%@page import="java.util.regex.Pattern"%> 
<%@page import="java.net.HttpURLConnection"%> 
<%@page import="java.util.concurrent.LinkedBlockingQueue"%> 
<%!final static List<String> list = new ArrayList<String>(); 
  String referer = ""; 
  String cookie = ""; 
  String decode = "utf-8"; 
  int thread = 100; 
  HttpURLConnection getHTTPConn(String urlString) { 
    try { 
      java.net.URL url = new java.net.URL(urlString); 
      java.net.HttpURLConnection conn = (java.net.HttpURLConnection) url 
          .openConnection(); 
      conn.setRequestMethod("GET"); 
      conn.addRequestProperty("User-Agent", 
          "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon;)"); 
      conn.addRequestProperty("Accept-Encoding", "gzip"); 
      conn.addRequestProperty("referer", referer); 
      conn.addRequestProperty("cookie", cookie); 
      //conn.setInstanceFollowRedirects(false); 
      conn.setConnectTimeout(3000); 
      conn.setReadTimeout(3000); 
      return conn; 
    } catch (Exception e) { 
      return null; 
    } 
  } 
  HttpURLConnection conn; 
  String getHtmlContext(HttpURLConnection conn, String decode) { 
    Map<String, Object> result = new HashMap<String, Object>(); 
    try { 
      String code = "utf-8"; 
      if (decode != null) { 
        code = decode; 
      } 
      StringBuffer html = new StringBuffer(); 
      java.io.InputStreamReader isr = new java.io.InputStreamReader( 
          conn.getInputStream(), code); 
      java.io.BufferedReader br = new java.io.BufferedReader(isr); 
      String temp; 
      while ((temp = br.readLine()) != null) { 
        if (!temp.trim().equals("")) { 
          html.append(temp).append("\n"); 
        } 
      } 
      br.close(); 
      isr.close(); 
      return html.toString(); 
    } catch (Exception e) { 
      System.out.println("getHtmlContext:"+e.getMessage()); 
      return "null"; 
    } 
  } 
  String getServerType(HttpURLConnection conn) { 
    try { 
      return conn.getHeaderField("Server"); 
    } catch (Exception e) { 
      return "null"; 
    } 
  } 
  String getTitle(String htmlSource) { 
    try { 
      List<String> list = new ArrayList<String>(); 
      String title = ""; 
      Pattern pa = Pattern.compile("<title>.*?</title>"); 
      Matcher ma = pa.matcher(htmlSource); 
      while (ma.find()) { 
        list.add(ma.group()); 
      } 
      for (int i = 0; i < list.size(); i++) { 
        title = title + list.get(i); 
      } 
      return title.replaceAll("<.*?>", ""); 
    } catch (Exception e) { 
      return null; 
    } 
  } 
  List<String> getCss(String html, String url, String decode) { 
    List<String> cssurl = new ArrayList<String>(); 
    List<String> csscode = new ArrayList<String>(); 
    try { 
      String title = ""; 
      Pattern pa = Pattern.compile(".*href=\"(.*)[.]css"); 
      Matcher ma = pa.matcher(html.toLowerCase()); 
      while (ma.find()) { 
        cssurl.add(ma.group(1) + ".css"); 
      } 
      for (int i = 0; i < cssurl.size(); i++) { 
        String cssuuu = url + "/" + cssurl.get(i); 
        String csshtml = "<style>" 
            + getHtmlContext(getHTTPConn(cssuuu), decode) 
            + "</style>"; 
        csscode.add(csshtml); 
      } 
    } catch (Exception e) { 
      System.out.println("getCss:"+e.getMessage()); 
    } 
    return csscode; 
  } 
  String getMyIPLocal() throws IOException { 
    InetAddress ia = InetAddress.getLocalHost(); 
    return ia.getHostAddress(); 
  }%> 
<% 
  String u = request.getParameter("url"); 
  String ip = request.getParameter("ip"); 
  if (u != null) { 
    decode = request.getParameter("decode"); 
    String ref = request.getParameter("referer"); 
    String cook = request.getParameter("cookie"); 
    if (ref != null) { 
      referer = ref; 
    } 
    if (cook != null) { 
      cookie = cook; 
    } 
    String html = getHtmlContext(getHTTPConn(u), decode); 
    List<String> css = getCss(html, u, decode); 
    String csshtml = ""; 
    if (!html.equals("null")) { 
      for (int i = 0; i < css.size(); i++) { 
        csshtml += css.get(i); 
      } 
      out.print(html + csshtml); 
    } else { 
      response.setStatus(HttpServletResponse.SC_NOT_FOUND); 
      out.print("请求失败!"); 
    } 
    return; 
  } 
  else if (ip != null || u == null) { 
    String threadpp = (request.getParameter("thread")); 
    if (threadpp != null) { 
      thread = Integer.parseInt(threadpp); 
      System.out.println(threadpp); 
    } 
    try { 
      try { 
        String http = "http://"; 
        String localIP = getMyIPLocal(); 
        if (ip != null) { 
          localIP = ip; 
        } 
        String useIP = localIP.substring(0, 
            localIP.lastIndexOf(".") + 1); 
        final Queue<String> queue = new LinkedBlockingQueue<String>(); 
        for (int i = 1; i <= 256; i++) { 
          String url = http + useIP + i; 
          queue.offer(url); 
        } 
        final JspWriter pw = out; 
        ThreadGroup tg = new ThreadGroup("c"); 
        for (int i = 0; i < thread; i++) { 
          new Thread(tg, new Runnable() { 
            public void run() { 
              while (true) { 
                String addr = queue.poll(); 
                if (addr != null) { 
                  System.out.println(addr); 
                  HttpURLConnection conn = getHTTPConn(addr); 
                  String html = getHtmlContext(conn, 
                      decode); 
                  String title = getTitle(html); 
                  String serverType = getServerType(conn); 
                  String status = !html 
                      .equals("null") ? "Success" 
                      : "Fail"; 
                  if (html != null 
                      && !status.equals("Fail")) { 
                    try { 
                      pw.println(addr + "  >>  "+ title + ">>"+ serverType+ " >>" + status+ "<br/>"); 
                    } catch (Exception e) { 
                      e.printStackTrace(); 
                    } 
                  } 
                } else { 
                  return; 
                } 
              } 
            } 
          }).start(); 
        } 
        while (tg.activeCount() != 0) { 
        } 
      } catch (Exception e) { 
        e.printStackTrace(); 
      } 
    } catch (Exception e) { 
      out.println(e.toString()); 
    } 
  } 
%>

参数:

ip [需要探测的ip段]

url [需要请求的地址]

其他参数:

thread [指定线程数]

decode [指定编码]

referer [伪造referer]

cookie [伪造cookie]

待完善:

1.一个C段,可能有多种编码格式,所以指定一个参数是有问题的。

2.端口可以修改传入一个数组,支持探测多个端口80,8080..

3.代理访问功能并不完善,例如加载js、加载图片、超链接替换成代理访问的链接、表单替换支持真实请求..

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

<?php
$url = isset($_REQUEST[‘u’])?$_REQUEST[‘u’]:null;
$ip = isset($_REQUEST[‘i’])?$_REQUEST[‘i’]:null;
if($url != null){
$host = getHost($url);
echo getCss($host,getHtmlContext($url));
}else if($ip != null){
$useIP = substr($ip,0,strripos($ip,”.”) + 1);
ob_start();
for($i=0;$i<256;$i++){
$url = “http://”.$useIP.$i;
$html = getHtmlContext($url);
$title = getTitle(html);
$serverType = getHeader(“Server”);
$status = $html ? “Success”: “Fail”;
if($html){
echo $url.”  >>  “.$title.”>>”.$serverType.” >>”.$status.”<br/>”;
}
@ob_flush();
flush();
}
ob_end_clean();
}
function getHtmlContext($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);    //表示需要response header
curl_setopt($ch, CURLOPT_NOBODY, FALSE); //表示需要response body
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
$result = curl_exec($ch);
global $header;
if($result){
$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = explode(“\r\n”,substr($result, 0, $headerSize));
$body = substr($result, $headerSize);
}
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == ‘200’) {
return $body;
}
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == ‘302’) {
$location = getHeader(“Location”);
if(strpos(getHeader(“Location”),’http://’) == false){
$location = getHost($url).$location;
}
return getHtmlContext($location);
}
return NULL;
}
function getHeader($name){
global $header;
foreach ($header as $loop) {
if(strpos($loop,$name) !== false){
return trim(substr($loop,strlen($name)+2));
}
}
}
function getTitle($html){
preg_match(“/<title>(.*?)<\/title>/i”,$html, $matches);
return $matches[1];
}
function getHost($url){
preg_match(“/^(http:\/\/)?([^\/]+)/i”,$url, $matches);
return $matches[0];
}
function getCss($host,$html){
preg_match_all(“/<link[\s\S]*?href=[‘\”](.*?[.]css.*?)[\”‘][\s\S]*?>/i”,$html, $matches);
//print_r($matches);
foreach($matches[1] as $v){
$cssurl = $v;
if(strpos($v,’http://’) == false){
$cssurl = $host.”/”.$v;
}
$csshtml = “<style>”.file_get_contents($cssurl).”</style>”;
$html .= $csshtml;
}
return $html;
}
?>

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, exception
, 编码
, 参数
, 链接
端口
php内网探测脚本、jsp内网探测脚本、内网拓扑探测工具、内网探测、xss探测内网,以便于您获取更多的相关知识。

时间: 2024-09-18 18:15:37

内网探测脚本&简单代理访问 jsp/php 源码分享的相关文章

内网中设置华为代理路由

一.内部的局域网都使用网络上的私有地址,在常规情况下,内部的电脑在直接利用路由对外访问时,会因电脑使用的是互联网上的保留地址,而被路由器过 滤掉,从而导致无法访问互联网资源,解决这一问题的办法是利用路由操作系统提供的NAT地址转换功能,将内部网的私有地址转换成互联网上的合法地址,使得 不具有合法IP地址的用户可以通过NAT访问到外部网络.这样做的好处是无需配备代理服务器,减少投资,还可以节约合法IP地址,并提高了内部网络的安全 性. 二.使用NAT的single模式,就像它的名字一样,可以将众多

iis内网程序想用https访问,ssl证书怎么弄

问题描述 iis内网程序想用https访问,ssl证书怎么弄 程序部署在内网iis服务器上,与外网物理隔离,内网只能通过ip地址访问,没有dns服务器,怎么用h?ttps访问? 解决方案 https一样支持ip方式,自己制作一个对应IP地址的证书就可以了. 解决方案二: 免费StartSSL证书申请详细步骤和IIS中的SSL设置 http://www.server110.com/iis/201407/10798.html 解决方案三: 用hosts文件代替dns 解决方案四: 沃通(WoSign

win7 双网卡要怎么配置,可以访问外网,也可以访问内网,但是我还要访问通过联通公司的一条网络

问题描述 win7 双网卡要怎么配置,可以访问外网,也可以访问内网,但是我还要访问通过联通公司的一条网络 win7 双网卡要怎么配置,可以访问外网,也可以访问内网,但是我还要访问通过联通公司的一条网络,双网卡时不通,单时就通,详细看图,帮我想想办法. 解决方案 关于如何通过外网访问到内网的数据库?(delphi) 解决方案二: 这个问题不难解决,我们经常做的,方法见我的博客:双网卡同时上内外网的方法

Android 简单的图片查看器源码实现

本文介绍了Android 简单的图片查看器源码实现,分享给大家,具体如下: public class MainActivity extends Activity { private EditText et_path; private ImageView iv; //创建handler 对象 // private Handler handler = new Handler(){ // // //处理消息 // public void handleMessage(android.os.Message

解决内网机器无法通过域名访问同一局域网内的网站

看到这个标题,你可能会猜想这个是不可能的呢.同一个局域网怎么会访问不了同一个网内的网站呢? 在解决这个问题之前,我先来做一点解释.我们公司的网络使用是有权限的,不是所有的人都能上外网.如果是可以上外网的机器,那么在同一个局域网内确实可以通过域名进行访问.但是,不能上外网的呢? 这个问题就出来了,不能上外网的机器也想通过域名的形式访问公司的网站.那我们该如何解决呢? 其实解决方法有三种,我们按照从简到繁的顺序来一一讲解. 我们先来讲解第一种方法. 方法一.既然是同一个局域网,那么网站服务器的IP一

FireFox 3 直接显示了 JSP 的源码

问题描述 请教如下问题是什么原因导致:后台通过Servlet重定向到一个JSP文件,结果前台直接显示了该文件的源码.看现象好像是Servlet容器未将其转换成HTML文件,哪位大侠知道解决方法?注:Web服务器是Jettry部分Servlet源码:response.setContentType("text/html;charset=gb2312");ServletContextsc=getServletContext();RequestDispatcherrd=null;rd=sc.g

银客网完成数千万美元A轮融资,源码资本领投

10月20日 下午消息, P2P平台银客网今日宣布完成数千万美元A轮融资,源码资本领投,清风资本跟投. 银客网总裁林恩民表示,本轮融资资金将主要用于平台建设,风控能力提高及技术投入等.业内人士分析称,银客网尚且不算树大根深,但创新型平台模式及风控能力获得了资本认可.银客网成立于2013年10月,上线10个月,平台用户量突破8万人,撮合交易金额突破4亿元.源码资本由前红杉VP曹毅创建,是红杉资本中国成员企业,其LP包括红杉资本.美团网 王兴.今日头条张一鸣及近20位 10亿美元级企业的CEO.BA

简单的cookie计数器实现源码_php技巧

复制代码 代码如下: <?php  if (!empty ($_COOKIE['example'] ))             $example = ++$_COOKIE['example'] ;        else $example = 1 ;              setcookie("example",$example,time()+54000);?> 复制代码 代码如下: <html><head><meta http-equi

使用vb脚本让电脑自动加入域源码

在企业用户中,一大部分用户都加入了域,用于公司的安全管理.加入域对于管理比较方便.但是新增的设备或者用户如何快速的加入已知的域呢?很简单,看代码: set objShell=wscript.createObject("wscript.shell") strComputer = "." Dim WshNetwork Dim strComputer Set WshNetwork = WScript.CreateObject("WScript.Network&q