4 5 SSRF

作者: 沉云

https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery

简介

原理

SSRF Server Side Request Forgery,服务端请求伪造。

通常出现在网站请求 url 资源的情况下。如果服务端对用户传入的 url 未适当检查,就可以使网站服务器请求自身敏感资源或者探测内网内其它机器(探针),或利用可以通过 url 触发的漏洞(利用)。

即端口扫描、与漏洞利用。

实际中的限制

进行端口扫描时,受限于不同编程语言对 url 协议的支持程度与配置情况。详见文末

例如,php 可禁用 allow_url_fopen ,以禁止对 url 风格的文件的支持。

如何攻击

主要是寻找攻击面,然后尝试突破防御,最后进行利用。

  • 攻击面:留意数据包中的 url 参数。可以结合参数名和参数值根据经验判断。

  • 突破常见代码防御,见下文。

  • 进行利用,见下文。

    如何防御

ssrf 属于输入验证不当,可以从这点进行防御,设定过滤规则良好的正则表达式。

此外还可以通过禁用某些参数,例如 php 中 allow_url_fopen 等。

常见防御绕过

更多 URL 绕过方式

  • 不严谨的 url 检验方式。

  • 更改其它协议。

  • 常见的 本地 ip 替换形式,参考

    本地ip 127.0.0.1 的替代形式

    127.1 localhost 127.127.127.127 cdir 0x7f000001 16 进制 2130706433 10 进制 017700000001 8 进制

  • DNS 解析指向本地 ip ,参考

    以下域名进行解析都会返回 127.0.0.1

    127.0.2.1.nip.io customer1.app.localhost.my.company.127.0.0.1.nip.io spoofed.burpcollaborator.net

  • dns 重绑定。

    大致原理:当防御机制进行检测时,第一次请求 dns 时,返回正常ip。然后更改 dns 将其重绑定为 127.0.0.1,当代码中第二次请求时,就会返回 127.0.0.1。

    参考 完整技术细节 、可用工具:singularitydnsFookup

    利用手法

ssrf 利用工具

端口扫描

因为 url 格式中有多种协议,可以利用不同的协议进行探测。不同编程语言对 url 协议的支持度不同。

scheme:[//[user[:password]@]host[:port]][/path][?query][fragment]

只要不显式 connect refuse ,那么就是 开放端口。

下表是利用中常见的一些协议,详见 这篇文章

http://     获取敏感功能网页(对外不开放),扫描端口
file://     获取服务器本地文件
dict://     端口扫描
SFTP://     端口扫描
LDAP://     端口扫描
Gopher://   可以构造其它协议请求 参考 https://zhuanlan.zhihu.com/p/112055947

若要探测版本信息,需要符合应用层协议,可以参考 nmap 中 banner 脚本

应用层协议属于应用程序通讯语法规则,若应用程序收到非法数据包,依据应用程序的处理规则可能进行响应,也可能不会响应。

漏洞利用

因为 ssrf 本质是发送 url 请求,所以只能利用可以通过 url 触发的漏洞。例如 Struts2-045

可以通过 url 触发的漏洞 。云主机、云服务器的 利用方式

盲 ssrf ,几乎无法利用,只能碰运气。可以用已知的通过 url 利用的漏洞盲打。

其它

关于 URL 处,可能也存在 url 重定向漏洞,用于钓鱼攻击。

不同编程语言支持的不同协议。

QQ图片20210405223544

原文创作:沉云

原文链接:https://www.cnblogs.com/starrys/p/14660342.html

更多推荐

更多
这里什么都没有

近期文章

更多
文章目录

    推荐作者

    更多