【WebShellQuickScanner】 檢查Linux伺服器上的PHP WebShell的快檢腳本,並將报告推至Telegram

【WebShellQuickScanner】 一個在 Linux 伺服器上檢查是否有 PHP WebShell 和使用了高危函數的 PHP 文件的快檢腳本,同時能把檢查結果推送至 Telegram。

其實早在 17 年 Typecho 出了個 0Day 被人駭了插了一句話 shell 之後我就已經想寫這東西了。放飛機放了兩年之後這 0day 都已經成為 114514day 了我終於把這腳本給摸出來了。

這篇文章將作為此腳本的繁體中文説明檔案。


項目位址

GitHub: https://github.com/DeepSkyFire/WebShellQuickScanner

關於腳本

一個在 Linux 伺服器上快速檢查位址下是否含有 PHP WebShell 和使用了高危函數的 PHP 文件的快速檢查腳本。

它可以在 Linux 下快速檢查指定位址內的所有.php檔案中是否使用了高危函數,但它並不會刪除被檢測出來的檔案。所以需要自行決定如何處理這些被檢查出來的檔案。

它並不能替代防毒軟體,請將它給出的報告作為參考。


快捷使用

  • 獲得 WebShellQuickScanner

    wget --no-check-certificate https://raw.githubusercontent.com/DeepSkyFire/WebShellQuickScanner/master/src/WebShellScanner.sh && chmod +x WebShellScanner.sh
    
  • 開始快速檢查

    ./WebShellScanner.sh -p /data/www-data(要檢查的檔案位址)
    

詳細訊息

  • 使用依賴

    如要使用將報告推至 Telegram 功能,需要在作業系統內安裝 cURL。

  • 將報告推至 Telegram

    你需要先在 Telegram 中擁有一個 Bot。並取得你的 Chat ID。

  • 關於主機名

    你可以自定一個主機名。如果你不指定主機名,腳本將會自動讀取作業系統默認的主機名。主機名的唯一作用是在將發送至 Telegram 的報告中作為伺服器的標識便於識別。

  • 關於保存日誌檔案

    如你想要在伺服器本地保存日誌檔案,你可使用以下設置:

    ./WebShellScanner.sh -p /data/www-data -l /home/wwwwlogs
    

    請注意!日誌保存位址的結尾不要帶“/”號。

  • 完整演示

    如你準備檢查“/data/www-data”的站點位址並將檢查日誌保存至“/home/wwwlogs”,然後把檢查報告推至 Telegram 並將主機名自定義為“MyServer1”,你可以使用以下設置:

    ./WebShellScanner.sh -p /data/www-data -t TELEGRAM_BOT_TOKEN -c TELEGRAM_CHAT_ID -n MyServer1 -l /home/wwwwlogs
    
  • 查看幫助訊息

    ./WebShellScanner.sh -h
    
  • 定期檢查

    你可以使用crontab -e设置一个定期扫描任务。


参数说明

WebShellScanner.sh [-h] [-p <檢查位址>] [-t <TELEGRAM BOT TOKEN>] [-c <TELEGRAM CHAT ID>] [-n <自定義主機名>] [-l <日誌保存位址>]

允許使用的命令行選項:

-h 顯示幫助訊息. 可選參數.

-p <檢查位址> 要進行檢查的位址.

-t <TELEGRAM BOT TOKEN> Telegram Bot Token. 可選參數.

-c <TELEGRAM CHAT ID> Telegram Chat id. 可選參數.

-n <HostName> 自定义主机名. 可選參數.

-l <日誌保存位址> 日誌保存位址(日誌保存位址的結尾不要帶“/”號). 可選參數.

開源授權

  • 本項目根據 GPLv3(GNU General Public License v3.0)許可進行發佈。