1. 程式人生 > 實用技巧 >PHP原始碼安全審計工具之WAP

PHP原始碼安全審計工具之WAP

http://awap.sourceforge.net/

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 顯示此資訊