欢迎访问Sunbet官网(www.sunbet.us),Allbet欧博官网(www.ALLbetgame.us)!

首页Sunbet_安全防护正文

bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考

b9e08c31ae1faa592020-01-04124安全技术漏洞分析

前言

最近开始整java代码审计,于是找了几个通用开源的论坛审计了一下,发现这个bbs后台getshell的点有点意思就写出来了,这个漏洞我已经提交了issue并且得到了作者的回复表示会更新代码修复该漏洞。
我觉得这个漏洞挺水的,但还是想分享一下我的看到的有趣的点,各位大佬手下留情,轻点喷。

项目相关

项目地址:

https://github.com/diyhi/bbs

issue:

https://github.com/diyhi/bbs/issues

调试运行所需要的相关环境以及工具:

jdk1.8,idea,tomcat9.x,mysql5.7

黑盒测试

(1)普通用户登陆测试
以普通用户test登入到系统,并且在创建主题中选择上传文件
bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第1张
上传jsp文件
bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第2张
发现上传失败,不允许jsp文件上传
bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第3张
(2)以admin登入到后台
bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第4张
点击系统设置-基础设置-话题编辑器
bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第5张
点击保存并且抓包
bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第6张
由图中数据包可以出其中的可允许修改的后缀的字段,并且添加jsp字段
bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第7张
修改成功后直接test用户上传jsp后缀名的附件
bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第8张
发现可以上传成功
bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第9张
成功解析该jsp代码,并且执行命令whoami
10.png
bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第10张

白盒分析

其实第(2)步中最后修改成功的时候我刷新看了下基本设置我是懵逼的,我在想是不是没有修改成功,后来跟进去看了代码发现,修改成功之后的代码其实是存入到数据库中去的。后来尝试看了下上传果然成功了。下面我们来分析一下设置这个功能点的流程走向。

首先在设置中我们可以看到每次点击刷新该设置的时候的页面
bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第11张
底下的可允许的后缀名,通过跟踪代码,其接口的代码在以下文件中的edit接口的get方法

JAVA反序列化 - Commons-Collections组件

推荐阅读时间:60min 全文字数:2w+ 前言 这是个人学习java反序列化的第一篇利用链的文章,就好像P牛说的不知道为什么网上讲到java反序列化学习,上来就是cc链,你知道这个链它有多复杂么.jpg。萌新也是理所当然的踩了这个坑,然后.....在一路质疑自己智商和"我不服"的情况下趟了过去。 路难行,难行,总归要走。 走来,回望去,呵,牛逼。 在此文中是以一个只了解java反射机制和反序列化利用点(readObject)的视角去一点点复现推导了commons-collections、jdk1.7的poc的构造。 同时记录下了一个个踩的坑,再爬出来,再跳进去,再爬出来的历程。 如果你具备了反射机制和反序列化基本原理的知识,同时想学习cc

src\main\java\cms\web\action\setting\SystemSettingManageAction.java

bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第12张

跟进去readRichTextAllowFileUploadFormat
bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第13张
继续跟进richtext,从filemanage类当中发现通过读取richtext.propertise文件作为配置文件
bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第14张
在保存的时候,我们的代码流程走的是以下代码中的edit接口的post方法

src\main\java\cms\web\action\setting\SystemSettingManageAction.java

其中updateSystemSetting就是把传入的参数写入到配置当中
bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第15张

跟进updateSystemSettings

bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第16张
最后直接update 到数据库中
以下是该数据库存到的表

bbs论坛管理员后台后端未校验漏洞导致getshell的一点点分析和思考  安全技术 漏洞分析 第17张

最后

以往在尝试了修改后缀名之后往往再次刷新之后看到后缀名没有修改成功就直接放弃了,其实是很有可能已经成功了,只不过会出现像我这次的这种情况,修改完成后的配置文件其实是存到数据库中去的,而每次加载的时候都是从默认的配置文件中加载的,所以无法得到是否真正的完全修改成功的反馈,只能是再去尝试以下上传
该应用还有个上传升级包点应该也可以shell不过人家是正常的更新的功能点所以就不做详细测试了,还有其他的一些高危漏洞,因为觉得后台的洞都还蛮鸡肋的就不写上来了。
第一次写文章,java审计也才开始不久,各位大佬轻点喷


网友评论