判断Weblogic详细版本号的方法总结

admin 2023年2月16日22:00:48评论75 views字数 3030阅读10分6秒阅读模式

判断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和目标weblogic环境的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详细版本号的方法总结


  • 判断是否使用了Weblogic

 1   Weblogic指纹特征判断

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

判断Weblogic详细版本号的方法总结


使用Burpsuite发包返回如下:

判断Weblogic详细版本号的方法总结


 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详细版本号的方法总结

判断Weblogic详细版本号的方法总结

判断Weblogic详细版本号的方法总结


  • 判断Weblogic详细版本号方法

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

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

判断Weblogic详细版本号的方法总结

判断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

判断Weblogic详细版本号的方法总结


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

判断Weblogic详细版本号的方法总结


 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详细版本号的方法总结


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

判断Weblogic详细版本号的方法总结


 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版本号方法还有很多,上述方法是我比较常用的,也给大家拓展一下思路,还有很多其它方法后续再慢慢讲。

判断Weblogic详细版本号的方法总结

原文始发于微信公众号(哈拉少安全小队):判断Weblogic详细版本号的方法总结

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月16日22:00:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   判断Weblogic详细版本号的方法总结https://cn-sec.com/archives/1279600.html

发表评论

匿名网友 填写信息