.. | ||
buckets | ||
electron-desktop-apps | ||
php-tricks-esp | ||
tomcat | ||
xss-to-rce-electron-desktop-apps | ||
403-and-401-bypasses.md | ||
aem-adobe-experience-cloud.md | ||
angular.md | ||
apache.md | ||
artifactory-hacking-guide.md | ||
bolt-cms.md | ||
cgi.md | ||
code-review-tools.md | ||
dotnetnuke-dnn.md | ||
drupal.md | ||
flask.md | ||
git.md | ||
golang.md | ||
grafana.md | ||
graphql.md | ||
gwt-google-web-toolkit.md | ||
h2-java-sql-database.md | ||
iis-internet-information-services.md | ||
imagemagick-security.md | ||
jboss.md | ||
jira.md | ||
joomla.md | ||
jsp.md | ||
laravel.md | ||
moodle.md | ||
nginx.md | ||
nodejs-express.md | ||
put-method-webdav.md | ||
python.md | ||
README.md | ||
rocket-chat.md | ||
special-http-headers.md | ||
spring-actuators.md | ||
symphony.md | ||
tomcat.md | ||
uncovering-cloudflare.md | ||
vmware-esx-vcenter....md | ||
waf-bypass.md | ||
web-api-pentesting.md | ||
werkzeug.md | ||
wordpress.md |
80,443 - Web ペネトレーションテスト方法論
AWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksにあなたの会社を広告したい、またはHackTricksをPDFでダウンロードしたい場合は、サブスクリプションプランをチェックしてください!
- 公式PEASS & HackTricksグッズを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションをチェックする
- 💬 Discordグループやテレグラムグループに参加するか、Twitter 🐦 @carlospolopmをフォローする。
- HackTricksとHackTricks CloudのgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する。
![](/Mirrors/hacktricks/media/commit/d24d1f5a7c83f37063628cb777a7c95ac1edea23/.gitbook/assets/i3.png)
バグバウンティのヒント: Intigritiに登録する、ハッカーによって作られたプレミアムなバグバウンティプラットフォーム!今日https://go.intigriti.com/hacktricksに参加して、最大**$100,000**のバウンティを獲得し始めましょう!
{% embed url="https://go.intigriti.com/hacktricks" %}
基本情報
Webサービスは最も一般的で広範なサービスであり、多くの異なる種類の脆弱性が存在します。
デフォルトポート: 80 (HTTP), 443(HTTPS)
PORT STATE SERVICE
80/tcp open http
443/tcp open ssl/https
nc -v domain.com 80 # GET / HTTP/1.0
openssl s_client -connect domain.com:443 # GET / HTTP/1.0
Web API ガイダンス
{% content-ref url="web-api-pentesting.md" %} web-api-pentesting.md {% endcontent-ref %}
方法論の要約
この方法論では、ドメイン(またはサブドメイン)を攻撃することを想定しています。したがって、発見された各ドメイン、サブドメイン、または範囲内の特定されていないWebサーバーのIPにこの方法論を適用する必要があります。
- Webサーバーで使用されている技術を 特定することから始めます。テクノロジーを正確に特定できれば、テストの残りの部分で念頭に置くべきコツを探します。
- 技術のバージョンの既知の脆弱性はありますか?
- 何かよく知られた技術を使用していますか?より多くの情報を抽出するための役立つコツはありますか?
- 実行する特化したスキャナーはありますか(例えばwpscan)?
- 一般的な目的のスキャナーを起動します。何かを見つけるか、または興味深い情報を見つけるかもしれません。
- 初期チェックを始めます:robots、sitemap、404エラー、SSL/TLSスキャン(HTTPSの場合)。
- Webページのスパイダリングを開始します:使用されているすべての可能なファイル、フォルダー、およびパラメーターを見つける時が来ました。また、特別な発見もチェックします。
- ブルートフォースまたはスパイダリング中に新しいディレクトリが発見されるたびに、それをスパイダリングする必要があることに注意してください。
- ディレクトリブルートフォース:新しいファイルとディレクトリを探して、発見されたフォルダーをブルートフォースで試みます。
- ブルートフォースまたはスパイダリング中に新しいディレクトリが発見されるたびに、それをブルートフォースする必要があることに注意してください。
- バックアップのチェック:一般的なバックアップ拡張子を追加して、発見されたファイルのバックアップを見つけることができるかテストします。
- パラメーターのブルートフォース:隠されたパラメーターを見つけようとします。
- ユーザー入力を受け入れるすべての可能なエンドポイントを特定したら、それに関連するあらゆる種類の脆弱性をチェックします。
- このチェックリストに従ってください
サーバーバージョン(脆弱?)
特定
実行中のサーバーバージョンに対する既知の脆弱性があるかどうかを確認します。
HTTPヘッダーとレスポンスのクッキーは、使用されている技術および/またはバージョンを特定するのに非常に役立つ可能性があります。Nmapスキャンはサーバーバージョンを特定できますが、ツールwhatweb、 webtech、またはhttps://builtwith.com/も役立つかもしれません。
whatweb -a 1 <URL> #Stealthy
whatweb -a 3 <URL> #Aggresive
webtech -u <URL>
webanalyze -host https://google.com -crawl 2
ウェブアプリケーションのバージョンの脆弱性を検索する
WAFがあるかチェック
- https://github.com/EnableSecurity/wafw00f
- https://github.com/Ekultek/WhatWaf.git
- https://nmap.org/nsedoc/scripts/http-waf-detect.html
Web技術のコツ
使用されているさまざまな有名な技術で脆弱性を見つけるためのコツ:
- AEM - Adobe Experience Cloud
- Apache
- Artifactory
- Buckets
- CGI
- Drupal
- Flask
- Git
- Golang
- GraphQL
- H2 - Java SQLデータベース
- IISのコツ
- JBOSS
- Jenkins
- Jira
- Joomla
- JSP
- Laravel
- Moodle
- Nginx
- PHP (PHPには利用可能な多くの興味深いコツがあります)
- Python
- Spring Actuators
- Symphony
- Tomcat
- VMWare
- Web APIのペネトレーションテスト
- WebDav
- Werkzeug
- Wordpress
- Electron Desktop (XSSからRCEへ)
同じドメインが異なるポート、フォルダ、サブドメインで異なる技術を使用している可能性があることを考慮してください。
ウェブアプリケーションが上記のよく知られた技術/プラットフォームまたはその他の技術を使用している場合は、新しいコツをインターネットで検索することを忘れずに(そして私に知らせてください!)。
ソースコードレビュー
アプリケーションのソースコードがgithubで利用可能な場合、アプリケーションのホワイトボックステストを自分で実行することに加えて、現在のブラックボックステストに役立つ情報があります:
- ウェブ経由でアクセス可能なバージョン情報を含む変更ログやReadmeやバージョンファイルはありますか?
- 資格情報はどのように、どこに保存されていますか?資格情報(ユーザー名やパスワード)を含む(アクセス可能な?)ファイルはありますか?
- パスワードは平文、暗号化されている、またはどのハッシュアルゴリズムが使用されていますか?
- 何かを暗号化するためのマスターキーは使用されていますか?どのアルゴリズムが使用されていますか?
- 何らかの脆弱性を利用してこれらのファイルにアクセスできますか?
- githubに(解決済みおよび未解決の)問題で興味深い情報はありますか?またはコミット履歴に(古いコミット内に導入されたパスワードがあるかもしれません)?
{% content-ref url="code-review-tools.md" %} code-review-tools.md {% endcontent-ref %}
自動スキャナー
一般的な目的の自動スキャナー
nikto -h <URL>
whatweb -a 4 <URL>
wapiti -u <URL>
W3af
zaproxy #You can use an API
nuclei -ut && nuclei -target <URL>
# https://github.com/ignis-sec/puff (client side vulns fuzzer)
node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi2rVUN/?query=FUZZ"
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
cmsmap [-f W] -F -d <URL>
wpscan --force update -e --url <URL>
joomscan --ec -u <URL>
joomlavs.rb #https://github.com/rastating/joomlavs
ステップバイステップのWebアプリケーション発見
ここからはWebアプリケーションとの対話を開始します。
初期チェック
興味深い情報を含むデフォルトページ:
- /robots.txt
- /sitemap.xml
- /crossdomain.xml
- /clientaccesspolicy.xml
- /.well-known/
- メインページとサブページのコメントもチェックしてください。
エラーを強制する
Webサーバーは、奇妙なデータが送信されたときに予期しない動作をすることがあります。これにより脆弱性が開かれたり、機密情報が漏洩する可能性があります。
- /whatever_fake.php (.aspx,.html,.etc)のような偽のページにアクセスする
- クッキー値とパラメーター値に"[]", "]]", "[["を追加してエラーを生成する
- URLの最後に**
/~randomthing/%s
**と入力してエラーを生成する - PATCH、DEBUGのような異なるHTTP動詞を試すか、FAKEのような間違った動詞を試す
ファイルをアップロードできるかチェックする (PUT動詞、WebDav)
WebDavが有効であるが、ルートフォルダーにファイルをアップロードする十分な権限がない場合は、以下を試してください:
- ブルートフォースで認証情報を探る
- Webページ内の見つかったフォルダーの残りにWebDav経由でファイルをアップロードする。他のフォルダーにファイルをアップロードする権限があるかもしれません。
SSL/TLSの脆弱性
- アプリケーションがHTTPSの使用を強制していない場合、MitMに脆弱です
- アプリケーションが機密データ(パスワード)をHTTPを使用して送信している場合、それは高い脆弱性です。
testssl.shを使用して脆弱性をチェックし(バグ報奨金プログラムではこの種の脆弱性は受け入れられない可能性があります)、a2svで脆弱性を再チェックしてください。
./testssl.sh [--htmlfile] 10.10.10.10:443
#Use the --htmlfile to save the output inside an htmlfile also
# You can also use other tools, by testssl.sh at this momment is the best one (I think)
sslscan <host:port>
sslyze --regular <ip:port>
SSL/TLSの脆弱性に関する情報:
- https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/
- https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/
スパイダリング
ウェブ内でスパイダーを起動します。スパイダーの目的は、テストされたアプリケーションから可能な限り多くのパスを見つけることです。したがって、ウェブクローリングと外部ソースを使用して、可能な限り多くの有効なパスを見つける必要があります。
- gospider (go): HTMLスパイダー、JSファイル内のLinkFinderと外部ソース (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com)。
- hakrawler (go): HMLスパイダー、JSファイル用のLinkFiderと外部ソースとしてArchive.org。
- dirhunt (python): HTMLスパイダー、"juicy files"も示します。
- evine (go): インタラクティブCLI HTMLスパイダー。Archive.orgでの検索も可能。
- meg (go): このツールはスパイダーではありませんが、役立つ可能性があります。ホストのファイルとパスのファイルを指定するだけで、megは各ホストの各パスをフェッチし、レスポンスを保存します。
- urlgrab (go): JSレンダリング機能を備えたHTMLスパイダー。しかし、メンテナンスされていないようで、プリコンパイルされたバージョンは古く、現在のコードはコンパイルできません。
- gau (go): 外部プロバイダーを使用するHTMLスパイダー (wayback, otx, commoncrawl)。
- ParamSpider: このスクリプトはパラメータを持つURLを見つけ、リスト化します。
- galer (go): JSレンダリング機能を備えたHTMLスパイダー。
- LinkFinder (python): JSファイル内の新しいパスを検索できるJS美化機能を備えたHTMLスパイダー。JSScannerも見る価値があります。これはLinkFinderのラッパーです。
- goLinkFinder (go): HTMLソースと埋め込まれたjavascriptファイルの両方でエンドポイントを抽出します。バグハンター、レッドチーム、情報セキュリティの忍者に有用です。
- JSParser (python2.7): TornadoとJSBeautifierを使用してJavaScriptファイルから相対URLを解析するpython 2.7スクリプト。AJAXリクエストを簡単に発見するのに便利です。メンテナンスされていないようです。
- relative-url-extractor (ruby): ファイル(HTML)が与えられると、正規表現を使用して醜い(minify)ファイルから相対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: ParaForgeは、リクエストからパラメータとエンドポイントを抽出して、ファジングと列挙のためのカスタムワードリストを作成するためのシンプルなBurp Suite拡張機能です。
ディレクトリとファイルのブルートフォース
ルートフォルダーからブルートフォースを開始し、この方法で見つかったすべてのディレクトリとスパイダリングによって発見されたすべてのディレクトリをブルートフォースすることを確認してください(発見されたディレクトリの名前を使用したワードリストの先頭に追加して、再帰的にブルートフォースすることができます)。
ツール:
- 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で検出し、使用するワードリストを選択します。
推奨される辞書:
- https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt
- Dirsearchに含まれる辞書
- http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10
- Assetnote wordlists
- https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content
- raft-large-directories-lowercase.txt
- directory-list-2.3-medium.txt
- RobotsDisallowed/top10000.txt
- https://github.com/random-robbie/bruteforce-lists
- https://github.com/google/fuzzing/tree/master/dictionaries
- https://github.com/six2dez/OneListForAll
- https://github.com/random-robbie/bruteforce-lists
- /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](https://github.com/securing/DumpsterD
Protocol_Name: Web #Protocol Abbreviation if there is one.
Port_Number: 80,443 #Comma separated if there is more than one.
Protocol_Description: Web #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for Web
Note: |
https://book.hacktricks.xyz/pentesting/pentesting-web
Entry_2:
Name: Quick Web Scan
Description: Nikto and GoBuster
Command: nikto -host {Web_Proto}://{IP}:{Web_Port} &&&& gobuster dir -w {Small_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} && gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port}
Entry_3:
Name: Nikto
Description: Basic Site Info via Nikto
Command: nikto -host {Web_Proto}://{IP}:{Web_Port}
Entry_4:
Name: WhatWeb
Description: General purpose auto scanner
Command: whatweb -a 4 {IP}
Entry_5:
Name: Directory Brute Force Non-Recursive
Description: Non-Recursive Directory Brute Force
Command: gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port}
Entry_6:
Name: Directory Brute Force Recursive
Description: Recursive Directory Brute Force
Command: python3 {Tool_Dir}dirsearch/dirsearch.py -w {Small_Dirlist} -e php,exe,sh,py,html,pl -f -t 20 -u {Web_Proto}://{IP}:{Web_Port} -r 10
Entry_7:
Name: Directory Brute Force CGI
Description: Common Gateway Interface Brute Force
Command: gobuster dir -u {Web_Proto}://{IP}:{Web_Port}/ -w /usr/share/seclists/Discovery/Web-Content/CGIs.txt -s 200
Entry_8:
Name: Nmap Web Vuln Scan
Description: Tailored Nmap Scan for web Vulnerabilities
Command: nmap -vv --reason -Pn -sV -p {Web_Port} --script=`banner,(http* or ssl*) and not (brute or broadcast or dos or external or http-slowloris* or fuzzer)` {IP}
Entry_9:
Name: Drupal
Description: Drupal Enumeration Notes
Note: |
git clone https://github.com/immunIT/drupwn.git for low hanging fruit and git clone https://github.com/droope/droopescan.git for deeper enumeration
Entry_10:
Name: WordPress
Description: WordPress Enumeration with WPScan
Command: |
?What is the location of the wp-login.php? Example: /Yeet/cannon/wp-login.php
wpscan --url {Web_Proto}://{IP}{1} --enumerate ap,at,cb,dbe && wpscan --url {Web_Proto}://{IP}{1} --enumerate u,tt,t,vp --passwords {Big_Passwordlist} -e
Entry_11:
Name: WordPress Hydra Brute Force
Description: Need User (admin is default)
Command: hydra -l admin -P {Big_Passwordlist} {IP} -V http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location'
Entry_12:
Name: Ffuf Vhost
Description: Simple Scan with Ffuf for discovering additional vhosts
Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:FUZZ.{Domain_Name}" -c -mc all {Ffuf_Filters}
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">
**バグバウンティのヒント**: **Intigriti**に**登録**しましょう。ハッカーによって作られたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**の報酬を獲得し始めましょう!
{% embed url="https://go.intigriti.com/hacktricks" %}
<details>
<summary><strong>AWSハッキングをゼロからヒーローになるまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>で!</strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションです
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有**してください。
</details>