はいはいparos、paros
オープンソースでダダで使えるセキュリティスキャナparosってどんな風にアタックしているのか知りたかったので、くぱぁって感じでソースコードを覗いてみた。えろす。
結論を言うと、ソースコードべた書きで力押しでやっているのかな、超かっこわるいなー
↓ここから、ソースが落とせるので、paros-3.2.13-src.zipをさくっとダウンロードして適当なディレクトに解凍。
http://sourceforge.net/projects/paros/files/
ここでは、c:\ においた。
c:\paros
そんで、以下のディレクトに移動。
C:\paros\src\org\parosproxy\paros\core\scanner\plugin
はい、みごとにテストパターンは java 中に埋め込みです。
本当にありがとうございました。
C:\paros\src\org\parosproxy\paros\core\scanner\plugin\TestInjectionSQL.java
private static final String[] SQL_AND = { " AND 1=1", "' AND '1'='1", "\" AND \"1\"=\"1", }; // always true statement for comparison private static final String[] SQL_AND_ERR = { " AND 1=2", "' AND '1'='2", "\" AND \"1\"=\"2" }; // always false statement for comparison private static final String[] SQL_OR = { " OR 1=1", "' OR '1'='1", "\" OR \"1\"=\"1", }; // always true statement for comparison if no output is returned from AND
まさかソースコードに決めうちされていたとは、オラびっくりしちゃったぜ。
最初、C:\paros\src\db\parosdb.data っていかにもなファイルがあったから、この中にパターンが格納されているものかと思った。
このソースを追っていくとファイルは、HSQLらしい。
C:\paros\src\org\parosproxy\paros\db\DatabaseServer.java
private void start(String dbname) throws ClassNotFoundException, Exception{ // hsqldb only accept '/' as path; dbname = dbname.replaceAll("\\\\", "/"); mUrl = "jdbc:hsqldb:file:" + dbname; Class.forName("org.hsqldb.jdbcDriver"); mConn = DriverManager.getConnection(mUrl, mUser, mPassword); }
javaとかまったく触ったことないので、HSQL の開き方がよくわかんないんだけど、バイナリエディタでくぱぁして見るとひたすら 0x00 で埋まっていたから空なんだろう。つーか、windowsにも strings コマンドがほしいね。 cygwinなんて入れたくないのでネイティブでほしい。
この手のデータを伴うオープンソースプロダクってデータの更新がネックになって開発がとまったりするよね。
企業でやっているところは、データを更新する専任がいたりするけど、オプソだと難しいよね。そーゆー仕事つまんないし。
やっぱ、データはwiki等の誰でも編集できるところにおいて、更新の敷居を下げて、暇なボンティアを呼び込む以外ないと思うんだ。もち、誰でもできると悪意をもった人がいるといやなので、誰でもできる板、ある程度検閲されている板、安定板って感じで分けないといけないけどね!! debian でいう、 sid testing stable みたいな。
それを判断する管理者が必要だけど、wikipediaの専門家気取りのような暇なやつらがいるんだから、なんとかなるんぢゃねーの?
余談1
scanner\plugin paros とかでぐぐったら↓のサイトにpluginディレクトリ以下について説明されていた。
http://pw1.atcms.jp/techrep/index.php?Paros
余談2
paros のビルド方法
http://d.hatena.ne.jp/tessy/20090405/1238937139