最后一期了,感谢大家一直以来的关注,如果您对本系列文章内容有问题或者有更好的方法,请在评论区发送。
介绍
其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制
导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据
数据流:攻击者----->服务器---->目标地址
根据后台使用的函数的不同,对应的影响和利用方法又有不一样
PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()
如果一定要通过后台服务器远程去对用户指定("或者预埋在前端的请求")的地址进行资源请求,则请做好目标地址的过滤。
你可以根据"SSRF"里面的项目来搞懂问题的原因
个人评价:用起来需要有一定的开发基础
适用场景:有API请求的网站
实际反馈:攻击内网方面作用还是挺大的
一,SSRF(curl)
原理
首先,什么是curl:
Curl是一个开源的命令行工具和库,用于使用各种网络协议传输数据。它支持多种协议,包括HTTP、HTTPS、FTP、FTPS、SMTP、IMAP等。Curl的名称来源于“Client URL”,它最初是作为客户端工具来访问网络资源的。
在SSRF漏洞中,curl
是一个常用的工具,它可以帮助服务器向外部发起HTTP请求。如果服务器没有对curl
请求的目标地址进行严格过滤,攻击者就可以通过构造恶意的URL,让服务器访问他们指定的地址。
假设你是一家公司的前台,你的工作是帮员工接收和转寄快递。员工们会把需要寄送的快递单(请求)交给你,然后你负责将快递交给快递公司(网络请求)。快递公司会把快递送到指定的地址(目标服务器)。
正常流程
员工下单:员工给你一张快递单,上面写着收件人的地址(目标服务器的URL)。
前台转寄:你(服务器)检查快递单,确认地址是公司内部的地址(合法的请求目标),然后通过快递公司(
curl
工具)将快递寄出去。送达:快递公司把快递送到指定的地址,完成任务。
SSRF漏洞(恶意篡改地址)
现在,假设有一个员工(攻击者)心怀不轨,他在快递单上写了一个外部的地址(非法的URL),比如竞争对手公司的地址,或者一个恶意网站的地址。而你(服务器)没有仔细检查地址是否合法,就直接把快递寄出去了。这就是SSRF漏洞的原理。
攻击过程
篡改地址:攻击者在提交请求时,故意将目标地址改成了一个外部的恶意地址,比如
http://evil.com
。服务器转发:服务器(你)没有验证这个地址是否合法,直接通过
curl
工具向这个地址发起请求。攻击者获利:攻击者通过这个恶意地址,可能会让服务器访问一个恶意网站,从而获取服务器的敏感信息,或者利用服务器的权限进行进一步的攻击。
实践
点击内容后我们可以看到是url栏有东西,所以可以用File inclusion远程文件,url重定向方面的知识,但是这里用到curl的内容,这就需要大家继续学习了,在此就不再赘述,列举一些内容,大家可以自行尝试
1,访问百度首页
url=http://www.baidu.com
2,查看本地文件
url=file:///c:/test.txt
3,扫描内网机器的开发端口
url=dict://192.168.198.1
4,模拟请求头
curl -H "User-Agent: MyCustomBrowser" http://example.com
二,SSRF(file_get_content)
原理
首先,什么是file_get_content:
file_get_contents
是 PHP 中的一个函数,用于将整个文件的内容读入一个字符串中。它不仅可以读取本地文件的内容,还可以通过指定 URL 来获取远程文件的内容。
file_get_contents
是PHP中一个非常强大的函数,它可以用来读取本地文件的内容,也可以用来获取网络资源的内容。如果攻击者能够控制file_get_contents
的参数,利用好可以:
访问外部恶意网站(如
http://evil.com
)。访问服务器本地的敏感文件(如
file:///etc/passwd
)。访问内网资源(如
http://192.168.1.100
)。
假设你是一家图书馆的管理员,读者(用户)可以通过填写借书单(发送请求)来借阅图书。你的工作是根据借书单上的书名(目标资源)去书架上(服务器端资源)找到对应的书,并把它交给读者。
正常流程
读者填写借书单:读者在借书单上写上他想借的书名,比如“《哈利·波特》”(合法的目标资源)。
管理员找书:你(服务器)根据借书单上的书名去书架上查找这本书。
交付图书:找到书后,你把书交给读者,完成借阅过程。
SSRF漏洞(通过file_get_contents
)
现在,假设有个读者(攻击者)在借书单上写了一个奇怪的内容,比如“隔壁图书馆的《哈姆雷特》”(非法的外部资源)。而你(服务器)没有仔细检查借书单上的内容是否合法,就直接去寻找这本书。这就好比服务器通过file_get_contents
去请求了一个非法的外部资源,而不是内部允许的资源。
攻击过程
篡改请求:攻击者在输入中故意写了一个非法的资源路径
服务器执行:服务器没有验证这个地址是否合法,直接通过
file_get_contents
去获取这个外部资源的内容。攻击者获利:攻击者通过这个恶意地址,可能会让服务器访问一个恶意网站,从而获取服务器的敏感信息,或者利用服务器的权限进行进一步的攻击。
实践
和上面一样改url的内容
比如
查看本地文件
file=file:///C:/test.txt
查看内网内容
file=http://127.0.0.1/pikachu/vul/sqli/1.php
至此皮卡丘靶场讲解系列全部结束,感谢一直以来支持本系列的各位师傅
如果有任何问题可以在评论区询问