admin

SSRF总结
SSRF总结SSRF的简介SSRF(全称 Server Side Request Forgery)服务端请求伪造。...
扫描右侧二维码阅读全文
28
2019/02

SSRF总结

SSRF总结

SSRF的简介

SSRF(全称 Server Side Request Forgery)服务端请求伪造。ssrf的形成是因为程序接口或者某种功能没有严格的进行过滤和内网隔离导致,攻击者可以构造恶意请求由服务端接受请求后发起这个请求。

SSRF可能出现的场景:

  • 能够对外发起网络请求的地方,就可能存在 SSRF 漏洞
  • 从远程服务器请求资源(Upload from URL,Import & Export RSS Feed)
  • 数据库内置功能(Oracle、MongoDB、MSSQL、Postgres、CouchDB)
  • Webmail 收取其他邮箱邮件(POP3、IMAP、SMTP)
  • 文件处理、编码处理、属性信息处理(ffmpeg、ImageMagic、DOCX、PDF、XML)

漏洞造成的危害:

(1)、可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;

(2)、攻击运行在内网或本地的应用程序(比如溢出);

(3)、对内网Web应用进行指纹识别,通过访问默认文件实现;

(4)、攻击内外网的Web应用,主要是使用Get参数就可以实现的攻击(比如Struts2漏洞利用,SQL注入、DDOS等);

(5)、利用File协议读取本地文件。

漏洞产生

SSRF在PHP中由 curl()、file_get_contents()、fsockopen()函数产生

由curl为例

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, @$_GET['url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
?>

访问内部资源

探测内网端口:

存在

不存在:

在没有回显的情况下可以根据DNSlog的请求判断

URL协议支持

  1. SFTP
  2. FTP
  3. Dict
  4. gopher
  5. TFTP
  6. file
  7. ldap

具体查阅https://_thorns.gitbooks.io/sec/content/ssrf_tips.html

Bypass Tips

0x0 URL解析

URL语法:

scheme://[login[:password]@](host_name|host_address)[:port][/hierarchical/path/to/resource[?search_string][#fragment_id]]

需要注意的是语法中@的作用

http://a.com@b.com

这个url实际会访问http://b.com 因为[login[:password]@](host_name|host_address)

@之前是认证信息所以a.com被认为是b.com的认证信息

0x1 ip进制转换

  1. 八进制
  2. 十六进制
  3. 十进制整数型
  4. 16进制整数型

ip在线进制转换:http://ip.chacuo.net/ipcalc

0x3 短网址绕过

0x4 302跳转

<?php
$ip = $_GET['ip'];
$port = $_GET['port'];
$scheme = $_GET['s'];
$data = $_GET['data'];
header("Location: $scheme://$ip:$port/$data");
?>

0x5 指向任意ip域名的xip.io

0x6 各种协议的利用

参考

Last modification:February 28th, 2019 at 04:10 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment