Shikata Ga Nai

Private? There is no such things.

コンテンツの列挙についてかいてみた②

Hello there, ('ω')ノ

 

隠しコンテンツについて。

開発者は、ログやデータベースファイルなどの重要なファイルを。

Webディレクトリに残している可能性があって。

また、存在するがWebサイトにリンクされていないページがある可能性もあり。

隠されたコンテンツを発見するには、下記のようなアプローチがあって。


1.ブルートフォース

 アプリケーションが、404をどのように処理するかを知るために。

 有効なコンテンツと無効なコンテンツでいくつかのリクエストを行って。

 一部のアプリケーションは、200ステータスコードを返すものの。

 カスタマイズすると404メッセージを表示する場合があって。

 下記のようなツールで、ディレクトリとサブディレクトリを識別するための。

 多数のリクエストを作成して。

  https://github.com/xmendez/wfuzz

  https://github.com/KajanM/DirBuster

  https://github.com/v0re/dirb

  https://github.com/OJ/gobuster

  https://github.com/ffuf/ffuf

 

 さまざまなWordlistsを試したり。

  https://github.com/gmelodie/awesome-wordlists

 

 SecListsを見て、他のソースからの他のリストを使用したり。

  https://github.com/danielmiessler/SecLists

 

 他には、.log、.db、.md、.bakなど。

 Webサーバに存在する他のファイルを表す拡張子も試したりと。

 

2.推論

 はじめのブルートフォースで、ある程度の情報が特定されたので推測することに。

 /user/CreateFile、/user/ViewFileというページがある場合は。

 /user/EditFile、/user/DeleteFileがある可能性があって。

 アプリケーションで使用されている命名規則に応じて、推測してみて。

 

3.公開情報(OSINT)

 アプリケーションには、現在は存在しないが。

 過去には存在していたコンテンツが含まれていない可能性があって。

 それらを見つけるには、強力な検索エンジンとウェイバック マシンを利用して。

  https://archive.org/web/

 

 また、Dorksを使用して、ターゲットに関するデータを見つけたりと。

  site:

  link:

  related:

  cache:

 

 ParamSpiderなどのツールを使用して。

 archive.orgを調べて興味深いパラメータを探したり。

  https://github.com/devanshbatham/ParamSpider


 古いコンテンツを見つけることができた場合は。

 ライブアプリケーションに存在する可能性があるので。

 アプリケーションから非表示/削除する原因となる脆弱性があったりと。

 

4.サーバ

 サーバソフトウェア自体にバグが含まれている可能性があって。

 たとえば、サーバ上のファイルを読み取れる可能性があったり。

 デフォルトの資格情報やデフォルトのページなど。

 これにより、アプリケーションに関する多くの情報を推測することもできて。

 このような状況で、NiktoやWiktoの自動スキャナは非常に役立って。

  https://github.com/sullo/nikto

  https://github.com/sensepost/wikto

 

 ただ、誤検知が発生しやすいため、手動で確認して。

 スキャンにIPアドレスを使用すると、リンクの解析中に。

 Niktoが、これらのリンクが別のドメインのものであると見なして。

 無視される可能性があるので、ツールは賢く使用する必要があって。


ページ対機能

 アプリケーションには、機能的なページがあって。

 同じページが異なる出力を提供したりと。

 出力は、リクエストのパラメータによって異なって。

 これがまた、POST リクエストを使用して実行された場合だと。

 スパイダーによって回避される可能性があって。

 なので、これらのURLを特定して、リクエストを変更してみて。

 変更/逸脱があるかどうかを確認する必要があって。

 アプリケーションの機能のマインドマップを作成して、特定の機能を分離して。

 その攻撃に注意を向けることができるようにして。

 

パラメータ

 debug=True、test、hide、sourceなどのパラメータを機能ページに送信して。

 応答を監視してみると。

 異常がある場合、値を0、1、Falseなどさらに変化させて。

 これを試す最適な場所は、アプリケーションが複雑であることを特定する場所で。

 つまり、さらにデバッグが必要な場所で。

 なので、そこに実装されている可能性があって。

 開発者の立場で考えるように。

 

Best regards, (^^ゞ