【技术原创】渗透基础——WebLogic版本探测
导语:本文将要介绍WebLogic版本探测的两种方法,通过Python实现自动化,记录开发细节,开源代码。
0x00 前言
本文将要介绍WebLogic版本探测的两种方法,通过Python实现自动化,记录开发细节,开源代码。
0x01 简介
本文将要介绍以下内容:
实现思路
实现细节
开源代码
0x02 实现思路
探测WebLogic版本的方法有以下两种:
1.通过Web页面WebLogic Admin Console
默认配置下的URL:http://
在返回结果中能够获得WebLogic的版本
这里需要注意以下问题:
(1)需要区别早期版本
早期版本的返回结果示例:
目前常用版本的返回结果示例:
WebLogic Server Version: 14.1.1.0.0
(2)WebLogic Admin Console对应的路径和端口可被修改
WebLogic Admin Console可被关闭,也可修改URL,修改方法有以下两种:
通过浏览器访问WebLogic Admin Console,在Configuration->General->Advanced设置,如下图
通过配置文件设置,默认路径:Oracle_Home\user_projects\domains\base_domain\config\config.xml,内容如下:
(3)关闭WebLogic Admin Console的情况
如果关闭了WebLogic Admin Console,访问URL:http://
2.通过T3协议
可以使用nmap的脚本weblogic-t3-info.nse,命令示例:
返回结果示例:
在原理上是通过建立socket连接,在返回结果中获得WebLogic的版本
这里需要注意以下问题:
(1)需要区别早期版本
早期版本的返回结果示例:t3 10.3.6.0\nAS:2048\nHL:19\n\n
目前常用版本的返回结果示例:HELO:12.2.1.3.0.false\nAS:2048\nHL:19\nMS:10000000\nPN:DOMAIN\n\n
(2)存在需要多次发送的情况
存在特殊情况,返回内容为HELO,此时需要重新发送直到返回完整的版本信息
(3)T3协议可被关闭
关闭方法有以下两种:
通过浏览器访问WebLogic Admin Console,在Security->Filter设置,配置如下:
Connection Filter设置为weblogic.security.net.ConnectionFilterImpl
Connection Filter Rules设置为:
如下图
通通过配置文件设置,默认路径:Oracle_Home\user_projects\domains\base_domain\config\config.xml,内容如下:
0x03 实现细节
综合以上探测方法,为了适应多种环境,在程序实现上选取了通过HTTP协议和T3协议两种方法实现
1.通过HTTP协议
选择默认配置下的URL:http://
需要注意以下问题:
(1)第一次访问时存在一次跳转
首次启动WebLogic时,在访问默认配置下的URL:http://
在返回内容中以字符串Deploying application作为判断依据
(2)需要区别早期版本
早期版本的返回结果示例:
目前常用版本的返回结果示例:
WebLogic Server Version: 14.1.1.0.0
在脚本实现上优先判断常用版本,使用正则匹配,如果失败,再从固定格式
(3)关闭WebLogic Admin Console的识别
如果关闭了WebLogic Admin Console,访问URL:http://
完整示例代码如下:
2.通过T3协议
发送的socket数据内容为:t3 12.1.2\nAS:2048\nHL:19\n\n
需要注意以下问题:
(1)需要区别早期版本
早期版本的返回结果示例:t3 10.3.6.0\nAS:2048\nHL:19\n\n
目前常用版本的返回结果示例:HELO:12.2.1.3.0.false\nAS:2048\nHL:19\nMS:10000000\nPN:DOMAIN\n\n
为了提高准确性,这里使用正则提取版本信息,示例代码:
(2)存在需要多次发送的情况
存在特殊情况,返回内容为HELO,此时需要重新发送直到返回正确的版本信息
在重新发送的过程中,应关闭整个socket连接,重新初始化发送数据
(3)T3协议可被关闭
如果关闭了T3协议,返回内容示例:
完整示例代码如下:
0x04 开源代码
完整的实现代码已上传至github,地址如下:
https://github.com/3gstudent/Homework-of-Python/blob/master/WebLogic_GetVersion.py
代码使用HTTP协议和T3协议探测版本信息
0x05 小结
本文介绍了WebLogic版本探测的两种方法,比较优缺点,选取有效的方法并通过Python实现自动化,记录开发细节,开源代码,作为一个很好的学习示例。
发表评论