主要内容
因为最近要学习weblogic以及对其历史漏洞展开研究,包括漏洞基本原理分析,跟进代码审计,挖掘思路总结,修复方式整理,因此需要临时搭建一个weblogic环境以方便复现和调试代码(关键),经过前期的调研后,已经总结了windows上面和linux安装weblogic的方法,但由于平时使用linux系统多一点,因此选择在linux上面部署weblogic,于是乎调研了一番,最终以方便,快速,自动化为特征选择了奇安信师傅们开发的一款工具(参考链接),下面将具体搭建与调试步骤记录如下,以做总结。
环境部署
此方法要求机器上已经安装docker,如果未安装可以自行查找相关文档,此处不再介绍。安装完docker以后,对于weblogic的具体搭建过程则包括weblogic安装包下载,以及jdk包下载等过程,下面详细说明。
从github(国外)或者gitee(国内,速度快)将安装脚本克隆到本地虚拟机:
cd切换到克隆后的目录,创建jdks与weblogics目录
1
mkdir jdks && mkdir weblogics
执行安装脚本:(这里以weblogic10.3.6.0+jdk7u21为例说明)
1
./run_weblogic1036jdk7u21.sh
安装过程截图
安装完成
开启调试模式
通过url访问可看到已经部署成功。并已默认开启了远程调试模式。
导出weblogic的依赖Jar包进行远程调试
8.1 查看weblogic容器进程
8.2 使用下面的命令导出jar包,并导出tar.gz文件方便在装有IDEA的机器中进行远程调试
1
2
3
4
5
6
7
8
9进入容器
sudo docker exec -it weblogic1036jdk7u21 /bin/bash
cd /u01/app/oracle/
cp -r middleware/ /root/WeblogicEnvironment-master/
exit
宿主机执行
sudo docker cp 7a84dc24433b:/root/WeblogicEnvironment-master .
sudo chown -R user:user WeblogicEnvironment-master
tar czvf newfile.tar.gz WeblogicEnvironment-master(该步骤开启的可忽略)如果默认没开启,则按照以下步骤开启。
9.1 修改docker-compose.yml文件,开启8453端口
9.2 编辑配置脚本
1
2cd u01/app/oracle/Domains/ExampleSilentWTDomain/bin/
vi setDomainEnv.sh9.3 添加两行代码
1
2debugFlag="true"
export debugFlag
远程调试
打开idea,创建一个Java web工程,在idea中File->Project Structure里找到Libraries,添加modules。
然后配置远程调试,填写远程IP以及端口。
以CVE-2015-4852为例,因为我们知道是 commons-collections的InvokerTransformer出现的问题,所以断点直接下在transform(),开启idea的debug,然后用exp打过去,发现断点已经成功。
至此,远程调试完成。可以开始后续的代码审计了。