80,443 - Pentesting Web Methodology
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
あなたのウェブアプリ、ネットワーク、クラウドに対するハッカーの視点を得る
実際のビジネスに影響を与える重大で悪用可能な脆弱性を見つけて報告します。 20以上のカスタムツールを使用して攻撃面をマッピングし、特権を昇格させるセキュリティ問題を見つけ、自動化されたエクスプロイトを使用して重要な証拠を収集し、あなたの努力を説得力のある報告書に変えます。
ウェブサービスは最も一般的で広範なサービスであり、多くの異なるタイプの脆弱性が存在します。
デフォルトポート: 80 (HTTP), 443(HTTPS)
この方法論では、あなたが攻撃するドメイン(またはサブドメイン)を想定します。そして、それだけです。したがって、発見された各ドメイン、サブドメイン、または範囲内の不明なウェブサーバーを持つIPにこの方法論を適用する必要があります。
実行中のサーバーバージョンに既知の脆弱性があるか確認します。 HTTPレスポンスのヘッダーとクッキーは、使用されている技術やバージョンを特定するのに非常に役立ちます。Nmapスキャンはサーバーバージョンを特定できますが、ツールwhatweb、 webtech または https://builtwith.com/**も役立ちます:
Search for ウェブアプリケーションの バージョンの脆弱性
異なるよく知られた技術で脆弱性を見つけるためのトリック:
同じドメインが異なるポート、フォルダ、およびサブドメインで異なる技術を使用している可能性があることに注意してください。 ウェブアプリケーションが前述の技術/プラットフォームやその他の技術を使用している場合は、インターネットで新しいトリックを検索することを忘れないでください(そして教えてください!)。
アプリケーションのソースコードがgithubで利用可能な場合、アプリケーションのホワイトボックステストを自分で実施することに加えて、現在のブラックボックステストに役立つ情報がいくつかあります:
Change-logやReadmeやVersionファイル、またはバージョン情報にアクセス可能なものはありますか?
認証情報はどのように、どこに保存されていますか?認証情報(ユーザー名やパスワード)が含まれる(アクセス可能な?)ファイルはありますか?
パスワードはプレーンテキスト、暗号化されていますか、それともどのハッシュアルゴリズムが使用されていますか?
何かを暗号化するためにマスターキーを使用していますか?どのアルゴリズムが使用されていますか?
いくつかの脆弱性を悪用してこれらのファイルにアクセスできますか?
githubに興味深い情報(解決済みおよび未解決の)問題はありますか?またはコミット履歴に(古いコミット内に入力されたパスワードなど)?
CMSが使用されている場合は、スキャナーを実行することを忘れないでください。もしかしたら何か魅力的なものが見つかるかもしれません:
Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish CMSScan: WordPress, Drupal, Joomla, vBulletinのセキュリティ問題を検出します。(GUI) VulnX: Joomla, Wordpress, Drupal, PrestaShop, Opencart CMSMap: (W)ordpress, (J)oomla, (D)rupal または (M)oodle droopscan: Drupal, Joomla, Moodle, Silverstripe, Wordpress
この時点で、クライアントが使用しているウェブサーバーに関する情報(もしデータが提供されていれば)や、テスト中に留意すべきいくつかのトリックを持っているはずです。運が良ければ、CMSを見つけてスキャナーを実行したかもしれません。
この時点から、ウェブアプリケーションとのインタラクションを開始します。
興味深い情報を含むデフォルトページ:
/robots.txt
/sitemap.xml
/crossdomain.xml
/clientaccesspolicy.xml
/.well-known/
メインページおよびサブページのコメントも確認してください。
エラーの強制
ウェブサーバーは、奇妙なデータが送信されると予期しない動作をすることがあります。これにより、脆弱性や機密情報の開示が発生する可能性があります。
/whatever_fake.php(.aspx、.html、など)のような偽ページにアクセスする
クッキー値やパラメータ値に**"[]", "]]", および "[["**を追加してエラーを作成する
URLの最後に**/~randomthing/%s
**として入力を与えてエラーを生成する
PATCH、DEBUG、またはFAKEのような異なるHTTP動詞を試す
WebDavが有効であるが、ルートフォルダーにファイルをアップロードするための十分な権限がない場合は、次のことを試みてください:
ブルートフォースで資格情報を取得する
ウェブページ内の見つかったフォルダーにWebDavを介してファイルをアップロードする。他のフォルダーにファイルをアップロードする権限があるかもしれません。
アプリケーションがHTTPSの使用を強制していない場合、MitMに対して脆弱です。
アプリケーションがHTTPを使用して機密データ(パスワード)を送信している場合、これは高い脆弱性です。
testssl.shを使用して脆弱性をチェックし(バグバウンティプログラムではこの種の脆弱性は受け入れられない可能性があります)、a2svを使用して脆弱性を再確認してください:
情報についてのSSL/TLSの脆弱性:
ウェブ内で何らかのスパイダーを起動します。スパイダーの目的は、テストされたアプリケーションからできるだけ多くのパスを見つけることです。したがって、ウェブクロールと外部ソースを使用して、できるだけ多くの有効なパスを見つける必要があります。
gospider (go): HTMLスパイダー、JSファイル内のLinkFinderおよび外部ソース(Archive.org、CommonCrawl.org、VirusTotal.com、AlienVault.com)。
hakrawler (go): HMLスパイダー、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): HTMLスパイダー、JSファイル内の新しいパスを検索できるJSビューティファイ機能を持っています。LinkFinderのラッパーである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マシンからリンクを発見します(応答をダウンロードし、さらにリンクを探します)。
HTTPLoot (go): フォームを埋めることによるクローリングや、特定の正規表現を使用して機密情報を見つけます。
SpiderSuite: Spider Suiteは、サイバーセキュリティ専門家向けに設計された高度なマルチ機能GUIウェブセキュリティクローラー/スパイダーです。
jsluice (go): URL、パス、秘密、その他の興味深いデータをJavaScriptソースコードから抽出するためのGoパッケージおよびコマンドラインツールです。
ParaForge: ParaForgeは、リクエストからパラメータとエンドポイントを抽出してカスタムワードリストを作成するためのシンプルなBurp Suite拡張機能です。
katana (go): これに最適な素晴らしいツールです。
Crawley (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のリストを与えると「重複」URLを削除します。
Scavenger: 異なるページのburp履歴からディレクトリのリストを作成するためのBurp拡張機能。
TrashCompactor: JSインポートに基づいて重複機能を持つURLを削除します。
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
ブルートフォースやスパイダーリング中に新しいディレクトリが発見された場合は、必ずブルートフォースを行う必要があります。
Broken link checker: 乗っ取りの危険がある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 を使用して隠れたパラメータを発見できます。可能であれば、各実行可能ウェブファイルで隠れたパラメータを検索してみてください。
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をプレイしている場合、「一般的な」トリックは、ページの右側に情報を隠すことです(数百のスペースを使用して、ブラウザでソースコードを開いてもデータが見えないようにします)。もう一つの可能性は、いくつかの新しい行を使用して、ウェブページの下部にコメント内に情報を隠すことです。
APIキー: もしAPIキーを見つけた場合、さまざまなプラットフォームのAPIキーの使用方法を示すガイドがあります: keyhacks、 zile、 truffleHog、 SecretFinder、 RegHex、 DumpsterDive、 EarlyBird
Google APIキー: AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjikのようなAPIキーを見つけた場合、プロジェクトgmapapiscannerを使用して、キーがアクセスできるAPIを確認できます。
S3バケット: スパイダーリング中に、サブドメインやリンクがS3バケットに関連しているかどうかを確認します。その場合、バケットの権限を確認します。
スパイダーリングとブルートフォースを実行している間に、興味深い****ものを見つけることがあります。
興味深いファイル
CSSファイル内の他のファイルへのリンクを探します。
.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のデオブフスケーション (文字でのjavascript:"[]!+" https://enkhee-osiris.github.io/Decoder-JSFuck/)
TrainFuck: +72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
いくつかの場面で、使用されている正規表現を理解する必要があります。これは役立ちます: https://regex101.com/ または https://pythonium.net/regex
フォームが検出されたファイルを監視することもできます。パラメータの変更や新しいフォームの出現は、潜在的な新しい脆弱な機能を示す可能性があります。
403 Forbidden/Basic Authentication/401 Unauthorized (バイパス)
403 & 401 Bypasses502 Proxy Error
ページがそのコードで応答する場合、不適切に構成されたプロキシの可能性があります。GET https://google.com HTTP/1.1
のようなHTTPリクエストを送信すると(ホストヘッダーや他の一般的なヘッダーを含む)、プロキシは_google.com_にアクセスしようとし、SSRFを見つけることになります。
NTLM認証 - 情報漏洩
認証を要求しているサーバーがWindowsであるか、資格情報(およびドメイン名)を要求するログインを見つけた場合、情報漏洩を引き起こすことができます。
ヘッダーを送信します: “Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
そして、NTLM認証の動作により、サーバーは内部情報(IISバージョン、Windowsバージョン...)を「WWW-Authenticate」ヘッダー内で応答します。
このプロセスを自動化するには、nmapプラグイン"http-ntlm-info.nse"を使用できます。
HTTPリダイレクト (CTF)
リダイレクション内にコンテンツを挿入することが可能です。このコンテンツはユーザーに表示されません(ブラウザがリダイレクションを実行するため)が、そこに隠されたものがあるかもしれません。
ウェブアプリケーションの包括的な列挙が行われたので、多くの可能性のある脆弱性をチェックする時が来ました。チェックリストはここにあります:
Web Vulnerabilities Methodologyウェブ脆弱性に関する詳細情報は次のリンクで見つけることができます:
https://github.com/dgtlmoon/changedetection.ioのようなツールを使用して、脆弱性を挿入する可能性のある変更を監視できます。
あなたのウェブアプリ、ネットワーク、クラウドに対するハッカーの視点を得る
実際のビジネスに影響を与える重大で悪用可能な脆弱性を見つけて報告します。 20以上のカスタムツールを使用して攻撃面をマッピングし、特権をエスカレートさせるセキュリティ問題を見つけ、自動化されたエクスプロイトを使用して重要な証拠を収集し、あなたの努力を説得力のある報告に変えます。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)