目录
内网访问
SSRF(Server-Side Request Forgery:服务请求伪造)是一种由攻击者构造,从而让服务端发起请求的一种安全漏洞,它将一个可以发起网络请求的服务当作跳板来攻击其他服务,SSRF的攻击目标一般是内网。
?url=127.0.0.1/flag.php
抓包
伪协议读取文件
https://blog.csdn.net/qq_39431542/article/details/89483887
php伪协议:
File:// 访问本地文件系统
http:// 访问 HTTPs 网址
ftp:// 访问 ftp URL
Php:// 访问输入输出流
Zlib:// 压缩流
Data:// 数据
Ssh2:// security shell2
Expect:// 处理交互式的流
Glob:// 查找匹配的文件路径
?url=file:///var/www/html/flag.php
端口扫描
POST请求
https://blog.csdn.net/qq_33295410/article/details/108619685
上传文件
CTFHUB-技能树-Web-SSRF-上传文件 - 码上快乐https://www.codeprj.com/blog/d165a31.html
FastCGI协议
Fastcgi就是一个通信协议,而FastCGI就是服务器中间件与某个语言后端进行数据交换的协议。
https://blog.csdn.net/mysteryflower/article/details/94386461
---------------------------------------------
解题文章
ctfhub-fastcgi协议_o3Ev的博客-CSDN博客https://blog.csdn.net/qq_51652864/article/details/118697060CTFHub-SSRF部分(已完结)_feng的博客-CSDN博客_ctfhub ssrf
https://blog.csdn.net/rfrder/article/details/108589988
Redis协议
Redis协议详细规范 Redis客户端和服务器端通信使用名为 RESP (REdis Serialization Protocol) 的协议。 虽然这个协议是专门为Redis设计的,它也可以用在其它 client-server 通信模式的软件上。
CTFHub SSRF | Y0ng的博客http://www.yongsheng.site/2021/04/04/CTFHub%20SSRF/
https://www.freebuf.com/articles/web/258365.html
URL Bypass
题目说url必须一“http://notfound.ctfhub.com”开头。我们可以用@绕过“http://notfound.ctfhub.com@127.0.0.1(http://notfound.ctfhub.com连接到站点127.0.0.1)
数字IP Bypass
题目提示:这次ban掉了127以及172.不能使用点分十进制的IP了。但是又要访问127.0.0.1。该怎么办呢
我们访问IP地址,十六进制,二进制转换在线计算器,在线计算,在线计算器,计算器在线计算https://www.osgeo.cn/app/sc126
进行ip的转换在访问?url=http://2130706433/flag.php
302跳转 Bypass
报错说必须从目标机本地访问:
我们构造/?url=http://127.0.0.1/flag.php
,发现被检测了:
网址为 http://xip.io,当访问这个服务的任意子域名的时候,都会重定向到这个子域名,举个例子:
当我们访问 http://127.0.0.1.xip.io/flag.php,那么实际上我们访问的是就 http://127.0.0.1/flag.php。
将127.0.0.1用0或localhost等代替。
盲猜访问
http://0.xip.io/flag.php
http://localhost.xip.io/flag.php
http://①②⑦.⓪.⓪.①.xip.io/flag.php
DNS重绑定 Bypass
对于用户请求的URL参数,首先服务器端会对其进行DNS解析,然后对于DNS服务器返回的IP地址进行判断,如果在黑名单中,就pass掉。
但是在整个过程中,第一次去请求DNS服务进行域名解析到第二次服务端去请求URL之间存在一个时间差,利用这个时间差,我们可以进行DNS 重绑定攻击。我们利用DNS Rebinding技术,在第一次校验IP的时候返回一个合法的IP,在真实发起请求的时候,返回我们真正想要访问的内网IP即可。
要完成DNS重绑定攻击,我们需要一个域名,并且将这个域名的解析指定到我们自己的DNS Server,在我们的可控的DNS Server上编写解析服务,设置TTL时间为0,这是为了防止有DNS服务器对解析结果进行缓存。这样就可以进行攻击了,完整的攻击流程为:
-
服务器端获得URL参数,进行第一次DNS解析,获得了一个非内网的IP
-
对于获得的IP进行判断,发现为非黑名单IP,则通过验证
-
服务器端对于URL进行访问,由于DNS服务器设置的TTL为0,所以再次进行DNS解析,这一次DNS服务器返回的是内网地址。
-
由于已经绕过验证,所以服务器端返回访问内网资源的结果。
我们可以自己编写解析服务,也可以利用这个网站获取一个测试用的域名:rbndr.us dns rebinding servicehttps://lock.cmpxchg8b.com/rebinder.html
访问: