DAVScanは、WebDAVが有効なウェブサーバ上で隠しファイルやフォルダを発見するために設計された、高速かつ軽量なWebDAVスキャナです。
このスキャナは、過度に特権が設定されたり誤設定されたWebDAVサーバや、さまざまな情報漏洩や認証バイパスの脆弱性があるサーバを悪用することで動作します。スキャナは対象サーバのフィンガープリントを取得し、ルートのPROPFINDリクエストの結果に基づいてサーバをクロールします。
もし私の酷いコードを実際に読む時間を取るなら、davscanの中核部分をBeautiful Soupを使うように変更したことに気づくでしょう。これにはlibxmlが必要です。この変更を決めたのは、本当にひどいDAV設定に遭遇し、約500MBのXMLデータが返ってきてxmltreeライブラリがクラッシュしたためです。BSは…まあ…そのくらいの量の糞(BS)を処理できます。収集と解析に少し時間がかかりますが、今やDAVScanは、メモリが不足しない限り、どんなに大量のデータでも処理できるはずです。
サーバヘッダのフィンガープリント – ウェブサーバがサーバヘッダを返す場合、davscanはその応答に基づいて公開されているエクスプロイトを検索できます。
PROPFINDによる基本的なDAVスキャン – DAVから見える可能性のあるものを素早く見つけるスキャン。
IIS/6.0 Unicode認証バイパス – ファイルにはGET、フォルダにはPROPFINDを使用します。完全にはテストされていないので、結果は再確認してください。
DoSエクスプロイト結果の除外 – searchsploitの結果からサービス拒否エクスプロイトを除外できます。
エクスプロイト結果からのMSFモジュールの除外 – このリポジトリにはカスタムのsearchsploitが含まれています。既存のsearchsploitを上書きするか、バックアップして置き換えてください。この機能は実際のsearchsploitスクリプトに含まれるかどうかは未定です。
プロキシ対応 – http(s)プロキシを指定できます。これはrequestsセッションにプロキシを渡すだけです。この機能を追加したのは、現時点でrequestsが対応できないNTLM認証が必要なケースがあるからです。
認証 – 現時点ではBasic認証のみ動作します。トークン化や何か変わった認証が必要な場合は教えてください。それについては対応を検討しますが、これ以上の機能追加は優先度が高くありません。ほとんどの特殊な認証要件は、Burpとプロキシフラグを使って処理できます。
Xヘッダフィンガープリント – コードはありますが、正しく動作していません。今は動作しているかもしれませんが、まだ完全にはテストされていません。
ドキュメントを適切に記述する私の能力 – ネイティブのxmlをBeautiful Soupに切り替えた際、いくつかの要件が発生しましたが、それを伝えるのを忘れていました。これに加えてCライブラリのlibxmlもインストールする必要があります(処理が高速化されます)。また、500MBのWebDAV XMLを送り込んでも壊れません。どうやってそれを知ったのか、聞いてみてください。
他にも、私がテストしていないものや、GitHubで誰かが「これ馬鹿げてる」と教えてくれるかもしれない問題がたくさんあるでしょう。
フラットファイルの代わりにSQLiteデータベースを構築する – 現在は出力をファイルに保存し、画面には動作確認のための短いメッセージをいくつか表示しています。
戦闘機パイロットになる! – 一度トップガンを見て、空軍に入って夢を叶えることにすごく興奮しています。「スピードが必要だ!」
私の悪いコードを直してくれるのを手伝ってもいいですか? それはあなたの本業と同じで、給料はなく、私からの認識が少しだけ上乗せされる感じです。私があなたの努力でほとんど得るものがないからです。明るい面としては、週末に遅れを取り戻すために出社しろとは言いません。酔っぱらって書いたコードを提出しても文句は言いません。もうお気づきかもしれませんが、私が最も良い(?)仕事をするのはそんな時です。ただし、タイプミスを直すような馬鹿げたことは提出しないでください。それらは意図的に残してあります。
Usage: davscan.py [-h] [-D DEPTH] [-a AUTH] [-u USER] [-p PASSWORD]
[-o OUTFILE] [-P PROXY] [-d] [-m] url
positional arguments:
url スキャンするサーバのURL(例: https://foo.com:8443/)
optional arguments:
-h, --help このヘルプメッセージを表示して終了
-D DEPTH, --depth DEPTH davscanが何階層深く探索するか(デフォルトは無限); -d 1
-a AUTH, --auth AUTH 必要なBasic認証; -a basic
-u USER, --user USER ユーザー名; -u derpina
-p PASSWORD, --password PASSWORD パスワード; -P 'P@$$W0rd'
-o OUTFILE, --out OUTFILE 出力ファイル(デフォルト: -o /tmp/davout)
-P PROXY, --proxy PROXY 必要に応じてプロキシサーバ; -P http://user:[email protected]:8080/
-d, --no-dos DoSモジュールを除外
-m, --no-msf 結果からMSFモジュールを除外