作者名:Demo不是emo 

主页面链接:主页传送门
创作初心:对于计算机的学习者来说,初期的学习无疑是最迷茫和难以坚持的,中后期主要是经验和能力的提高,我也刚接触计算机1年,也在不断的探索,在CSDN写博客主要是为了分享自己的学习历程,学习方法,总结的经验等等,希望能帮助到大家
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构

每日emo:到了不偷看的那一天也许就释怀了吧
————————————————

​ 

今天又梦到她了,已经过去一年了,还是久久不能忘怀,今晚注定难免,只能再卷两篇博客了,长夜漫漫,博客作伴,话不多说,直接进入今晚的主题 ,这是今晚需要用到的东西

都在这里面了,有需要的自取即可

 链接:https://pan.baidu.com/s/1suQgMYN_Z8yOJFKgditnKQ 
提取码:75cv

这个服务我只能说顶级

今天的内容是ssrf漏洞的利用,环境选择的是discuz含有ssrf漏洞的版本,通过该漏洞来写入redis计划任务反弹shell,直接看操作

目录

 一:搭建基于centos的discuz+redis服务

1.discuz简介 

2.discuz下载 

1.LAMP 

2.discuz的安装 

3.搭建redis服务 

1.下载redis压缩包 

2.安装redis服务 

3.打开redis服务 

二:ssrf操作内网redis写入计划任务反弹shell 

1.discuz的ssrf漏洞

1.漏洞点 

2.漏洞验证

3.漏洞利用方式 

2.实操反弹shell

1.socat端口转发工具

2.制作payload

3. 利用payload拿shell

4.接收shell ,复现成功


 一:搭建基于centos的discuz+redis服务

1.discuz简介 

Discuz是一套通用的社区论坛软件系统。自2001年6月面世以来,Discuz!已拥有15年以上的应用历史和200多万网站用户案例,是全球成熟度最高、覆盖率最大的论坛软件系统之一。而这个discuz在历史上的一个版本中存在ssrf漏洞,这个版本也是今天我们要用到的版本

2.discuz下载 

1.LAMP 

lamp就是搭建discuz的前提,有了lamp才能开始搭建discuz

LAMP中,L代表linux系统,A代表apache中间件,M代表mysql数据库,P代表PHP 

LAMP的安装也是有顺序的,首先要安装的就是apache,执行下面的语句就行了

安装apache命令:

1、安装 Yum install -y httpd httpd-devel

2、启动 Service httpd.service start

3、查看状态  Service httpd.service status

 启动后访问127.0.0.1,如果像我一样能回显页面就是成功了 

 

第二个要安装的就是mysql数据库了

 这里因为单纯的mysql数据库安装很麻烦,我们又是只需要靶场环境,所以这里就安装mysql的另一个版本mariadb,指令如下:

1、安装 Yum -y install mariadb mariadb-server mariadb-libs mariadb-devel

2、启动mariadb服务 Service mariadb.service start

3、查看状态 Service mariadb.service status

Netstat -an 查看端口

如果查看端口开启情况能看到3306端口就是成功了 

第三个要安装的就是php 

1、安装PHP Yum -y install php

2、将php与mysql关联起来 Yum -y install php-mysql 

2.discuz的安装 

然后关闭防火墙,在物理机上就能访问centos的ip加上upload来安装discuz了 ,无脑下一步,直到开始设置数据库这里

注意这里的数据库密码要留空,因为刚才设置mysql并没设置数据库密码,再点下一步,就可以访问下面这个页面了

到这里discuz就安装好了 

3.搭建redis服务 

1.下载redis压缩包 

这里就要用到网盘里的redis那个压缩包了,同样需要把他放在centos里面,但是不需要放到centos的根目录了,随便放哪都可以(不可以放回收站哈),这边建议放桌面,我这就跳过步骤了,

 

同样对这个文件解压即可,但是这里不是用unzip语句了,因为这个是tar格式,所以这里用 tar zvxf命令 

解压完之后就会生成一个redis-3.0.4的文件,这就是我们要的

2.安装redis服务 

1.cd 到刚才解压的文件里面,直接源码安装即可(就是输入make即可)

2.进入到src文件夹中,找到里面存在的redis-cliredis-server文件,这就是redis服务的客户端和服务端

3.打开redis服务 

1.开启服务端

在刚才的src文件夹中输入下面的代码来打开redis服务的服务端

./redis-server     

成功开启后便是下面这样的界面,这便是开启成功了

 

2.连接客户端 

连接客户端只需要新开一个终端,同样进入到src目录下,输入redis-cli即可成功连接 ,出现我线面这个画面就是连接成功了 

 

到这里redis和discuz就全部搭建好了 

二:ssrf操作内网redis写入计划任务反弹shell 

1.discuz的ssrf漏洞

1.漏洞点 

http://你的centos的ip/upload/forum.php?mod=ajax&action=downremoteimg&message=[img]漏洞点/?data=helo.jpg[/img]

2.漏洞验证

可以先检验一下这个漏洞是否存在,可以在漏洞点的位置输入kali的ip和和一个端口号,例如(192.168.1.111:6666),再在kali用nc监听端口,看是否能获取到信息

可以看到确实收到了信息,所以漏洞存在 

3.漏洞利用方式 

因为刚刚的http协议测试了没问题,说明存在ssrf漏洞,所以我们尝试下其他的伪协议,比如用ftp协议探测centos的3306端口,但是并没有探测到,说明大概率屏蔽了这些伪协议,这时候我们就可以直接利用http协议做操作,那么具体应该怎样做呢?

因为我们想用的协议被过滤了,所以我们用http协议远程请求我们的文件,而文件内容做一个重定向到我们想用的协议即可达到想要的效果

比如下面这样.打开kali的apache服务,在根目录创建一个aa.php,内容如下 

此时用http协议访问kali的这个aa.php即可利用ftp协议来探测3306端口,把漏洞点换成http://kali的ip/aa.php,可以看到页面加载很慢,即检测到了3306端口,这样就可以绕过伪协议检测

2.实操反弹shell

探测到存在ssrf漏洞,并且目标存在一个redis服务,所以就可以尝试操作内网写入计划任务反弹shell

1.socat端口转发工具

功能就是将某个端口的数据转到另一个端口,并且抓包记录下转发的数据

2.制作payload

1.抓取数据包

 因为目标是centos7,所以用同样的系统制作payload最好,但是我只有一台centos,所以就新开一个终端来做吧,这里就需要一个aa.sh的脚本(在博客开头的文件里面也有),

 注意:这里要把我划线的ip改成自己kali的ip,要让shell反弹到指定位置

其实就是写入计划任务的那几个命令给他集成化到一个脚本里面,构成一个快捷写入计划任务反弹shell的脚本,现在就要想办法让目标(centos)执行这个脚本,来反弹shell到kali里面

这里最好用的方法就是通过抓取centos7的redis服务写入计划任务反弹shell的数据包,再通过http协议利用ssrf漏洞执行这个数据包的内容,即可达到效果 

 输入下列命令即可开启端口转发

socat -v tcp-listen:2345,fork tcp-connect:localhost:6379

这个命令的意思就是将2222端口和6379端口进行绑定,任何经过2222端口的数据都会转发到6379,并且转发的数据会被记录下来,再利用aa.sh写入计划任务,就可以抓到包了

注意:这样抓取数据包是为了保证目标centos能用这个数据包,所以模拟我们也有一台centos机器,并且在该机器执行了这个脚本抓的包,这样才不会有冲突,最大限度的保证能用

此时在2345端口执行这个脚本

如图所示,第一个终端在socat命令后的所有内容都是抓取的数据包 

2.转换数据包格式 

此时已经抓取到数据包了,但是并不能直接传输(因为不能识别),所以我们要把他换成其他格式,这里也准备了一个py脚本给你们,也在网盘中,自行取用即可

新建一个日志文件(即log后缀),把上面抓取的数据放进去保存, 

注意 :此时文件的格式一定要是unix,可以用vi的底部命令行set ff查看

再利用准备好的py脚本,转换格式

 

此时拿到的数据包就是我们要用的数据包

3. 利用payload拿shell

在攻击机kali的根目录(var/www/html)创建一个gopher.php文件, 内容和我下面的相同,但是要把127.0.01:6379/后面的内容换成你自己刚抓的数据包,保存退出

此时再用物理机登录到漏洞点,利用discuz的ssrf漏洞的http协议发起对gopher文件的请求,使文件在目标机器(centos中执行) 

注意:你如果和我一样,做准备工作时用的同一台centos,那此时你的计划任务里面已经可以反弹shell了,因为前面抓包时已经写入了,如果要看到效果就先把那个计划任务删了 

4.接收shell ,复现成功

 

访问gopher后仍然没有回显,那怎么验证呢 ,

第一个就是开启6666端口的监听,因为aa.sh那个集成化语句我用的6666端口写的计划任务

第二个,因为我们这是靶机环境,也可以直接到centos上看计划任务是否成功写入即可 

 可以看到,不论是反弹shell还是检查计划任务成功写入,都已经成功了,到这里漏洞就算全部复现完了 

奶奶滴,昨晚失眠爬起来写,今早快写完了按一下ctrl+z直接给撤销到800字,还无法找回,结果就是写到现在才写完,不过结果总是好的,虽然很气,但还是没有停下我的脚步,给自己点赞,加油哇 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐