文章目录
- 1、关注函数
- 2、SSRF支持的协议
- 2.1、http/https:
- 2.2、file:
- 2.3、dict:
- 2.4、gopher:
- 2.5、ftp/ftps:
- 2.6、tftp:
- 2.7、imap/imaps/pop3/smtp/smtps:
- 2.8、telnet:
- 3、绕过
- 3.1、读取文件绕过
- 4、修复
基础补充,
https://blog.csdn.net/weixin_43970718/article/details/104377759
1、关注函数
fopen()
file_get_contents()
curl()
fsocksopen()
2、SSRF支持的协议
2.1、http/https:
主要用来探测内网服务,根据响应的状态判断内网端口及服务,
可以结合如Struts2的RCE来实现攻击;
2.2、file:
读取服务器上的任意文件;
例如:
url=file://C:\1.txt
2.3、dict:
查看安装软件版本信息、端口,操作内网Redis服务等;
例如,可以使用 dict协议访问开放端口
url=dict://127.0.0.1/info
具体:https://www.jianshu.com/p/e0f6ef3ea833
2.4、gopher:
能够将所有操作转换成数据流,并将数据流一次发送出去,
可以用来探测内网的所有服务的所有漏洞,
可利用来攻击Redis和PHP-FPM;
2.5、ftp/ftps:
FTP匿名访问、爆破;
2.6、tftp:
UDP协议扩展,发送UDP报文;
2.7、imap/imaps/pop3/smtp/smtps:
爆破邮件用户名密码;
2.8、telnet:
SSH/Telnet匿名访问及爆破;
3、绕过
3.1、读取文件绕过
非常规,可尝试,
file://\/\/etc/passwd
4、修复
只想让用户访问baidu.com,
用户使用http://baidu.com@360.com/path?arg=value#anchor可以绕过常规检测
正确做法,
$url = 'http://baidu.com/path?arg=value#anchor';
$a = parse_url($url)['host'];
if($a != 'baidu.com'){
echo 'error';
}else{
echo 'true';
}