80,443 - Pentesting Web Methodology
ハッキングキャリアに興味がある方や解読不能なものをハックしたい方 - 採用中です!(流暢なポーランド語の読み書きが必要です)。
基本情報
ウェブサービスは最も一般的で広範なサービスであり、さまざまな種類の脆弱性が存在します。
デフォルトポート: 80(HTTP)、443(HTTPS)
Web API ガイダンス
pageWeb API Pentesting方法論の要約
この方法論では、ドメイン(またはサブドメイン)を攻撃すると仮定します。したがって、発見した各ドメイン、サブドメイン、またはスコープ内の未確定のWebサーバーにこの方法論を適用する必要があります。
サーバーバージョン(脆弱性あり?)
識別
実行されているサーバーバージョンに既知の脆弱性があるかどうかを確認します。 HTTPヘッダーとレスポンスのクッキーは、使用されている技術やバージョンを識別するのに非常に役立ちます。Nmapスキャンはサーバーバージョンを特定できますが、whatweb、webtech**、**またはhttps://builtwith.com/のツールも役立ちます。
Webアプリケーションの脆弱性 バージョンの検索
WAFの有無を確認
Web技術のトリック
異なるよく知られた技術で脆弱性を見つけるためのいくつかのトリック:
同じドメインが異なるポート、フォルダ、サブドメインで異なる技術を使用している可能性があることに注意してください。 Webアプリケーションが以前にリストされたよく知られた技術/プラットフォームまたはその他を使用している場合は、インターネットで新しいトリックを検索してください(そして私に知らせてください!)。
ソースコードレビュー
アプリケーションのソースコードがgithubで利用可能な場合、アプリケーションのホワイトボックステストを実施する他に、現在のブラックボックステストに役立ついくつかの情報があります:
変更ログまたはReadmeまたはバージョン情報がWeb経由でアクセス可能なファイルまたは何かがあるか?
資格情報はどこに保存されていますか? 資格情報(ユーザー名またはパスワード)が含まれる(アクセス可能な?)ファイルはありますか?
パスワードは平文、暗号化されているか、どのハッシュアルゴリズムが使用されていますか?
何かを暗号化するためのマスターキーを使用していますか? どのアルゴリズムが使用されていますか?
いくつかの脆弱性を悪用してこれらのファイルにアクセスできますか?
githubの興味深い情報(解決済みおよび未解決の問題)がありますか? またはコミット履歴(古いコミットに導入されたパスワードなど)に?
自動スキャナー
一般的な目的の自動スキャナー
CMSスキャナー
CMSが使用されている場合は、スキャナーを実行することを忘れないでください。おそらく興味深い情報が見つかるかもしれません:
CMSMap: (W)ordpress、(J)oomla、(D)rupal、(M)oodle
この時点では、クライアントが使用しているWebサーバーに関する情報がすでにいくつかあるはずです(データが提供されている場合)、およびテスト中に心に留めておくべきいくつかのトリックがあります。運が良ければ、CMSを見つけてスキャナーを実行しているかもしれません。
ステップバイステップのWebアプリケーションの発見
この時点から、Webアプリケーションとやり取りを開始します。
初期チェック
興味深い情報を持つデフォルトページ:
/robots.txt
/sitemap.xml
/crossdomain.xml
/clientaccesspolicy.xml
/.well-known/
メインとセカンダリページのコメントもチェックしてください。
エラーを強制する
Webサーバーは、奇妙なデータが送信されると予期しない動作をする可能性があります。これにより、脆弱性が公開されたり、機密情報が漏洩したりする可能性があります。
/whatever_fake.php (.aspx、.html、など) のような偽のページにアクセス
クッキー値やパラメータ値に "[]", "]]", および "[[" を追加してエラーを発生させる
URLの末尾に
/~randomthing/%s
と入力してエラーを生成するPATCH、DEBUGなどの異なるHTTP動詞を試してみる
ファイルをアップロードできるか確認する (PUT動詞、WebDav)
WebDavが有効になっていることがわかった場合でも、ルートフォルダにファイルをアップロードする権限が不足している場合は、次のようにしてみてください:
資格情報をブルートフォースする
WebDavを介してファイルをアップロードして、Webページ内の他のフォルダにアクセスします。他のフォルダにファイルをアップロードする権限があるかもしれません。
SSL/TLSの脆弱性
アプリケーションがHTTPSの使用を強制していない場合、MitMに脆弱です
アプリケーションがHTTPを使用して機密データ(パスワード)を送信している場合、高い脆弱性です。
testssl.shを使用して脆弱性をチェックします(Bug Bountyプログラムでは、おそらくこの種の脆弱性は受け入れられないでしょう)、そしてa2svを使用して脆弱性を再チェックします:
SSL/TLSの脆弱性に関する情報:
スパイダリング
ウェブ内である種のスパイダーを起動します。スパイダーの目標は、テストされたアプリケーションから可能な限り多くのパスを見つけることです。したがって、ウェブクローリングと外部ソースを使用して、可能な限り多くの有効なパスを見つける必要があります。
gospider (go): HTMLスパイダー、JSファイル内のLinkFinder、外部ソース(Archive.org、CommonCrawl.org、VirusTotal.com、AlienVault.com)を使用
hakrawler (go): HTMLスパイダー、JSファイルのLinkFinder、外部ソースとしてArchive.orgを使用
dirhunt (python): HTMLスパイダー、また「ジューシーファイル」を示します
evine (go): インタラクティブCLI HTMLスパイダー。また、Archive.orgで検索します
meg (go): このツールはスパイダーではありませんが、便利です。ホストとパスを示すだけで、megは各ホストの各パスを取得してレスポンスを保存します
urlgrab (go): JSレンダリング機能を備えたHTMLスパイダー。ただし、メンテナンスされていないようで、事前にコンパイルされたバージョンが古く、現在のコードはコンパイルされません
gau (go): 外部プロバイダ(wayback、otx、commoncrawl)を使用するHTMLスパイダー
ParamSpider: このスクリプトはパラメータを持つURLを見つけ、リストします
galer (go): JSレンダリング機能を備えたHTMLスパイダー
LinkFinder (python): JSファイル内の新しいパスを検索できるJSビューティファイ機能を備えたHTMLスパイダー。また、JSScannerも見てみる価値があります
goLinkFinder (go): HTMLソースと埋め込みJavaScriptファイルからエンドポイントを抽出するためのツール。バグハンターやレッドチーム、情報セキュリティのニンジャに便利です
JSParser (python2.7): TornadoとJSBeautifierを使用してJavaScriptファイルから相対URLを解析するPython 2.7スクリプト。AJAXリクエストを簡単に発見するのに便利です。メンテナンスされていないようです
relative-url-extractor (ruby): ファイル(HTML)を指定すると、そのファイルから相対URLを抽出するためのニフティな正規表現を使用します
JSFScan (bash、複数のツール): いくつかのツールを使用してJSファイルから興味深い情報を収集します
subjs (go): JSファイルを見つけます
page-fetch (go): ヘッドレスブラウザでページを読み込み、ページの読み込みに使用されるすべてのURLを出力します
Feroxbuster (rust): 以前のツールのオプションを組み合わせたコンテンツ発見ツール
Javascript Parsing: JSファイル内のパスとパラメータを見つけるためのBurp拡張機能
Sourcemapper: .js.map URLを指定すると、美しく整形されたJSコードを取得します
xnLinkFinder: 指定されたターゲットのエンドポイントを発見するためのツール
waymore: wayback machineからリンクを発見します(waybackの応答をダウンロードし、さらにリンクを探します)
HTTPLoot (go): フォームの記入によるクロールや、特定の正規表現を使用して機密情報を見つける
SpiderSuite: Spider Suiteは、サイバーセキュリティ専門家向けに設計された高度なマルチ機能GUIウェブセキュリティクローラー/スパイダーです
jsluice (go): JavaScriptソースコードからURL、パス、シークレットなどの興味深いデータを抽出するためのGoパッケージおよびコマンドラインツール
ParaForge: リクエストからパラメータとエンドポイントを抽出して、ファジングと列挙のためのカスタムワードリストを作成するためのシンプルなBurp Suite拡張機能
katana (go): この素晴らしいツール
ディレクトリとファイルのブルートフォース
ルートフォルダからブルートフォースを開始し、この方法で見つかったすべてのディレクトリをブルートフォースし、スパイダリングによって発見されたすべてのディレクトリをブルートフォースします(これを再帰的に行い、見つかったディレクトリの名前を使用したワードリストの先頭に追加します)。 ツール:
Dirb / Dirbuster - Kaliに含まれていますが、古い(および遅い)ですが機能します。自動署名証明書と再帰的検索を許可します。他のオプションと比較して遅すぎます
Dirsearch (python): 自動署名証明書を許可しませんが再帰的検索を許可します
Gobuster (go): 自動署名証明書を許可し、再帰的検索はありません
Feroxbuster - 速く、再帰的検索をサポートします
wfuzz
wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ
ffuf - 速い:
ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ
uro (python): これはスパイダーではなく、見つかったURLのリストを削除するツールです
Scavenger: 異なるページのburp履歴からディレクトリのリストを作成するためのBurp拡張機能
TrashCompactor: 重複機能を持つURLを削除します(jsのインポートに基づく)
Chamaleon: 使用されている技術を検出し、使用するワードリストを選択するためにwapalyzerを使用します
推奨される辞書:
raft-large-directories-lowercase.txt
directory-list-2.3-medium.txt
RobotsDisallowed/top10000.txt
/usr/share/wordlists/dirb/common.txt
/usr/share/wordlists/dirb/big.txt
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
ブルートフォースやスパイダリング中に新しいディレクトリが見つかった場合は、ブルートフォースする必要があります。
各ファイルでチェックすべきこと
リンク切れチェッカー: HTML内のリンク切れを見つけ、乗っ取りの可能性があるものを見つけます。
ファイルのバックアップ: すべての実行可能ファイルのバックアップを見つけたら、バックアップを探します(".php"、".aspx"など)。バックアップの一般的なバリエーションは次のとおりです: file.ext~, #file.ext#, ~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp, file.old. bfac または backup-genを使用することもできます。
新しいパラメータの発見: Arjun、parameth、x8 およびParam Miner などのツールを使用して、隠されたパラメータを発見できます。可能であれば、各実行可能なWebファイルで隠されたパラメータを検索してみてください。
Arjunのすべてのデフォルトワードリスト: https://github.com/s0md3v/Arjun/tree/master/arjun/db
Param-minerの“params” : https://github.com/PortSwigger/param-miner/blob/master/resources/params
Assetnoteの“parameters_top_1m”: https://wordlists.assetnote.io/
nullenc0deの“params.txt”: https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773
コメント: すべてのファイルのコメントをチェックし、資格情報や隠された機能を見つけることができます。
CTFをしている場合、ページの右側に情報を隠すために(ブラウザでソースコードを開いてもデータが見えないように)数百のスペースを使用するなど、ページのコメントに情報を隠すという“一般的”なトリックがあります。他の可能性としては、いくつかの新しい行を使用して、Webページの底にコメントで情報を隠すことがあります。
APIキー: APIキーを見つけた場合、異なるプラットフォームのAPIキーの使用方法を示すガイドがあります: keyhacks、zile、truffleHog、SecretFinder、RegHex、DumpsterDive、EarlyBird
Google APIキー: AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjikのようなAPIキーを見つけた場合、プロジェクトgmapapiscannerを使用して、そのキーがアクセスできるAPIを確認できます。
S3バケット: スパイダリング中に、いくつかのサブドメインやリンクがS3バケットに関連しているかどうかを確認してください。その場合は、バケットの権限を確認してください。
特別な発見
スパイダリングとブルートフォースを実行する際に、注意すべき 興味深い 事柄が見つかる可能性があります。
興味深いファイル
CSSファイル内の他のファイルへのリンクを探します。
_.git_ファイルを見つけた場合、いくつかの情報を抽出できます。
_.env_を見つけた場合、APIキー、DBパスワードなどの情報が見つかる可能性があります。
APIエンドポイントを見つけた場合、テストする必要があります。これらはファイルではありませんが、おそらくそれらに「似ている」でしょう。
JSファイル: スパイダリングセクションでは、JSファイルからパスを抽出するいくつかのツールが言及されています。また、コードに潜在的な脆弱性が導入された可能性がある場合、見つかった各JSファイルを監視することが興味深いでしょう。たとえば、JSMonを使用できます。
Javascript Deobfuscator and Unpacker: https://lelinhtinh.github.io/de4js/, https://www.dcode.fr/javascript-unobfuscator
Javascript Beautifier: http://jsbeautifier.org/, http://jsnice.org/
JsFuck deobfuscation(文字列"[]!+"を使用したJavaScript)https://ooze.ninja/javascript/poisonjs/
TrainFuck:
+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
いくつかの場合、使用される正規表現を理解する必要があります。これが役立ちます: https://regex101.com/
フォームが検出されたファイルも監視する必要があります。パラメータの変更や新しいフォームの出現は、潜在的な新しい脆弱な機能を示す可能性があります。
403 Forbidden/Basic Authentication/401 Unauthorized (bypass)
page403 & 401 Bypasses502 Proxy Error
そのコードで応答するページがある場合、おそらく構成が誤ったプロキシです。GET https://google.com HTTP/1.1
(ホストヘッダーと他の一般的なヘッダーを含む)のようなHTTPリクエストを送信すると、プロキシが_google.com_にアクセスしようとし、SSRFを見つけることができます。
NTLM認証 - 情報漏洩
認証を求める実行中のサーバーがWindowsであるか、資格情報を要求するログインが見つかった場合(およびドメイン名を要求する場合)、情報漏洩を引き起こすことができます。
“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
というヘッダーを送信すると、NTLM認証の動作方法により、サーバーはヘッダー"WWW-Authenticate"内に内部情報(IISバージョン、Windowsバージョンなど)を返します。
これは_nmapプラグイン_ "http-ntlm-info.nse"を使用して自動化できます。
HTTPリダイレクト(CTF)
リダイレクト内にコンテンツを配置することができます。このコンテンツはユーザーには表示されません(ブラウザがリダイレクトを実行するため)、しかし何かが隠されている可能性があります。
Web脆弱性のチェック
Webアプリケーションの包括的な列挙が実行されたので、さまざまな脆弱性をチェックする時が来ました。チェックリストはこちらで見つけることができます:
pageWeb Vulnerabilities MethodologyWeb脆弱性に関する詳細情報はこちらで確認できます:
変更を監視するページ
https://github.com/dgtlmoon/changedetection.ioなどのツールを使用して、脆弱性を挿入する可能性のある変更を監視できます。
ハッキングキャリアに興味がある方や、解読不能なものを解読することに興味がある方 - 採用中です! (流暢なポーランド語の読み書きが必要です).
HackTricks Automatic Commands
Last updated