phpで記述したWebアプリケーションにクロスサイトスクリプティング、SQLインジェクションの脆弱性が存在しないかチェックしてくれるツール、pixy。
FAQ等読むとまだphp5系には未対応、マルチバイトで書かれたソースはうまく解析できない場合がある、オブジェクト指向で書かれたソースはうまく解析できないなどの問題があるが、ソースを自動でチェックするという発想がすばらしい。
pixy自体はjavaで書かれており、windowsでもlinuxでも動作する。
今回はWindows上でpixyを設定、動作させた。
[準備]
[実行]
perl を使わない場合(サンプルのgetstarted.phpをチェック)
(Pixyフォルダで) run-all.bat getstarted.php > getstarted-result.txt
※結果
Number of sinks: 2
Vulnerability detected!
- unconditional
- パスPixygetstarted.php:11
- Graph: xss2
Total Vuln Count: 1
[解説]
getstarted.phpの11行目(echo $b;)にXSSの脆弱性存在
グラフの2に脆弱性 ( Pixygraphs にtxtファイルと dotファイルが存在する。今回はxss_getstarted.php_2_dep.dot)
このgraphsフォルダには変数のフロー図が描かれている。
graphbizを用いて dotty xss_getstarted.php_2_dep.dot を実行すれば表示される。
perlを使う場合
perl run-all.pl getstarted.php > getstarted-result2.txt
※batで実行してもperlで実行しても結果は同じ
——————————————-
Tree図の作成
perl Pixyフォルダscriptstree.pl getstarted.php
※ここでdottyが起動するが大量の警告が発生する(100回ぐらい?)。
ポップアップ内容:
OKボタンを押し続けると最終的には表示される。(文字コードの問題か?)
もっと簡素化したフロー図
perl Pixyフォルダscriptsquick_cfg.pl getstarted.php
同様にエラーがでる。ただし回数はtree.plより少なめ。
SQLインジェクションのチェックのみ実施
perl Pixyフォルダscriptsrun-sql.pl getstarted.php
XSSのチェックのみ実施
perl Pixyフォルダscriptsrun-xss.pl getstarted.php