首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 防 WebShell 掃描腳本:Python 實作掃描 eval、system 等危險函數

     編輯:PHP 相關知識

Python 掃描器完整代碼

此腳本遞迴掃描目錄下 .php、.inc、.html、.htm 檔案,偵測以下特徵:

  • include/require(_once)? 引入非 PHP/INC 副檔名檔案
  • eval|proc_open|popen|shell_exec|exec|passthru|system|assert|fwrite|create_function 危險函數呼叫
  • 反引號 `command` 執行系統指令
  • $_POST|$_GET|$_REQUEST 直接傳入函數呼叫

核心邏輯片段

import os, re, sys, time

def listdir(dirs, recurse='0'):
  flog = open('check_php_shell.log','a+')
  for f in os.listdir(dirs):
    fp = os.path.join(dirs,f)
    if os.path.isdir(fp) and recurse=='1': listdir(fp,'1')
    elif os.path.isfile(fp) and re.search(r'\.(php|inc|html?)$',f,re.I):
      scan_file(fp, flog)
  flog.close()

執行方式

python scan.py /var/www/html          # 單層掃描
python scan.py /var/www/html 1 # 遞迴掃描子目錄

輸出範例

[/var/www/html/shell.php] :
    |-- [eval] line [12]
    |-- [system] line [45]
    |-- [`] command is [ls -la] in line [78]
    |-- [$_POST] line [102]

部署建議:定期排程執行、配合 log 分析告警、嚴格限制上傳目錄執行權限。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved