disable_functions 这是本文的重点,disable_functions顾名思义函数禁用,以笔者的kali环境为例,默认就禁用了如下函数: 如一些ctf题会把disable设置的极其恶心,即使我们在上传马儿到网站后会发现什么也做不了,那么此时的绕过就是本文所要讲的内容了。 open_basedir 该配置限制了当前php程序所能访问到的路径,如笔者设置...
虽然LD_PRELOAD 为我提供了劫持系统函数的能力,但前提是我得控制 php 启动外部程序(调用execve fock子进程)才行(只要有进程启动行为即可,无所谓是谁,因为新进程启动将重新LD_PRELOAD,而LD_PRELOAD用于加载动态链接库) 常见的 system() 启动程序方式显然不行,否则就不存在突破 disable_functions 一事了。PHP 脚本中...
sendmail =popen(sendmail_cmd,"w");#endif 如果系统默认sh是bash,popen会派生bash进程,而我们刚才提到的CVE-2014-6271漏洞,直接就导致我们可以利用mail()函数执行任意命令,绕过disable_functions的限制。但是这里其实有一个问题,就是extra_cmd在spprintf之前做了安全检查,我当前的PHP版本是最新的7.2.4,代码位置在mail...
FFI(Foreign Function Interface),即外部函数接口,允许从用户区调用C代码。简单地说,就是一项让你在PHP里能够调用C代码的技术。 当PHP所有的命令执行函数被禁用后,通过PHP 7.4的新特性FFI可以实现用PHP代码调用C代码的方式,先声明C中的命令执行函数,然后再通过FFI变量调用该C函数即可Bypass disable_functions。 具体请...
一、为什么要bypass disable functions 为了安全起见,很多运维人员会禁用PHP的一些“危险”函数,例如eval、exec、system等,将其写在php.ini配置文件中,就是我们所说的disable functions了,特别是虚拟主机运营商,为了彻底隔离同服务器的客户,以及避免出现大面积的安全问题,在disable functions的设置中也通常较为严格。
bypass disable function 蚁剑项目仓库中有一个各种disable的测试环境可以复现,需要环境的师傅可以选用蚁剑的环境。 https://github.com/AntSwordProject/AntSword-Labs 黑名单突破 这个应该是最简单的方式,就是寻找替代函数来执行,如system可以采用如反引号来替代执行命令。
主要是用于绕过 disable_functions ,本质上是加载顺序的问题, 动态链接库加载过程中会先加载 LD_PRELOAD 指向的变量,这样我们可以利用这个先加载来进行劫持正常的函数和命令 只要劫持系统命令调用的一个函数就可以在劫持函数任意执行其它函数从而绕过disable_functions ...
最近蚁剑有个更新,其中有一条是Bypass Disable Functions插件的更新,绕过Disable Functions的原理是利用直接用 Webshell 请求PHP-FPM/FastCGI,对于此种情况前段时间刚好遇到,其实也寻找了一些Bypass Disable Functions的方案,但是没有去深入研究过,正好趁最近实习不太忙,学习一下此种攻击方式。
将exp上传后执行系统命令来进行bypass disable LD_PRELOAD LD_PRELOAD是Linux系统的一个境变量:它允许你定义在程序运行前优先加载的动态链接库,这个功能主要就是用来有选择性的载入不同动态链接库中的相同函数,通过这个环境变量,可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖正常的函数库,一方面,我们可...
LD_PRELOAD绕过disable_functions的体验还是很不错的,只要putenv函数没被禁用,基本上就能使用这个方法。所以这其实也算一种绕过黑名单的方式,不过这个方法太经典实用,这里单独一节讲解 PHP7.4 FFI扩展 使用条件:php>=7.4,具有FFI扩展 PHP7.4增加了一个FFI(Foreign Function Interface)扩展,即外部函数接口。简单地说,就...