下載下傳位址:http://pixybox.seclab.tuwien.ac.at/pixy/index.php
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;
?>
<a href="http://www.neeao.com/blog/attachments/200707/13_164034_20070625_pixy.png" target="_blank"></a>
這樣的弱點關系圖會在分析後産生于 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 即認定該函數沒有問題。