记一次有趣的命令执行


前言

在一个群里面看到的,本来不想乱搞,但好几个人都说这个站坑爹变态,我的好奇心驱使我去瞧瞧,于是就有了此篇文章。


正文

发现网站存在TP5的RCE漏洞,存在此高危漏洞还被大家说变态,一定有他的特别之处。于是首先查看了disable_functions函数看他禁止了那些函数

嗯…. 常规操作。禁止了一下函数,没啥可说。

passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server

但没有禁止assert 正常情况下即可通过file_put_contents函数直接写入恶意文件拿shell了

可目标站尝试写出文件提示失败了  一般失败的原因是根目录不可写 但一般情况下 uploads 目录是可写的 但目标连uploads都不可写  有趣!~

这个时候就该判断一下是否根本就没有写出的权限或者没有执行,尝试向/tmp/ 目录下文件成功  证明代码是能够执行的 只不过是没有权限写入而已

既然assert能够正常执行  那么就先探测一下可写入目录吧   改了改目录探测脚本然后丢到目标/tmp目录中

然后包含这个文件即可,可直接include 或者使用这个exp  别问为什么不直接包含个大马,因为大马的每次操作都要发包,且使用一下POC包含他不会接收别的值

_method=__construct&method=get&filter[]=think\__include_file&server[]=phpinfo&get[]=/tmp/xx

这就尴尬了嘛…  整个web目录都不可写   网站根目录是public 目录提示可写,但是还是写不进去东西,测试好几个目录都不行之后,就不去纠结此问题了,换个思路试试。 于是看看能不能反弹个shell

可disable_function限制的很死,不能直接执行cmd 于是尝试使用下面的脚本绕过

https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD

先将所需要的 .os 写入到目标服务器上

然后修改一下调用代码写入目标服务器

查看一下  发现所需的东西都写入了

包含执行一下  看看效果

完美,接下来就是反弹shell 了   我使用Python进行反弹  将反弹脚本写入到目标站中

先给权限 chmod 然后直接python执行

远程主机上线,完美。

事实证明  : )