pikachu的SSRF
SSRF(curl)
- 打开pikachu,点击页面a标签,可以看到上传了一个url到后台。
2. 直接查看后端代码,可以看到它是用get获取了前端的url请求,curl_init函数会对它进行初始化,然后curl_exec函数会去执行请求,最终又将请求结果返回到前端。
3. 接着我们将上传的url修改为http://www.baidu.com,可以看到页面显示出了百度的数据库 (它的流程和分析的源代码流程是一样的,前端传入参数,后端通过curl_exec去请求百度,最后把请求返回的百度数据返回到前端)。
4. 可以把 url 中的内容改成内网的其他服务器上地址和端口,探测内网的其他信息,也可以通过SSRF漏洞读取服务器的文件,比如我们读取www/csrf.php文件,我们将url修改为:
http://127.0.0.1/csrf.php
SSRF(file_get_content)
1.同样点击pikachu上的标签。
2.查看后端代码,与前面逻辑大体相同,不同之处是它这里使用file_get_contents函数进行文件的读取执行,而file_get_contents函数可以对本地文件进行读取,也可以对远程文件进行读取。
3.同样的可以上传的参数换成http://www.baidu.com。
4. 可以把 url 中的内容改成内网的其他服务器上地址和端口,探测内网的其他信息,也可以通过SSRF漏洞读取服务器的文件,比如我们读取www/csrf.php文件,我们将url修改为:
http://127.0.0.1/csrf.php
5.我们也可以制造恶意的payload去获取后台的PHP源码。
php://filter/read=convert.base64-encode/resource=ssrf.php
6.可以看到成功获取了转换后php的base64编码,将base64进行解码,获取到了源码。