低权AWD下的蓝队简易技巧

详情看上一篇方法,突然想到一个神奇的用法。

/*
how to use:
    gcc -fpic -c -ldl hook.c
    gcc -shared -lc -o hook.so hook.o
    export LD_PRELOAD=./hook.so
    export LD_PRELOAD=NULL;       //卸载库
*/

#include<stdio.h>
char* flag_path = "/flag";
extern int __open(char *,int,int);
int open(char * path,int flags,int mode)
{
    //printf("open :%s\n",path);
    if (strcmp(path,flag_path) == 0){
        // 在这里你甚至能加入什么东西,比如
        // sleep(2000000000);
        // 或者是
        // return __open(fake_flag_path,flags,mode);
        return -1;
    }
    return __open(path,flags,mode);
}

如果在双方都是低权并且是批量的话,一般没有点意识的都不会注意到环境变量的事情。
只要在本用户的和www用户的~/.bashrc设置LD_PRELOAD。或者在php环境中的config.php,加入waf的同时同时加入一句

<?php putenv("LD_PRELOAD=xxxxx"); ?>

就行啦。
如果实在没有config.php这种所有东西都会访问的文件的话,可以手工构造一个.user.ini
然后写入

auto_prepend_file=包含上面哪个代码或者你的waf的地址

这样所有的文件都会自动包含啦。
顺带附上一个文件夹监控的脚本,用pyinotify实现的。
脚本地址:file_manage.rar
当然一般情况下,基本是没有pyinotify环境的,所以这时候两个办法,下载源码安装或者编译两份出来。
源码地址:PyInstaller-3.5.tar.zip
或者是自己编译:
x86版本:file_manage.x86.zip
x64版本:file_manage.x64.zip

添加新评论

评论列表