php bypass disable_function 命令执行 方法汇总简述


1.使用未被禁用的其他函数

exec,shell_exec,system,popen,proc_open,passthru (python_eval?perl_system ? weevely3 wiki中存在这两个函数)

要求:看看哪个函数没在禁用列表里的

2.pcntl_exec

使用pcntl_exec函数可命令执行

要求:linux系统特有模块,需编译选项中存在--enable-pcntl

3.windows com组件绕过

通过生成的com对象调用wscript.shell或shell.application以执行命令

 

要求:windows系统,com_dotnet模块开启

4.使用ld_preload劫持环境变量

利用ld_preload劫持动态链接库的优先加载路径,通过会调用系统程序的php函数,来触发对我们伪造的标准库函数的调用,从而执行恶意代码

要求:linux系统,putenv函数未被禁用,可以上传so文件

5.php7.4+ ffi特性

php7.4加入的新特性,利用ffi可以执行c代码

要求:php版本7.4+,ffi模块开启,ffi.enable 状态为enable(这个有三个状态,一定要是enable才可以)

6.构造数据包直接与php-fpm模块通信

跳过中间件分配请求的过程,直接构造特定的数据包与php-fpm模块通信

要求:目标使用了php-fpm模块,php-fpm的进程端口暴露在外网(一般为9000端口),知道一个php脚本的绝对路径和名称

7.通过.htaccess使其他后缀文件被mod_cig模块处理

主要思路和6思路差不多

要求:使用mod_cig模块,可以上传文件,.htaccess模块被开启(蚁剑有个bypass disable function的模块存在此方法)

8.imap_open()

cve-2018-19518,通过构造exp,在调用rsh的时候插入可执行命令的-oProxyCommand参数执行系统命令

 

要求:开启了imap扩展,enable_insecure_rsh选项打开,imap_open未被禁用,漏洞未被修复

9.破壳漏洞

cve-2014-6271

要求:php<5.6.2,linux系统

10.imagemagick组件命令执行

利用的是imagemagic本身的命令执行漏洞,有2个,利用的exp也不相同

要求:开启了imagemagic模块且漏洞未被修复

11.其他 

还有一些其他的方法,要结合具体情况使用,例如现权限是否可以读取宝塔的session.db,redis的利用等等,这个需要平时对漏洞的积累。

 更新:

Json Serializer UAF && PHP7 GC with Certain Destructors UAF

php7-gc-bypass漏洞利用PHP garbage collector程序中的堆溢出触发进而执行命令
影响范围是linux,php7.0-7.3
https://github.com/mm0r1/exploits/blob/master/php7-gc-bypass/exploit.php

php-json-bypass

漏洞利用json序列化程序中的堆溢出触发,以绕过disable_functions并执行系统命令
影响范围是linux,php 7.1-7.3
https://github.com/mm0r1/exploits/blob/master/php-json-bypass/exploit.php

想要深入了解上列具体原理的推荐看这位大佬的文章

https://github.com/mi1k7ea/Mi1k7ea.github.io/blob/master/index.html

 

以上内容如有不妥之处,敬请斧正

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM