定制网站第21篇:判断Weblogic详细版本号的方法总结

 Part1 前言 

在日常的、定制网站红队评估项目中,定制网站中间件层面的漏洞挖掘定制网站是非常重要一环,Weblogic定制网站中间件在最近几年接连定制网站被爆出很多高危漏洞,定制网站基本上都是可以直接拿到权限的。主流的Weblogic漏洞包括HTTP协议上的CVE-2017-10271、CVE-2019-2729等,定制网站但是其影响weblogic的版本为12.1.3之前版本。定制网站如果能事先判断出weblogic定制网站的版本号是大于12.1.3的,定制网站那么可以放弃测试这两种漏洞,定制网站节省很多时间

定制网站此外还有很多T3协议、IIOP定制网站协议下的各种Java定制网站反序列化漏洞,定制网站但是这些反序列化漏洞定制网站利用起来非常非常麻烦,定制网站尤其是最近几年出现的定制网站漏洞很多都基于coherence组件,定制网站不同版本号的weblogic的coherence组件的SUID都不一样,定制网站而漏洞利用成功的前提就是漏洞利用工具的SUID和目标环境的SUID必须一致。

这就需要我们在渗透测试的时候,准确判断出Weblogic版本号,以备找到合适版本号的coherence组件去进行Java反序列化攻击。而且在得知weblogic版本号之后,不符合版本号的漏洞就不用测试了,这样会节省很多时间。接下来就给大家分享一些在各种情况下判断Weblogic细微版本号的方法。再次强调一下,依据ABC_123测试weblogic漏洞的经验,在weblogic漏洞的探测与利用之前,需要想尽各种办法去判断weblogic细微版本号,这样可以节省很多时间,也可以发最少量的数据包。因为weblogic各种漏洞非常多,非常繁杂,而且利用成功与否受weblogic版本影响特别大

 Part2 技术研究过程 

  • Weblogic细微版本号对照表

既然要判断Weblogic版本号,首先就要让大家了解一下weblogic各版本号的命名规则。不得不说,Oracle公司的产品,在版本号的命名上、日志结构上一向弄得很复杂。

笔者曾经遇到这么一个尴尬的事情,相信网友们也遇到过类似的情况。在一次渗透测试报告总结会中,有技术人员找到了一个Weblogic反序列化漏洞,但是他给出的修复建议是,把Weblogic 11g版本升级到12c版本。客户那边的接口人开会时就对此提出质疑和批评:我们公司部署的Weblogic中间件明明是10.3.6版本,是10版本的,你们给的修复建议居然是由11版本升级到12版本,我们没有11版本的weblogic啊

结果在场的项目经理和技术人员都被问懵了,被客户质疑地哑口无言,楞是没答出这个问题来,一致认为修复建议给错了,于是引起了一系列误会。后来我发了如下这张图,跟大家解释了一下,其实客户跟我们说的都没错,Weblogic 10.3.6版本跟11g版本其实是一回事,只是命名规则不同。具体大家可以把下面这张图仔细看几遍,就自然明白了,我在这里就不过多叙述了。

  • 判断是否使用了Weblogic

 1   Weblogic指纹特征判断

判断一个网站应用是否使用了Weblogic中间件,可以通过查找指纹特征的方法去判断。输入一个不存在的URL路径,看Web服务是否返回如下“From RFC 2068Hypertext Transfer Protocol”关键字,即可判断出是否使用Weblogic中间件来。

使用Burpsuite发包返回如下:

 2   Weblogic内置URL路径判断

对于有些网站屏蔽了404错误回显的情况,可以通过访问Weblogic内置Web目录是否存在去间接去判断是否使用了Weblogic中间件。比如/consolehelp/、/bea_wls_internal/、/console/等路径是Weblogic专有的,再比如说可以访问Weblogic专有的漏洞CVE-2017-10271、CVE-2019-2729等对应的URL路径(/wls-wsat/、/_async/等),但是这个方法不推荐使用,因为基本上都会被WAF拦截,更严重的情况是会导致封IP,导致后续正常路径也无法判断出来,而且大多数甲方客户修复漏洞的方法,就是直接删除存在漏洞的war包,导致这两个路径也不存在。

  • 判断Weblogic详细版本号方法

 1   访问特定页面可显示版本号

访问/console/目录,如果console目录应用没有删除,在页面左下角会给出一个weblogic的详细版本号。

 2   通过T3协议获取

通过T3协议可以直接获取Weblogic版本号,缺点是现在Weblogic的T3直接暴露在公网上的情况很少了,很多时候在前面会放置一个nginx反向代理,这种情况下,T3识别版本号的方法就用不了了。

可以使用nmap去识别,具体命令如下:

nmap 192.168.237.235 -p 7130 --script="weblogic-t3-info.nse" -v -Pn -n -sV --open -T4

也可以自己从github上下载一个T3协议的发包代码,自己修改一下,直接把T3协议的返回包输出,就直接可以看到版本号了。

 3   CVE-2022-21371文件包含漏洞判断

这个漏洞是2022年出现的漏洞,是一个文件包含漏洞,通过这个漏洞可以跳转目录对Weblogic的/WEB-INF/xml、jsp、html文件等进行文件读取。这也是被大家忽略的一个Nday漏洞,在这里,我们可以用这个漏洞,间接判断出weblogic的版本号

思路是,fast_track.html这个文件的显示内容有个时间,每一个细微版本大致对应着一个weblogic的细微版本号,用来做版本识别恰到好处。

访问.//fast_track.html,如下图所示,对于Weblogic的12.2.1.3.0版本,此文件回显时间内容是1996,2017

如下图所示,对于Weblogic的12.1.3.0.0版本,此文件回显的时间内容是1996,2014

 4   通过返回头来判断

很早之前从github上的一个脚本中复制出来放在我的笔记中的,忘记具体作者是谁了。这个方法我没有具体验证过,大家测试成功后,可以在微信公众号后台给我发消息,告诉我准确度如何。

通过返回头判断weblogic版本号:

def check_weblogic_by_header(headers):

status,msg = False,'may be not weblogic'

if 'X-Powered-By' in headers:

m = re.findall(r'Servlet/(.+)\s+JSP/(.+)',headers['X-Powered-By'])

if m :

Servlet,JSP = m[0]

if Servlet == '2.4' and JSP == '2.0':

status = True

msg = 'weblogic 9.x'

elif Servlet == '2.5' and JSP == '2.1':

status = True

msg = 'weblogic 10.x'

elif Servlet == '3.0' and JSP == '2.2':

status = True

msg = 'weblogicc 12.x'

return status,msg

Part3 总结 

1.  nday也是有价值的,看大家对漏洞的理解以及如何灵活运用。

2.  判断weblogic版本号方法还有很多,上述方法是我比较常用的,也给大家拓展一下思路,还有很多其它方法后续再慢慢讲。

专注于网络安全技术分享,包括红队、蓝队、日常渗透测试、安全体系建设等

每周一篇,99%原创,敬请关注

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发