前言

本文主要整理一些在HW行动即生产环境中常见的JAVA框架,红队识别其框架特征理论上除了指纹识别和漏洞点验证以外没有很好的识别方法,因此,本文着重介绍其常见漏洞。之后可能还会补充
主要涉及到的框架有以下几种:

框架名称 漏洞编号
JBOSS CVE-2015-7501
CVE-2017-12149
Shiro Shiro-550
Shiro-721
Weblogic CVE-2019-2725
Fastjson CVE-2017-18349

指纹识别工具

在线指纹识别网站有很多,大家可以自行选择,在这里只推荐我觉得好用的一个插件(不是因为穷买不起云悉)

Wappalyzer

Wappalyzer
Wappalyzer插件是一款专为谷歌浏览器的打造的浏览插件,插件功能强大全面,简单易用,使用后可以帮助用户更轻松便捷的分析网站信息,还可以分析目标网站使用的平台架构,网站环境,服务器配置环境,JavaScript框架,编程语言和其他参数。
使用起来也很简单,加入到chrome的插件里直接就可以使用了,访问页面的时候点击右上角即可查看。

TideFinger

TideFinger是一款国内团队开发的指纹识别工具,使用起来也很简单。
附上github链接地址(https://github.com/TideSec/TideFinger)
具体的安装方法不再赘述,主要介绍一下使用方法:

1
2
3
4
5
6
7
8
9
$ python3 TideFinger.py

Usage: python3 TideFinger.py -u http://www.123.com [-p 1] [-m 50] [-t 5] [-d 0]

-u: 待检测目标URL地址
-p: 指定该选项为1后,说明启用代理检测,请确保代理文件名为proxys_ips.txt,每行一条代理,格式如: 124.225.223.101:80
-m: 指纹匹配的线程数,不指定时默认为50
-t: 网站响应超时时间,默认为5秒
-d: 是否启用目录匹配式指纹探测(会对目标站点发起大量请求),0为不启用,1为启用,默认为不启用。

e.g.:

TideFinger

和Wappalyzer对比

20220322223408

所以我还是感觉Wappalyzer好用一点

JBoss反序列化漏洞(CVE-2015-7501)

漏洞原理

JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,可以通过Apache Commons Collections中的Gadget执行任意代码

漏洞识别

访问invoker/JMXInvokerServlet出现下载即表示漏洞存在

影响版本

  • JBoss Enterprise Application Platform 6.4.4,5.2.0,4.3.0_CP10
  • JBoss AS (Wildly) 6 and earlier
  • JBoss A-MQ 6.2.0
  • JBoss Fuse 6.2.0
  • JBoss SOA Platform (SOA-P) 5.3.1
  • JBoss Data Grid (JDG) 6.5.0
  • JBoss BRMS (BRMS) 6.1.0
  • JBoss BPMS (BPMS) 6.1.0
  • JBoss Data Virtualization (JDV) 6.1.0
  • JBoss Fuse Service Works (FSW) 6.0.0
  • JBoss Enterprise Web Server (EWS) 2.1,3.0

流量特征

  1. 目标url:http://123.58.236.76:26022/invoker/JMXInvokerServlet
  2. 攻击流量:
    20220322232420

JBoss反序列化漏洞2(CVE-2017-12149)

漏洞原理

原文来自知乎(https://zhuanlan.zhihu.com/p/33532884)

漏洞出现在 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中,源码在jboss\server\all\deploy\httpha-invoker.sar\invoker.war\WEB-INF\classes\org\jboss\invocation\http\servlet目录下的ReadOnlyAccessFilter.class文件中
其中doFilter()函数代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
HttpServletRequest httpRequest = (HttpServletRequest)request;
Principal user = httpRequest.getUserPrincipal();
if ((user == null) && (this.readOnlyContext != null))
{
ServletInputStream sis = request.getInputStream();
ObjectInputStream ois = new ObjectInputStream(sis);
MarshalledInvocation mi = null;
try
{
mi = (MarshalledInvocation)ois.readObject();
}
catch (ClassNotFoundException e)
{
throw new ServletException("Failed to read MarshalledInvocation", e);
}
request.setAttribute("MarshalledInvocation", mi);

mi.setMethodMap(this.namingMethodMap);
Method m = mi.getMethod();
if (m != null) {
validateAccess(m, mi);
}
}
chain.doFilter(request, response);
}

可以看到其直接从http中获取数据,在没有进行检查或者过滤的情况下,尝试调用readobject()方法对数据流进行反序列操作,因此产生了Java反序列化漏洞。

影响版本

  • JbossAS 5.X
  • JbossAS 6.x

流量特征

  1. 目标URL:http://JBOSS/invoker/readonly
  2. 攻击流量:
    JbossPoc1

Shiro-550

漏洞原理

Apache Shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值->Base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。

漏洞特征

shiro反序列化的特征:在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段

影响版本

Apache Shiro <= 1.2.4

流量特征

shiro-550

Shiro-721

漏洞原理

由于Apache Shiro cookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题,用户可通过Padding Oracle 加密生成的攻击代码来构造恶意的rememberMe字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行。

漏洞特征

shiro反序列化的特征:在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段

影响版本

Apache Shiro < 1.4.2

流量特征

环境问题,用张网图,之后配置好了再补
Shiro-721

Weblogic反序列化漏洞(CVE-2019-2725)

漏洞原理

CVE-2019-2725是一个Oracle weblogic反序列化远程命令执行漏洞,这个漏洞依旧是根据weblogic的xmldecoder反序列化漏洞,通过针对Oracle官网历年来的补丁构造payload来绕过。

漏洞特征

访问/_async/AsyncResponseService成功说明存在该漏洞
20220323001831

影响版本

  • weblogic 10.x
  • weblogic 12.1.3

流量特征

  1. 目标URL:http://weblogic/_async/AsyncResponseService
  2. 攻击流量:
    20220323002036

Fastjson 1.2.24 反序列化(CVE-2017-18349)

漏洞原理

fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。

影响版本

  • fastjson<=1.2.24

流量特征

20220323002936