これは、VBScript & WSH(Windows Scripting Host)用です


履歴



はじめに
DirIndexChk.vbs
GetHTML/GetHTMLw の結果を利用した Web 監査の補助スクリプトです

基本的な処理の流れは、
  1. GetHTML/GetHTMLw で一括ダウンロード (準備段階)
  2. 本スクリプトを使って、ディレクトリ・インデキシング可能かどうか、特殊なファイルが読み取り可能かどうかを調査します
  3. Ver2.0 から、各ディレクトリのサーバヘッダも調査します
  4. Ver2.0 から、特殊なファイルの生成ルールの仕様が変わりました
  5. GetHTTPResponseCode() 関数内部にチェックルーチンを追加すれば、カスタマイズなチェックができます(200 でも特定のボディはエラーとする...など)


本スクリプトには sComHTTPMojiChk.dll が必要です。

また、添付されている DirIndexChkCom.dll で GETHTML.hif の解析を行っていますので、COM コンポーネントとしてレジストリに登録しておく事を推奨します。

getHTML/getHTMLw は、Yutaka Endo 氏によって製作された Web ページの一括ダウンロード・ツールです。
私はまだ試していないですが、Flash コンテンツの中まで見るらしいです。


この GetHTML/GetHTMLw は、ダウンロードしたデータを、対象の Web サイトと同一のディレクトリ構造を維持した形でダウンロードされます。
という事で、ローカルのディレクトリ構造(GetHTML/GetHTMLw のデータ・ディレクトリ)を元に sComHTTP でディレクトリ・インデキシングなどが可能かどうかを調査するものです。

httpScan.vbs
Web サーバからの基本的な反応を見ます。
nc.exe (netcat) が必要です。




DirIndexChk2
基本的コンセプトは、DirIndexChk.vbs と同じです。
しかし、機能ごとにスクリプトを分割しました。
リストの出力ファイルなどには NTFS のストリーム機能を用いていますので NTFS 限定です。



DirIndexChk2
WSH(VBScript) 処理のメイン



DirIndexChk2
バッチファイル (WSH の処理を補佐)



DirIndexChk3
基本的コンセプトは、DirIndexChk.vbs/DirIndex2 と同じです。
しかし、DirIndexChk2 では、小規模サイトでもリスト作成だけに一日以上かかる(ファイル/ディレクトリ・リストとして約900)など速度的な問題のため SQLite を使って、データベース化(SQL化)しました。


DirIndexChk3
ファイル紹介



WSH/バッチなので、処理自体が遅いです。

ちなみに、本当の Web 監査はこの程度 + XSS 程度ではないので、ご注意をば...


DirIndexChk3 と SQLite
SQLite3.exe が必要です。
本家などからダウンロードしておきましょう。
私は、SQLite 3.2.7 (Windows EXE Binary) でテストしました。


DirIndexChk3
基本的な流れ
  1. GetHTML.exe/GetHTMLw.exe で、対象をまるごとダウンロード
  2. ローカルの対象に対して、GetList.vbs で、ファイルリスト(URLリスト)を作成
  3. SQLite.exe でデータベース化し、SQL によって、検査用URLリストを抽出
  4. (Bunkatu.vbs) で検査URLリストを複数ファイルへ分割
  5. ServerHeader.vbs で検査


という流れなので、DirIndexChk.vbs/DirIndexChk2 と基本的な流れは変わっていないです。


DirIndexChk3
SQL 文
db.sqlite3.master にすでに作成されているテーブルは以下です。
GetList.vbs によって吐き出される SQL スクリプトを実行すると作成されるテーブル

結局...
tesurltbl.name を最終的に検査してみればよい
ってことだ。





DirIndexChk3
リスト作成の速度
PentiumM 1GHz, Mem=1GB, 2,5in-HDD RAM ドライブにするとかすると、もっと速くなる可能性あり(かなりの部分は、ディスクアクセスの可能性あり)

うーーん、やっぱり、こういうのは自作より他人のモジュール使ったほうが速いって事ですねー(やっぱりヘタレだ..俺orz)

だいたい、線形かなぁ〜....ただ、3000 以上もファイルのあるサイトとなると ....検査 URL がものすごい量になるよ〜


4第一版
2000 ファイルぐらいで、SQL 文を作るのと、DB に登録したり条件抽出したりが、半々ぐらいの時間(8分+8分=16分)
(PentiumM 900MHz + 2.5in-HDD)

これを ERAM という RAM ディスクにすると、DB に登録したり条件抽出したりが、ほぼ瞬間的に処理される


高速化のために
当たり前の事ばかり...orz


ソースの説明
省略


実行環境



DirIndexChk2
使い方
  1. ダウンロードしたファイルを解凍しします。
    (LHAは、吉崎栄泰氏が、著作権を所有)
  2. DirIndexChkCom.dll は COM なので、レジストリに登録する
    適当なところに DirIndexChkCom.dll と RegSvr32.bat をコピーして、バッチファイルを起動する
  3. 解凍して出来た各種ファイルがスクリプトファイルや、拡張子リスト、バッチファイルなどです。


使い方:
CSCRIPT.EXE GetList.vbs (GetHTML/GetHTMLw のデータディレクトリ) 出力ファイル
(「出力ファイル:DirList」 にディレクトリ・リスト)
(「出力ファイル:FileList」 にファイル・リスト)

使い方:
CSCRIPT.EXE CreateList.vbs (GetList.vbs で出力したファイル)
(「GetList.vbs で出力したファイル:ExtenTionsMapping」 に拡張子マッピングテスト用リスト)
(「GetList.vbs で出力したファイル:hiddenFileOrFolder」 に隠しファイル用リスト)

使い方:
CSCRIPT.EXE CreateList.vbs (ストリームのあるファイル) (保存ファイル)
「ストリームのあるファイル:DirList」→「保存ファイル.DirList.txt」
「ストリームのあるファイル:FileList」→「保存ファイル.FileList.txt」
「ストリームのあるファイル:ExtenTionsMapping」→「保存ファイル.ExtenTionsMapping.txt」
「ストリームのあるファイル:hiddenFileOrFolder」→「保存ファイル.hiddenFileOrFolder.txt」

使い方:
CSCRIPT.EXE ServerHeader.vbs (リストのあるファイルとストリーム) (HTTPメソッド) (取得ヘッダ名)
取得ヘッダ名:「-」で HTTP レスポンスのステータス・コード
取得ヘッダ名:「=」で HTTP レスポンス・ボディ(BodyKaiseki() メソッドは内容が空なので自作してください)



バッチファイルは、コード見てくれ


DirIndexChk2
DirIndexChk3
削除方法
レジストリや、システムフォルダはいじっていないので、
解凍してできたファイルを削除すればOKです

DirIndexChkCom.dll をレジストリに登録した場合、DirIndexChkCom.dll 自体の削除、また regsvr32.exe によるレジストリの削除を行えばよいです。


使用上の注意
WSH の GUI 版の WSCRIPT.exe で起動すると大変な目に遭いますよ。多分...;-P
(一応、動かないようにしてはいるけど....)
かならず、コマンド・プロンプトから CScript.exe を使って呼び出しましょう


レジューム機能について
「スクリプト名」+「.log」 というファイルがチェック済な URL リストとして保存されているものです。
フォーマットは、
ステージレベル(改行)
チェック済な URL(改行)
チェック済な URL(改行)
....
です


免責など
著作権は保持します(一応)。
このソフトを使用したことによって生じた、
いかなる損害についても責任は持ちません。
ソースコードについても、各自の責任において、
自由にいじってくれてもいいです。

to do list



DownLoad(DirIndexChk3.lzh as 40,836byte)

mail to active@window.goukaku.com