Pixy - PHP 原始碼的弱點分析工具
XSS 及 SQL injection 已成為當前網頁應用程式的主要問題,本站也介紹過一些免費的小工具,像是網頁程式執行後的 Wapiti 滲透工具,執行中的 PHPIDS 入侵偵測工具,而這次的工具則是執行前的 Pixy 原始碼檢測工具。
Pixy 是一套以 Java 開發 PHP 原始碼掃描工具,主要用以自動發掘 XSS 及 SQL injection 問題,只要作業系統已安裝了 Java SE6,解壓縮後即可執行,在 run-all.pl (如果你的環境有安裝 Perl) 或是 run-all.bat (僅供 Windows) 後面接上你的 PHP 路徑檔名即可進行分析,而結果將以文字報告形式在畫面上輸出,提供摘要及可能的弱點列表,針對弱點部份,由於作者期望能讓使用者瞭解問題發生的前後因果關係,因此採用了 dotty 格式的圖形描述語言輸出。
以下面的 php 程式為例,$y 的問題是衍生於 $x 取得未適當過濾的輸入值:
<?php $x = $_GET['x']; $y = 'hello ' . $x; echo $y; ?>

這樣的弱點關係圖會在分析後產生於 graphs 目錄中,並提供精簡的 min 及詳盡的 dep 版本,可下載 Graphviz,並利用其中的 dot 工具將 .dot 檔案轉換(do layout)為其他格式的圖檔。
在分析的過程中,程式會自動載入 include、require 的 php 檔案一併分析,如果你原本的程式是利用網站的路徑,可能就要視狀況修改為相對路徑或硬碟路徑。而在分析所得報表中,xss 漏洞會以類似下列方式羅列:
Vulnerability detected! - conditional on register_globals=on (此弱點僅存在於 register_globals 開啟時) - xxx.php:15 (弱點存在檔名及行號) - Graph: xss1 (關係圖產生於 graphs\xss_xxx.php_1_dep.dot)
另外分析過程中,pixy 會將 PHP 內建函數之輸出認定為可能存在弱點,若因此在分析時產生過多的警告,可自行修改 config\model_xss.txt,定義內建函數之風險,設為 0 即認定該函數沒有問題。
如果還是覺得麻煩,作者也提供了網頁模式,可直接貼上或上傳你的原始碼,並立即取得弱點分析及關係圖,但這種方式僅提供 XSS 分析,而不包含 SQL injection 的部份,此外當然也無法處理程式中的 include 檔案。





