Pikachu-SSRF

0x00 SSRF(Server-Side Request Forgery:服务器端请求伪造)

其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制
导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据

数据流:攻击者----->服务器---->目标地址

根据后台使用的函数的不同,对应的影响和利用方法又有不一样

PHP中下面函数的使用不当会导致SSRF:

file_get_contents()
fsockopen()
curl_exec()

如果一定要通过后台服务器远程去对用户指定(“或者预埋在前端的请求”)的地址进行资源请求,则请做好目标地址的过滤。


0x01 SSRF(curl)

Pikachu-SSRF_第1张图片
通过审查知道了,这首诗的真正链接。
在这里插入图片描述
点击看看效果。
Pikachu-SSRF_第2张图片
还是可以很明显的看到这里和普通的url不一样,如果是正常的url这里请求的127.0.0.1应该指的是本机,本机是又没有这些文件的,所以这里的127.0.0.1其实指的是服务器。所以这里就可以以服务器的身份去进行一些攻击,比如访问服务器上的文件,比如利用服务器做为内网探测等,这里可以简单测试下。
Pikachu-SSRF_第3张图片


0x02 SSRF(file_get_content)

Pikachu-SSRF_第4张图片
一样,点击后查看到真实链接。
Pikachu-SSRF_第5张图片
和上一题基本一样,但是函数换了,所以用法也有点不一样,file:///etc/my.cnft就可以直接读取文件。
Pikachu-SSRF_第6张图片


0x03 SSRF函数

上面的例子虽然看起来都和文件包含比较接近,但是还是有点区别的,文件包含是包含的是个文件,而SSRF根据函数的不一样,不仅可以调用远程文件,还可以执行目录或者探测端口等情况。
curl_exec(),PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。 libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。
file_get_contents()函数是用于将文件的内容读入到一个字符串中的首选方法。
Pikachu-SSRF_第7张图片
fsockopen()函数打开一个网络连接或者一个Unix套接字连接,应用会比较多,下次单独再学习吧。

你可能感兴趣的:(#,Pikachu)