Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
bypass-url-parser — 生のcurlリクエストを使用して、40X保護ページに対して数百のURLバイパス手法をテストし、マルチモードスキャン、ヘッダースプーフィング、およびアクセス制御評価のためのJSON/HTML結果エクスポートを備えています。 | Kitploit
ツール/GitHubGitHub/laluka/bypass-url-parser
脆弱性分析情報収集WAFバイパスウェブセキュリティペネトレーションテスト
GitHublaluka/bypass-url-parser

bypass-url-parser

生のcurlリクエストを使用して、40X保護ページに対して数百のURLバイパス手法をテストし、マルチモードスキャン、ヘッダースプーフィング、およびアクセス制御評価のためのJSON/HTML結果エクスポートを備えています。

リポジトリを見る
1.1k1221年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

Bypass Url Parser

PyPI - Version PyPI - Python Version PyPI - License pdm-managed

多くの MANY urlバイパスをテストして、40X protected page に到達するツール。

なぜこのコードが単なる汚いcurlラッパーなのか疑問に思うなら、その理由は次のとおりです。

  • ほとんどのpython requestsは、url/path/parameterのエンコード/デコードを行い、私はこれが嫌いです。
  • 生の文字を送信するなら、生の文字を送信したい。
  • 奇妙なパスを送信するなら、奇妙なままであってほしい。正規化されてはならない。

これは、パース、SSL/TLSカプセル化などのライブラリの便利機能すべてを失わずにpythonで実現するのは、驚くほど難しい。
だから、私のように、curl をバックエンドとして 使ってください。問題ありません。

また、このツールはライブラリとしても使用できます。lib_sample_usage.py を参照してください。

インストール

このツールのインストールにはpipxの使用をお勧めします。```bash pipx install bypass-url-parser

or for the latest dev version

pipx install git+https://github.com/laluka/bypass-url-parser

root@kitploit:~
代わりに、`pip`を使用することもできます:```bash
pip install bypass-url-parser

使い方```

Bypass Url Parser, made with love by @TheLaluka A tool that tests MANY url bypasses to reach a 40X protected page.

Usage: bypass-url-parser (-u | -R ) [-m ] [-o ] [-S ] [ (-H

)...] [-r ] [-s ] [--spoofip-replace] [-p ] [--spoofport-replace] [-t ] [-T ] [--request-tls] [--jsonl] [--dump-payloads] [-x <proxy_url>] [-v | -d | -dd]

Program options: -u, --url URL (path is optional) to run bypasses against -R, --request Load HTTP raw request from a file -H, --header

Header(s) to use, format: "Cookie: can_i_haz=fire" -m, --mode Bypass modes. See 'Bypasser.BYPASS_MODES' in code [Default: all] -o, --outdir Output directory for results -x, --proxy <proxy_url> Set a proxy in the format http://proxy_ip:port. -S, --save-level Save results level. From 0 (DISABLE) to 3 (FULL) [Default: 2] -s, --spoofip IP(s) to inject in ip-specific headers -p, --spoofport Port(s) to inject in port-specific headers -r, --retry Retry attempts of failed requests. Set 0 to disable all retry tentatives [Default: 1] -t, --threads Scan with N parallel threads [Default: 1] -T, --timeout Request times out after N seconds [Default: 5]

General options: -h, --help Show help, you are here :) -v, --verbose Verbose output -d, --debug Show more details like curl commands generated by this tool -dd, --debug Print Debug level 2 (with all classes debug_class output) -V, --version Show version info

Misc options: --spoofip-replace Disable list of default internal IPs in 'http_headers_ip' bypass mode --spoofport-replace Disable list of default internal ports in 'http_headers_port' bypass mode --request-tls Force usage of TLS/HTTPS for the request load with the '-R, --request' option --dump-payloads Print all payloads (curls) generated by this tool. --jsonl Print results in JSON lines format (pipe command output)

Examples: bypass-url-parser -u "http://127.0.0.1/juicy_403_endpoint/" -s 8.8.8.8 -d bypass-url-parser -u /path/urls -t 30 -T 5 -H "Cookie: me_iz=admin" -H "User-agent: test" bypass-url-parser -R /path/request_file --request-tls -m "mid_paths, end_paths"

root@kitploit:~
## 期待される結果```bash
bypass-url-parser -u http://127.0.0.1:8000/foo/bar
2022-08-09 14:52:40 lalu-perso bup[361559] WARNING Trying to bypass 'http://127.0.0.1:8000/foo/bar' url (3213 payloads)...
2022-08-09 14:52:40 lalu-perso bup[361559] INFO Doing: 50 / 3213
[...]
2022-08-09 14:52:54 lalu-perso bup[361559] INFO Doing: 3200 / 3213
2022-08-09 14:52:54 lalu-perso bup[361559] INFO Retry (1/3) the '16' failed curl commands with 10 threads and 10s timeout
2022-08-09 14:52:54 lalu-perso bup[361559] INFO Retry (2/3) the '16' failed curl commands with 5 threads and 20s timeout
2022-08-09 14:52:54 lalu-perso bup[361559] INFO Retry (3/3) the '16' failed curl commands with 1 threads and 30s timeout
2022-08-09 14:52:55 lalu-perso bup[361559] INFO
[#####] [bypass_method] [payload] => [status_code] [content_type] [content_length] [lines_count] [word_counts] [title] [server] [redirect_url]
[GROUP (1587)] [original_request] [http://127.0.0.1:8000/foo/bar] => [404] [text/html] [469] [14] [95] [Error response] [SimpleHTTP/0.6 Python/3.8.10] []
[GROUP (10)] [http_methods] [-X CONNECT http://127.0.0.1:8000/foo/bar] => [501] [text/html] [500] [14] [96] [Error response] [SimpleHTTP/0.6 Python/3.8.10] []
[SINGLE] [mid_paths] [http://127.0.0.1:8000/???foo/bar] => [200] [text/html] [913] [26] [27] [Directory listing for /???foo/bar] [SimpleHTTP/0.6 Python/3.8.10] []
[SINGLE] [mid_paths] [http://127.0.0.1:8000//???foo/bar] => [301] [] [] [0] [0] [] [SimpleHTTP/0.6 Python/3.8.10] [/???foo/bar]
[SINGLE] [mid_paths] [http://127.0.0.1:8000/??foo/bar] => [200] [text/html] [911] [26] [27] [Directory listing for /??foo/bar] [SimpleHTTP/0.6 Python/3.8.10] []
[SINGLE] [mid_paths] [http://127.0.0.1:8000//??foo/bar] => [301] [] [] [0] [0] [] [SimpleHTTP/0.6 Python/3.8.10] [/??foo/bar]
[SINGLE] [mid_paths] [http://127.0.0.1:8000/?foo/bar] => [200] [text/html] [909] [26] [27] [Directory listing for /?foo/bar] [SimpleHTTP/0.6 Python/3.8.10] []
[SINGLE] [mid_paths] [http://127.0.0.1:8000//?foo/bar] => [301] [] [] [0] [0] [] [SimpleHTTP/0.6 Python/3.8.10] [/?foo/bar]
[SINGLE] [mid_paths] [http://127.0.0.1:8000///?anythingfoo/bar] => [200] [text/html] [929] [26] [27] [Directory listing for ///?anythingfoo/bar] [SimpleHTTP/0.6 Python/3.8.10] []
[SINGLE] [mid_paths] [http://127.0.0.1:8000////?anythingfoo/bar] => [200] [text/html] [931] [26] [27] [Directory listing for ////?anythingfoo/bar] [SimpleHTTP/0.6 Python/3.8.10] []
[GROUP (2)] [mid_paths] [http://127.0.0.1:8000/#?foo/bar] => [200] [text/html] [893] [26] [27] [Directory listing for /] [SimpleHTTP/0.6 Python/3.8.10] []
[GROUP (2)] [mid_paths] [http://127.0.0.1:8000//#?foo/bar] => [301] [] [] [0] [0] [] [SimpleHTTP/0.6 Python/3.8.10] [/]

セットアップ

LINUX```bash

Deps

sudo apt install -y bat curl virtualenv python3

Tool

virtualenv -p python3 .py3 source .py3/bin/activate PDM_BUILD_SCM_VERSION="$(git describe --abbrev=0)-dev" pip install .

If bup installed globally, use

python src/bypass_url_parser/init.py -u https://thinkloveshare.com/juicy_403_endpoint/

Else this should work

bypass-url-parser -u https://thinkloveshare.com/juicy_403_endpoint/ cat /tmp/tmpRANDOM-bypass-url-parser/triaged-bypass.json | jq -r '.results[].request_curl_cmd' cat /tmp/tmpRANDOM-bypass-url-parser/triaged-bypass.json | jq -r '.results[].response_data'

root@kitploit:~
### DOCKER```bash
docker run --rm -it -v "$PWD:/host" -w /host ghcr.io/laluka/bypass-url-parser:latest bash -il
# Then bup -h, keep the docker open as the output is saved by default in /tmp
# Or specify the output to the current directory, and consult them later! :)

サポートされている引数の詳細

引数の解析

Bypass_url_parser では、いくつかの引数をさまざまな方法で定義できます:

  • -m, --mode、-s, --spoofip、-p, --spoofport 引数は、ファイル名、文字列、カンマ区切りの文字列リスト、またはリスト(Bypasser をライブラリとして使用する場合)にすることができます;
  • -u, --url 引数は、ファイル名、文字列、またはリスト(Bypasser をライブラリとして使用する場合)にすることができます;
  • stdin(- を使用)は、これらすべての引数でサポートされています。

たとえば、複数のターゲットURL(-u, --url)を定義する場合、以下のすべてのコマンドは同じ結果を生成します:```bash bypass-url-parser -u http://thinkloveshare.com/test bypass-url-parser -u /path/urls cat /path/urls | bypass-url-parser -u - echo 'http://thinkloveshare.com/test' | bypass-url-parser -u -

root@kitploit:~
### ターゲット定義

ツールを動作させるにはターゲットを定義する必要があります。2つのオプションがあります:

- `-u, --url`: URL(複数可)、GETメソッドで
- `-R, --request`: リクエストファイル。プロトコルはファイルから推測できないため、デフォルトでは`http`、または`--request-tls`オプションが指定されている場合は`https`になります。

### バイパスモード

`-m, --mode`が指定されている場合、特定のテスト(または複数のテスト)を実行するための希望するバイパスモードを選択でき、ツールが送信するリクエスト数を減らすことができます。

現在、以下のバイパスモードがサポートされています:```
all, mid_paths, end_paths, case_substitution, char_encode, http_methods, http_versions, http_headers_method, http_headers_scheme, http_headers_ip, http_headers_port, http_headers_url, user_agent

例:```bash bypass-url-parser -u /path/urls -m "case_substitution, char_encode, http_headers_scheme"

root@kitploit:~
### Spoofip / Spoofport

バイパス試行で使用するIPアドレスとポートをカスタマイズするために、ツールは以下のオプションをサポートしています:

- `-s, --spoofip` を使用すると、`ip-specific` ヘッダー(`X-Forwarded-For`、`X-Real-Ip` など)に注入するIPを設定できます。
- `-p, --spoofport` を使用すると、`port-specific` ヘッダー(`X-Forwarded-Port`)に注入するポートを設定できます。

デフォルトでは、これらのカスタムエントリは内部のIP/ポートリストに追加されます。自分のIP/ポートのみを使用したい場合は、`--spoofip-replace` や `--spoofport-replace` 引数を使用できます。

例:```bash
bypass-url-parser -u /path/urls -s /path/custom_ip --spoofip-replace
bypass-url-parser -u /path/urls -p "3000, 9443, 10443"

JSON-Lines 出力とコマンドパイピング

--jsonl オプションを使用すると、結果を stdout に JSON-Lines 形式で出力できます。標準ツールの出力と結果は stderr 上のロガーで表示されるため、JSON-Line 出力形式を他のツールでパイプ処理することが可能です:```bash bypass-url-parser -u "https://thinkloveshare.com/juicy_403_endpoint/" -t 20 -S 0 -m case_substitution,char_encode --jsonl | jq

root@kitploit:~
***Notes:** `-S 2` または `-S 3` を使用する場合、JSON-Lines 出力には保存された HTML ファイルのパスと名前も含まれます。*

### 結果の保存

デフォルトでは、ターゲット URL が単一の場合、ツールは結果のコピーを `/tmp/tmpXXX-bypass-url-parser/` ディレクトリに保存します。

***Notes:** 複数のターゲット URL が `-u` に渡された場合、結果には URL がディレクトリ名として接頭辞が付けられます (`/tmp/tmpXXX-bypass-url-parser/http-target-com-8080-api-users/`)。*

この動作をカスタマイズするための引数が 2 つあります:

- `-o, --outdir`: カスタム出力ディレクトリを設定
- `-S, --save-level`: 保存レベルを選択

保存レベルは次の通りです:

- `0` (NONE): 出力の保存と出力ディレクトリの作成を無効化;
- `1` (MINIMAL): 結果を含むプログラムログファイル `triaged-bypass.log` のみ保存;
- `2` (PERTINENT): プログラムログファイル `triaged-bypass.log` と **関連する(結果)** curl レスポンスを `triaged-bypass.json` ファイル及び個別の HTML ファイルとして保存 (デフォルト);
- `3` (FULL): プログラムログファイル `triaged-bypass.log` と **すべての** curl レスポンスを `triaged-bypass.json` ファイル及び個別の HTML ファイルとして保存。

#### 例```bash
bypass-url-parser -S 0
bypass-url-parser -S 1 -o /tmp/bypass-res
bypass-url-parser -S 2 -o /tmp/bypass-res2 -H "User-Agent: curl 7.74.0" -u http://thinkloveshare.com/juicy_403_endpoint/
tree /tmp/bypass-res2/
├── bypass-2469eecf6c38b5817d2248e911ad4382.html
├── bypass-6f7cce7caf0a0a4b440859fa189d496d.html
├── bypass-80f4ab5d32b4e74c20630c7e67f2e42f.html
├── bypass-93079abffe63d34f79ac4a511cd6b5e6.html
├── bypass-945822230d58d1ad4680d5dfbc470ecb.html
├── bypass-e6118c315eea0e5b2ebc4fcafe0559c0.html
├── triaged-bypass.json
└── triaged-bypass.log

0 directories, 8 files

Results export

MINIMAL レベルから開始すると、プログラムによって表示された結果は triaged-bypass.log ファイルに保存されます。

JSON export

PERTINENT および FULL の保存レベルでは、プログラムはすべての結果を triaged-bypass.json ファイルに追加でエクスポートします。```json { "url": "http://thinkloveshare.com/juicy_403_endpoint/", "bypass_modes": "all", "results": [ { "request_curl_cmd": "/usr/bin/curl -sS -kgi -H 'User-Agent: curl 7.74.0' --path-as-is -H 'X-BlueCoat-Via: localhos[...SNIP...]", "request_curl_payload": "-H X-BlueCoat-Via: localhost http://thinkloveshare.com/juicy_403_endpoint/", "response_headers": "HTTP/1.1 301 Moved Permanently\nConnection: keep-alive\nContent-Length: 162\nServer: GitHub.c[...SNIP...]", "response_data": "\n301 Moved Permanently\n\n

301 Moved Permane[...SNIP...]", "response_status_code": 301, "response_content_type": "text/html", "response_content_length": 162, "response_lines_count": 7, "response_words_count": 4, "response_title": "301 Moved Permanently", "response_server_type": "GitHub.com", "response_redirect_url": "", "response_html_filename": "bypass-e6118c315eea0e5b2ebc4fcafe0559c0.html" }, { "request_curl_cmd": "/usr/bin/curl -sS -kgi -H 'User-Agent: curl 7.74.0' --path-as-is -X PROPFIND http://thinklove[...SNIP...]", "request_curl_payload": "-X PROPFIND ", "response_headers": "HTTP/1.1 405 Method Not Allowed\nConnection: close\nContent-Length: 131\nServer: Varnish\nRet[...SNIP...]", "response_data": "\n405 Not Allowed\n<body bgcolor="white">\n\nYour browser sent an invalid request.\n\n", "response_status_code": 400, "response_content_type": "text/html", "response_content_length": 90, "response_lines_count": 3, "response_words_count": 7, "response_title": "", "response_server_type": "", "response_redirect_url": "", "response_html_filename": "bypass-2469eecf6c38b5817d2248e911ad4382.html" } ] } 19 │ Your browser sent an invalid request. 20 │ ───────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ───────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ File: /tmp/bypass-res2/bypass-6f7cce7caf0a0a4b440859fa189d496d.html ───────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1 │ /usr/bin/curl -sS -kgi -H 'User-Agent: curl 7.74.0' --path-as-is -X CONNECT 2 │ 3 │ HTTP/1.1 400 Bad Request 4 │ Connection: close 5 │ Content-Length: 15 6 │ content-type: text/plain; charset=utf-8 7 │ x-served-by: cache-par-lfpg1960083 8 │ 9 │ invalid request ───────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ───────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ File: /tmp/bypass-res2/bypass-80f4ab5d32b4e74c20630c7e67f2e42f.html ───────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1 │ /usr/bin/curl -sS -kgi -H 'User-Agent: curl 7.74.0' --path-as-is 2 │ 3 │ HTTP/1.1 400 Bad Request 4 │ Connection: keep-alive 5 │ Content-Length: 9121 6 │ Server: GitHub.com 7 │ Content-Type: text/html; charset=utf-8 8 │ ETag: "64417b9f-23a1" 9 │ Content-Security-Policy: default-src 'none'; style-src 'unsafe-inline'; img-src data:; connect-src 'self' 10 │ X-GitHub-Request-Id: 598E:F13E:26EE27D:284F5D2:64486731 11 │ Accept-Ranges: bytes 12 │ Date: Tue, 25 Apr 2023 23:50:11 GMT 13 │ Via: 1.1 varnish 14 │ X-Served-By: cache-par-lfpg1960046-PAR 15 │ X-Cache: MISS 16 │ X-Cache-Hits: 0 17 │ X-Timer: S1682466611.396077,VS0,VE101 18 │ Vary: Accept-Encoding 19 │ X-Fastly-Request-ID: 30bd6af5892c40da130ee49bbeacd147a1a6b3c3 20 │ 21 │ 22 │ 23 │ 24 │ 25 │ 26 │ Bad request · GitHub Pages 27 │ [...SNIP...]

ツールをダウンロード
https://thinkloveshare.com/juicy_403_endpoint/
http://thinkloveshare.com/juicy_403_endpoint/

405 N[...SNIP...]", "response_status_code": 405, "response_content_type": "", "response_content_length": 131, "response_lines_count": 5, "response_words_count": 5, "response_title": "405 Not Allowed", "response_server_type": "Varnish", "response_redirect_url": "", "response_html_filename": "bypass-945822230d58d1ad4680d5dfbc470ecb.html" }, { "...": "[...SNIP...]"}, { "request_curl_cmd": "/usr/bin/curl -sS -kgi -H 'User-Agent: curl 7.74.0' --path-as-is 'http://thinkloveshare.com/j[...SNIP...]", "request_curl_payload": "http://thinkloveshare.com/juicy_403_endpoint/\u00b0//", "response_headers": "HTTP/1.1 400 Bad request\nConnection: keep-alive\nContent-Length: 90\nCache-Control: no-cache[...SNIP...]", "response_data": "

400 Bad request

root@kitploit:~
それらを扱いやすくするために `jq`:```bash
$ jq -r '.results[] | [.request_curl_payload, .response_status_code, .response_content_type, .response_content_length] | join("|")' /tmp/bypass-res2/triaged-bypass.json

-H X-BlueCoat-Via: localhost http://thinkloveshare.com/juicy_403_endpoint/|301|text/html|162
-X PROPFIND http://thinkloveshare.com/juicy_403_endpoint/|405||131
http://thinkloveshare.com/%3b%2f%2e%2e%2f%2e%2e%2f%2fjuicy_403_endpoint/|400|text/html|9121
-H Host: 8.8.8.8 http://thinkloveshare.com/juicy_403_endpoint/|404|text/html|9115
-X CONNECT http://thinkloveshare.com/juicy_403_endpoint/|400|text/plain|15
http://thinkloveshare.com/juicy_403_endpoint/°//|400|text/html|90

HTMLファイル

PERTINENT および FULL 保存レベルでは、curl コマンドと完全な HTTP 応答も疑似 .html ファイルに保存されます:```bash $ echo /tmp/bypass-res2/*.html | xargs batcat ───────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ File: /tmp/bypass-res2/bypass-2469eecf6c38b5817d2248e911ad4382.html ───────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1 │ /usr/bin/curl -sS -kgi -H 'User-Agent: curl 7.74.0' --path-as-is 'http://thinkloveshare.com/juicy_403_endpoint/°//' 2 │ 3 │ HTTP/1.1 400 Bad request 4 │ Connection: keep-alive 5 │ Content-Length: 90 6 │ Cache-Control: no-cache 7 │ Content-Type: text/html 8 │ Accept-Ranges: bytes 9 │ Date: Tue, 25 Apr 2023 23:51:38 GMT 10 │ Via: 1.1 varnish 11 │ X-Served-By: cache-par-lfpg1960025-PAR 12 │ X-Cache: MISS 13 │ X-Cache-Hits: 0 14 │ X-Timer: S1682466698.230664,VS0,VE10 15 │ Vary: Accept-Encoding 16 │ X-Fastly-Request-ID: b6bbb82302420db4f101a316dca39cc283a4fd44 17 │ 18 │

400 Bad request

http://thinkloveshare.com/juicy_403_endpoint/
http://thinkloveshare.com/%3b%2f%2e%2e%2f%2e%2e%2f%2fjuicy_403_endpoint/
root@kitploit:~
## Contributors

- 初回リリース: [@TheLaluka](https://twitter.com/TheLaluka)
- 大規模なリファクタリングとライブラリモードの実装、[@jtop_fap](https://twitter.com/jtop_fap)に感謝
- `Docker` および `Pypi` ビルドのサポート、[@DugnyG](https://twitter.com/DugnyG)のご協力に感謝

## License

Copyright (C) 2022 Laluka

このプログラムは自由ソフトウェアです。あなたはこれを、Free Software Foundation によって公開された GNU Affero General Public License のバージョン3、または(あなたの選択により)それ以降のバージョンの条項に基づいて、再配布および/または改変することができます。

このプログラムは、有用であることを期待して配布されていますが、**いかなる保証もありません**。暗黙の商品性保証や特定目的への適合性の保証も含め、一切の保証はありません。詳細については GNU Affero General Public License をご覧ください。

あなたはこのプログラムと共に GNU Affero General Public License の写しを受け取っているはずです。受け取っていない場合は、<https://www.gnu.org/licenses/> をご覧ください。