PHP原始碼安全審計工具之WAP
WAP是一種原始碼靜態分析和資料探勘工具,用於檢測和糾正用PHP 4.0或更高版本編寫的Web應用程式中的輸入驗證漏洞,且誤報率較低。
WAP檢測並糾正以下漏洞:
SQL Injection (SQLI)
Cross-site scripting (XSS)
Remote File Inclusion (RFI)
Local File Inclusion (LFI)
Directory Traversal or Path Traversal (DT/PT)
Source Code Disclosure (SCD)
OS Command Injection (OSCI)
PHP Code Injection
該工具從語義上分析原始碼。
更準確地說,它會進行汙點資料流分析以檢測輸入驗證漏洞。
汙點分析的目的是跟蹤由入口點 ($_GET, $_POST 陣列) 插入的惡意輸入,並驗證它們是否到達了一些敏感的接收器,即可被惡意輸入利用的PHP函式。
檢測到之後,該工具將使用資料探勘來確認漏洞是真實的還是誤報的。
最後,通過在原始碼中插入修訂 (小段程式碼) 來糾正實際漏洞。
WAP是用Java語言編寫的,並且由三個模組組成:
程式碼分析器: 由樹生成器和汙點分析器組成。該工具集成了ANTLR生成的詞法分析器和解析器,並基於用PHP語言編寫的語法和樹語法。樹生成器使用詞法分析器和解析器為每個PHP檔案構建AST抽象語法樹。汙點分析器在AST中導航進行汙點分析,以檢測潛在的漏洞。
誤報預測因子: 由監督訓練有素的資料集組成,例項分類為漏洞和誤報,並由邏輯迴歸機器學習演算法組成。對於由程式碼分析器檢測到的每個潛在漏洞,此模組都會收集定義誤報的屬性的存在。然後,邏輯迴歸演算法接收到它們並將例項分類為是否為誤報或真實漏洞。
程式碼校正器: 每個真實的漏洞都會通過更正其原始碼來刪除。此模組針對漏洞的型別選擇修復程式,該修復程式將刪除漏洞並在原始碼中指示要插入此修復程式的位置。然後,通過插入修補程式來更正程式碼,並建立新檔案。
wap-2.1
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * WAP - Web Application Protection * * Source Code Static Analysis & Data Mining Tool * * version 2.1* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Usage: wap [options] -p <project> wap [options] file(s) 選項: -a 檢測漏洞而無需更正它們 -s 僅顯示全域性摘要 -sqli 檢測SQLI漏洞 如果不與"-a"一起使用還將自動更正它們 --dbms <dbms> 指定應用程式使用的DBMS資料庫管理系統 可用的DBMS包括: MySql, DB2, PostgreSQL 該選項僅與"-sqli"選項一起使用並且預設情況下選擇了MySQL資料庫管理系統 用於DBMS的選項包括: mysql, db2, pg -ci 檢測 RFI/LFI/DT/SCD/OS/PHP Code Injection 漏洞 如果不與"-a"一起使用還將自動更正它們 -xss 檢測反射型和儲存型XSS漏洞 如果不與"-a"一起使用還將自動更正它們 -all 檢測所有型別的漏洞 與"-sqli -ci -xss"相同 如果不與"-a"一起使用還將自動更正它們 -out <arg> 將標準輸出轉發到引數中指定的檔案 -p <project> 指定完整的專案位置檔案 指定一個或多個PHP檔案的完整路徑 -h, -help 顯示此資訊