乳尖春药H糙汉共妻,国产成人无码精品亚洲,少妇肉欲系列1000篇,免费永久看黄神器

公司新聞

面試經典 Redis未授權漏洞與組合拳

作者:admin 日期:2023-09-06 瀏覽:

面試經典 Redis未授權漏洞與組合拳

  Redis 全稱 Remote Dictionary Server(即遠程字典服務),它是一個基于內存(當然也可以把其存儲至硬盤上,這也是寫shell的必要條件之一)實現的鍵值型非關系(NoSQL)數據庫。Redis 免費開源,其最新穩定版本是 6.2.x(2022/11/10),版本更新參見常用版本包括。自 Redis 誕生以來,它以其超高的性能、完美的文檔和簡潔易懂的源碼廣受好評,國內外很多大型互聯網公司都在使用 Redis,比如騰訊、阿里、Twitter、Github 等等。

  一般的,redis.conf文件路徑

  Redis默認配置過程中無需設置密碼,可能造成空口令風險。這種情況下只要連接的Redis服務器的host和port正確,且攻擊機安裝redis客戶端就可以成功連接,存在類似風險的數據庫服務器還有。Redis安裝默認情況下,會綁定在,如果沒有限制來源IP并且沒有設置密碼(所以這也是兩種修復手段),就會導致攻擊者非法訪問,讀取Redis的數據,利用自身config命令進行寫入操作。Redis 是常見內網服務。其他的常見內網服務還有如 Structs2 和 Elastic。

  未授權 Redis 拿 shell 的 3 種方式

  nmap掃描端口發現redis服務無密碼未授權實現直接訪問,然后可以執行redis命令操作

  查看reids服務端信息利用條件

  Redis 未授權訪問漏洞

  服務器對外開啟了 ssh 服務

  Redis 服務器運行在 root 用戶下(否則還要猜測用戶用以修改authorized_keys的保存目錄)

  所以在實際滲透過程中,該服務器「端口掃描」結果至少要滿足:

  Redis 服務 open(默認 6379 端口)

  ssh 服務 open(默認 22 端口)[沒開 ssh 都是扯淡]具體步驟

  1. 生成一個 ssh-key:

  2. 防止其他數據干擾給公鑰加點換行:

  3. 把公鑰寫入到一個 key 里面,這個例子中是寫入了 may 這個 key。

  4. 設置 rdb 文件存放的路徑:

  5. 設置 rdb 文件的文件名

  6. 搞定保存。

  7. ssh嘗試登陸:

  這樣我們就獲得了一臺服務器的 shell。可以到此服務器上查看,發現目錄下已經有了 authorized_keys:

  cat /root/.ssh/authorized_keys

  一些心得現狀:

  首先此方式肯定是無法適用于 Windows 主機的。(判斷是 Windows 機器還是 Linux 機器可以通過下圖所示的命令根據路徑判斷,下圖為Linux下)另外隨著運維人員對此漏洞認識的深入,現在越來越少運維會直接以 root 起 Redis 的。這樣就無法直接往目錄下寫公鑰。當然寫入的目錄不限于下的,也可以寫入用戶目錄。那么要多一個猜用戶的步驟。相較之下,直接寫 webshell 和寫計劃任務這兩種方式用的更多。

  關于什么時候要flushall

  一般寫authorized-key時注意多寫兩個換行就行,這里我找了很多垃圾數據放在authorized-key文件里,依然能正常免密登錄,主要是在寫webshell時需要注意。redis在生產環境里面數據量經常是十分龐大的,save到php文件里會超過php的允許文件大小,導致無法解析,而且save也不支持僅寫入某個數據庫,而是只能保存整個redis的實例,所以select到某個空數據庫來寫入shell也是無法試驗的

  解決辦法

  直接flushall全刪掉即可。或者先備份再刪,之后再進行恢復。實戰就算碰見了也慎用,師傅們保命重要利用條件:

  知道網站根目錄絕對路徑(所以實際滲透過程中,這個方法通常需要搭配 phpinfo() 等信息使用。)

  無需是 root 起的 Redis

  可適用于 Windows(非 ssh 連接)

  一般無需 flushall 清空數據庫(一定情況下也需要)

  理解了落地ssh公鑰原理,利用redis寫webshell就十分簡單,主要還是四個步驟具體步驟:

  1. 設置保存路徑

  2. 修改保存文件名

  3. 將鍵值寫入文件

  4. 保存

  雖然寫入的是二進制文件,但是網頁端訪問依然能夠解析可能遇見的錯誤

  下面是一種典型的報錯,說明運行redis的用戶對網站根目錄沒用寫入權限,這里redis服務屬于redis用戶利用條件:

  通過寫 crontab 的方式 getshell 是一種很綠色的方式:

  無需 flushall 清空數據

  注意,這里并不是因為寫計劃任務本身無需 flushall,而是因為這樣的語法可以控制第一條記錄,就能保證你的內容始終保持在最前面。就是一個標準用法,因為百分號比的優先級更高。

  需要是 root 起的 Redis。

  歸根到底還是要 root 運行 redis,畢竟要寫到/var/spool/cron/crontabs/root下,主要優勢是適用一些 ssh 不能被直接訪問的場景。

  不適用于 Windows 服務器

  Windows 場景下沒有計劃任務,可以嘗試一下寫入啟動項。理論上可以嘗試寫文件到用戶啟動項,但是現實是 Windows 普通用戶沒有計劃任務權限。Windows 下 Redis 拿 shell,后面會單獨成文討論。具體步驟

  1. 計劃任務默認存儲路徑,設置寫 crontabs 的文件夾路徑

  2. 修改保存文件名

  3. 對寫入「反彈 shell」的計劃任務

  4. 保存

  5. 監聽公網機器指定端口,接收反彈回來的 shell

  未授權或弱密碼造成的可登入是必要條件,可公網訪問是充分條件。如果公網不能訪問,還可以通過 socks 隧道、SSRF 等方式內網漫游。

  前面說過,redis是基于內存的,當場景需要大量訪問Redis中的數據,服務端難免會難以承受。Redis就提供了主從模式,主從模式就是指使用一個redis實例作為主機,其他實例都作為備份機,其中主機和從機數據相同,而從機只負責讀,主機只負責寫,通過讀寫分離可以大幅度減輕流量的壓力,算是一種通過犧牲空間來換取效率的緩解方式。問題就出現在了數據同步這一步,主機如果有惡意數據的話從機也會不分黑白跟著同步。

  該漏洞的觸發條件依然是未授權或者弱口令連接

  利用redis-rogue-server工具

  該工具的原理就是首先創建一個惡意的Redis服務器作為Redis主機(master),該Redis主機能夠回應其他連接它的Redis從機的響應。有了惡意的Redis主機之后,就會遠程連接目標Redis服務器,通過slaveof命令將目標Redis服務器設置為我們惡意Redis的Redis從機(slaver)。然后將惡意Redis主機上的exp同步到Reids從機上,并將dbfilename設置為exp.so。最后再控制Redis從機(slaver)加載模塊執行系統命令即可。

  進行主從關系綁定的惡意代碼

  審過Exp之后我們可以發現,在寫入so文件時和另一個開源項目十分相似,兩個項目在這里都進行了類似模塊污染的操作。這里想起了之前做過的一道題目:[天翼杯 2021]easy_eval當時在做這道題目的時候,通過redis進行提權。當時思路是:

  造成redis沙盒逃逸漏洞的原因主要是由于redis lua,redis嵌入了lua編程語言作為其腳本引擎,可通過eval命令使用lua,lua引擎是沙盒化的,不能在運行redis的服務器上執行任意代碼。但在Debian以及ubuntu發行版上,由于打包問題,在lua沙箱中遺留了一個對象package,攻擊者可以利用這個對象package逃逸redis lua沙盒,在運行redis的服務器上執行任意命令。

  利用的前提依然是未授權或者弱口令連接,并且它只影響 Debian 系的 Linux 發行版系統(Debian、Ubuntu 等)上的 Redis 服務,其他系統上的 Redis 服務不受影響。

  2.2 <= redis < 5.0.13

  2.2 <= redis < 6.0.15

  2.2 <= redis < 6.2.5

  連接redis-server

  eval執行lua代碼

  1 . 開啟密碼驗證并設置高強度密碼,redis的查詢速度是非常快的,外部用戶一秒內可以嘗試多達150K個密碼;所以密碼要盡量長

  2 . 在redis.conf文件中綁定內網ip,最好是本地ip,并且禁止公網訪問

  3 . 在redis.conf文件中修改redis默認端口

  4 . 低權限運行redis服務(非root用戶)5 . 禁用高危命令,其實就是換個難猜的名字

  http://snowming.me/2021/08/

  https://www.leavesongs.com/PENETRATION/write-webshell-via-redis-server.html

  本文原作者:may1as

  轉載來自FreeBuf.COM

  電話咨詢

<abbr id="ehohq"><form id="ehohq"><small id="ehohq"></small></form></abbr>
  • <menu id="ehohq"><dl id="ehohq"></dl></menu>

    1. <bdo id="ehohq"><span id="ehohq"></span></bdo>
        主站蜘蛛池模板: 林西县| 炎陵县| 南木林县| 屏东市| 延边| 芦溪县| 亳州市| 苗栗市| 荆门市| 花莲市| 江山市| 衡南县| 金沙县| 裕民县| 凌海市| 依安县| 乐业县| 长顺县| 江油市| 揭西县| 平武县| 无棣县| 河曲县| 措美县| 丹巴县| 辰溪县| 安徽省| 渭南市| 松滋市| 鄂托克旗| 怀集县| 普定县| 丹寨县| 云林县| 清河县| 朝阳区| 西畴县| 湖口县| 伽师县| 长阳| 双鸭山市|