ssrf简介
ssrf产生原理:
- 服务端存在网络请求功能/函数,例如:file_get_contens()这一类类似于curl
- 这种函数传入的参数用户是可控的
- 没有对用户输入做过滤导致的ssrf漏洞
ssrf利用:
- 用于探测内网服务以及端口
- 探针存活主机以及开放服务
- 探针是否存在redis服务(未授权访问, 相当于是可以访问到redis服务并且开发人员不严谨没有设置密码, 因为默认是没有密码的, 或者说开发者设置了密码但是是弱口令), 利用定时任务反弹shell
目录
ssrf简介
web351:
web352-353:
web353:
web355-web356:
web357:
web358:
web359:
web360:
web351:
简单的无过滤的ssrf, 利用file协议去读取本地文件
web352-353:
必须以http或者https开头不能用127.0.0或者localhost
可以利用进制绕过0x开头是16进制
注意, 这里的16进制不是把127.0.0.1直接转成16进制, 而是127=7F 0=0 0=0 1=1直接串起来
这里使用127.0.0.1是因为很多文件是不能直接去访问的, 没有权限, 通过ssrf让他自己访问他自己然后在输出出来, 那这就不是我们去访问的了, 就是他自己拿出来给我们的
payload:
0x7F000001
web353:
这里利用其他网站域名指向ip 127.0.0.1绕过
payload:
http://safe.taobao.com/flag.php
web355-web356:
在linux中0指向自己的本地ip127.0.0.1
parse_url()
是PHP中用于解析URL并返回其组成部分的函数。可以提取URL中的各个部分,如协议(scheme)、主机(host)、端口(port)、用户信息(user、pass)、路径(path)、查询字符串(query)以及片段(fragment)
以类似字典的方式保存
这里要求host部分小于五个字符
payload:
http://0/flag,php
web357:
gethostbyname()
是PHP中的一个函数,用于获取指定主机名的IP地址。这个函数可以通过给定主机名,返回相应主机的IPv4地址。如果主机名无效,则函数返回主机名本身
在PHP中,filter_var()
函数结合FILTER_VALIDATE_IP
过滤器可以用来验证一个IP地址的有效性。在这个例子中,FILTER_FLAG_NO_PRIV_RANGE
和FILTER_FLAG_NO_RES_RANGE
是额外的标志,用于指定不接受私有IP地址和保留IP地址。
FILTER_VALIDATE_IP
:指定要验证的过滤器类型,用于验证IP地址。FILTER_FLAG_NO_PRIV_RANGE
:指示filter_var()
函数不接受私有IP地址。私有IP地址范围包括:- 10.0.0.0 至 10.255.255.255
- 172.16.0.0 至 172.31.255.255
- 192.168.0.0 至 192.168.255.255
FILTER_FLAG_NO_RES_RANGE
:指示filter_var()
函数不接受保留IP地址。保留IP地址范围包括:- 0.0.0.0 至 0.255.255.255
- 169.254.0.0 至 169.254.255.255
- 127.0.0.0 至 127.255.255.255
- 224.0.0.0 至 239.255.255.255
利用302重定向访问127.0.0.1的原理获得flag绕过过滤
302重定向是HTTP状态代码之一,表示临时性的重定向。当服务器收到客户端的请求后,如果需要将请求的资源临时重定向到另一个URL,但未来可能会恢复到原始URL时,就会返回302状态码。这意味着客户端应该继续使用原始URL进行后续请求,因为重定向是暂时的。302重定向常用于网站维护、临时性更改或者流量控制等场景。
相当于是123.com指向ip172.16.X.X, 但是访问以后重定向了127.0.0.1, 通过这个绕过
我这里在自己的主机写了个重定向脚本, 利用小米球开一个公网域名给自己的机子让靶场来访问重定向
web358:
这一题写了必须以http://ctf.开头以show结尾, 结尾倒是好弄?show或者#show都可以, 前面呢就利用@符号就可以绕过
payload:
http://ctf.@127.0.0.1/flag.php?show
web359:
这里提示了打没有密码的mysql
这一题就要用到ssrf里的万精油gopher协议了
使用 gopherus工具去构造攻击语句
抓包测试, 这里明显已经提示了, 直接尝试访问www.百度
直接使用gopheros构造攻击语句注入一句话木马
这个工具可以构造很多模块的工具, 不止mysql, redis也可以, 但前提是有未授权访问
这里不知道是没有url加密好还是怎么回事, 需要在 拿去url加密一次
看跟目录的时候出现两个flag. 直接一起读取了
web360:
这里就是redis服务了, 这个服务最开始的ssrf简介有说过
这里还是利用工具构造payload
这里会让你选是要反弹服务器shell还是直接phpshell, 反弹shell的化他会将你写的监听的ip和端口写到定时任务里, 攻击机用nc监听, 过一会儿就能拿到shell
这里有提示写入文件
成功写入