一.SSRF端口扫描技术介绍
SSRF(Server-Side Request Forgery)漏洞允许攻击者通过受控服务器发起任意HTTP请
求,从而探测内网服务或端口。利用SSRF进行端口扫描是一种常见的内网渗透手段,以下是关键
实现方法。
我们在DVWA里进行演示
二.SSRF端口扫描原理
SSRF漏洞通常出现在服务器端应用未对用户输入的URL进行严格校验时,攻击者可操控服务器向指定目标发起请求。例如,通过参数注入如http://内部IP:端口
,观察响应时间或错误信息判断端口开放状态。
三.实验演示(pikachu)
URL地址:http://192.168.112.12/pikachu-master/
我们进入SSRF(curl),可以看到页面显示只有一段话,像是一个链接跳转,我们点击一下。
显示出一首诗。
我们查看hackerbar:
URL:http://192.168.112.12/pikachu-master/vul/ssrf/ssrf_curl.php?url=http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_info/info1.php我们看到链接里有一个http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_info/info1.php,这个一眼就是
服务器192.168.112.12的内网,但是为了演示我们还是访问一下:
我们访问不了,这说明什么,确实是内网。
但最重要的一点是证明了我们用户要求192.168.112.12访问127.0.0.1并返回了资源,因为
127.0.0.1我们访问不了,这就是SSRF漏洞,于是我们就可以利用此漏洞进行下一步内网端口探
测,我们修改URL:http://192.168.112.12/pikachu-master/vul/ssrf/ssrf_curl.php?
url=http://127.0.0.1:25 看看访问内网25端口有没有回应,如果有就说明内网25端口开发:
我们可以看到页面返回:220 localhost.localdomain ESMTP Postfix 221 2.7.0 Error: I can break rules, too. Goodbye. 1
说明25端口在内网开发,进行内部项目功能,不对外开放的,用nmap验证一下:
查看发现25号端口是closed关闭的,验证猜想。
我们再测试一个肯定没有的255端口:发现没有回显,那就是没有在内网开发。
然后我们就可以用bp进行爆破:
开始攻击:
就可以直接遍历出其他的端口:有哪些开放的。
拓展:如何没有回显的也就是不返回信息的怎么探测呢
我们可以尝试别的协议:如dict file gopher telne scp等等去进行探测:
这里我就拿dict去进行演示:
因为有的服务器做了限制不允许http协议去给页面返回信息我们就可以尝试其他协议,服务器可能
没有做限制。
如上图dict返回的信息比http的更加全面:
220 localhost.localdomain ESMTP Postfix 502 5.5.2 Error: command not recognized 500 5.5.2
Error: bad syntax 221 2.0.0 Bye 1
小总结:
利用SSRF扫描端口时,可通过以下两种方式判断端口状态:
响应时间差异:开放端口通常返回较快,而关闭端口可能触发连接超时。
错误信息差异:部分服务返回特定错误(如HTTP 403或连接重置),而关闭端口直接拒绝连接。
四.防御与缓解措施
为防止SSRF滥用,开发者应:
- 限制服务器请求的目标域名和IP范围。
- 禁用高危协议(如
file://
、gopher://
)。 - 使用白名单校验用户输入的URL参数。
SSRF漏洞的利用成本低但危害大,渗透测试中需谨慎操作,避免对生产环境造成影响。