80,443 - Pentesting Web Methodology
If you are interested in hacking career and hack the unhackable - we are hiring! (流暢なポーランド語の読み書きが必要).
Basic Info
ウェブサービスは最も一般的で広範なサービスであり、多くの異なる種類の脆弱性が存在します。
デフォルトポート: 80 (HTTP), 443(HTTPS)
Web API Guidance
Web API PentestingMethodology summary
この方法論では、あなたが攻撃するドメイン(またはサブドメイン)だけを想定します。したがって、発見された各ドメイン、サブドメイン、または範囲内の不明なウェブサーバーを持つIPにこの方法論を適用する必要があります。
Server Version (Vulnerable?)
Identify
実行中のサーバーバージョンに既知の脆弱性があるか確認します。 HTTPレスポンスのヘッダーとクッキーは、使用されている技術やバージョンを特定するのに非常に役立ちます。Nmapスキャンはサーバーバージョンを特定できますが、ツールwhatweb、 webtech またはhttps://builtwith.com/**も役立ちます:
Search for ウェブアプリケーションの バージョンの脆弱性
WAFがあるか確認する
ウェブ技術のトリック
異なるよく知られた技術で脆弱性を見つけるためのいくつかのトリック:
同じドメインが異なるポート、フォルダ、およびサブドメインで異なる技術を使用している可能性があることに注意してください。 ウェブアプリケーションが前述の技術/プラットフォームやその他の技術を使用している場合は、インターネットで新しいトリックを検索することを忘れないでください(そして教えてください!)。
ソースコードレビュー
アプリケーションのソースコードがgithubで利用可能な場合、アプリケーションのホワイトボックステストを自分で実施することに加えて、現在のブラックボックステストに役立つ情報がいくつかあります:
変更履歴やReadmeやバージョンファイル、またはバージョン情報にアクセス可能なものはありますか?
認証情報はどのように、どこに保存されていますか? 認証情報(ユーザー名やパスワード)が含まれる(アクセス可能な?)ファイルはありますか?
パスワードはプレーンテキスト、暗号化されていますか、それともどのハッシュアルゴリズムが使用されていますか?
何かを暗号化するためにマスターキーを使用していますか? どのアルゴリズムが使用されていますか?
いくつかの脆弱性を悪用してこれらのファイルにアクセスできますか?
githubに興味深い情報(解決済みおよび未解決の)問題はありますか? またはコミット履歴に(古いコミット内に入力されたパスワードなど)?
自動スキャナー
一般目的の自動スキャナー
CMSスキャナー
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動詞を試す
ファイルをアップロードできるか確認する(PUT動詞、WebDav)
WebDavが有効であるが、ルートフォルダーにファイルをアップロードするための十分な権限がない場合は、次のことを試みてください:
ブルートフォースで認証情報を取得する
ウェブページ内の見つかったフォルダーにWebDavを介してファイルをアップロードする。他のフォルダーにファイルをアップロードする権限があるかもしれません。
SSL/TLSの脆弱性
アプリケーションが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: 機能が重複している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
ブルートフォースやスパイダーリング中に新しいディレクトリが発見された場合は、必ずブルートフォースを行う必要があります。
見つかった各ファイルで確認すべきこと
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://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 (バイパス)
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のようなツールを使用して、脆弱性を挿入する可能性のある変更を監視できます。
ハッキングキャリアに興味があり、ハッキング不可能なものをハッキングしたい場合 - 私たちは採用しています! (流暢なポーランド語の読み書きが必要です)。
HackTricks自動コマンド
Last updated