网站漏洞检测与修复之Discuz论坛3.4版本
Discuz!论坛目前最新版本为3.4版本,已经好久没有更新了,我们SINE安全在对其网站安全检测的同时发现一处漏洞,该漏洞可导致论坛的后台文件可以任意的删除,导致网站瘫痪,后台无法登陆。关于该网站漏洞的细节我们来详细的分析看一下:
Discuz漏洞的检测与分析
该漏洞发生的位置在于source目录下的admincp文件夹里的admincp_forums.php代码里,我们用note编辑器打开查找到unlink函数调用的地方,就看到漏洞产生的原因了,直接搜索$_get{'replybgnew'],定位到代码。漏洞的使用有限制,必须是discuz管理员的权限,所以说漏洞危害较小,但也还是一处discuz的漏洞,如下图所示:
从上图我们看到代码首先会进行判断对于GET提交过来的参数会进行IF语句,从代码里获知当$multiset的值为真或者是为假的时候,就会将参数赋值为0,我们接着往下看另外一个的IF语句是如何使用的,当IF下来的时候会进行安全检测,将parse_url参数里的结果进行检测,来确定前端提交过来的网址是否正确,代码执行到最后一步我们看到attachurl的变量内容,竟然可以伪造恶意代码插入进去。
我们构造恶意代码首先搭建一下测试的Discuz论坛环境,服务器使用linux centos系统,PHP版本使用5.3版本,数据库mysql5.5,我们从官方下载一份3.4正式版的代码,安装到咱们的测试环境中。打开论坛,登陆后台,然后找到论坛的模块管理,我们点击最下端的提交,然后通过抓包获取数据,在提交的post数据中添加:
&replybgnew=../../../index.php&delreplybg=safe这个代码,然后再提交post,就会把网站的论坛首页删除掉,就会显示如下图:
关于这个Discuz!网站漏洞,前提是需要获取论坛管理员的权限,相对来说危害较小,但也不能忽视对网站安全的防护,时刻做好网站的安全备份,discuz要登陆后台经常看下是否有漏洞补丁需要修复,关于这个漏洞的修复,建议将discuz的后台地址admin.php改为admin!@#ht.php这样即使知道管理员的账号密码,也登陆不了后台。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Linux之《荒岛余生》(三)内存篇
内存问题,脑瓜疼脑瓜疼。脑瓜疼的意思,就是脑袋运算空间太小,撑的疼。本篇是《荒岛余生》系列第三篇,让人脑瓜疼的内存篇。其余参见: Linux之《荒岛余生》(一)准备篇 Linux之《荒岛余生》(二)CPU篇 小公司请求量小,但喜欢滥用内存,开一堆线程,大把大把往jvm塞对象,最终问题是内存溢出。 大公司并发大,但喜欢强调HA,所以通常保留swap,最终问题是服务卡顿。 而喜欢用全局集合变量的某些同仁,把java代码当c写,对象塞进去但忘了销毁,最终问题是内存泄漏。 如何避免?合理参数、优雅代码、禁用swap,三管齐下,trouble shooter。 从一个故事开始 老王的疑问 一个阳光明媚的下午,一条报警短信弹了出来。老王微微一笑,是cpu问题,idle瞬时值,大概是某批请求比较大引起的峰值问题。老王每天都会收到这样的短信,这样的一个小峰值,在数千台服务器中,不过是沧海一栗,继续喝茶就是了。 但,这次不一样。几分钟之后,几百个服务的超时报警铺天盖地到来。事后老王算了一下,大概千分之零点几的服务超时了,不过这已经很恐怖了。事态升级,恐怕没时间喝茶了。 大面积报警,应该是全局问题,是网络...
- 下一篇
2018-02-18 Antlr4实现简单语言之条件语句
本系列之前的文章: Antlr4的分析错误处理 Antlr4实现数学四则运算 Antlr4添加中文变量赋求值,括号,各种问题 Antlr4: 修改语法规则更接近普通BNF格式 Antlr4实现简单语言之整数比较表达式 这一步, 实现了最简单的单条件, 只有"条件为真"时执行单语句. 例如: 变量=1 如果 变量<2 变量=变量×2 变量 返回2 实现 语法规则修改, 将原本的'声明'拆分出多个规则: 声明 : 赋值声明 | 如果声明 | 求值声明 | T新行 ; 如果声明 : '如果' 表达式 声明 ; 赋值声明 : T变量名 '=' 表达式 T新行 ; 求值声明 : 表达式 T新行 ; "定制访问器"中, 赋值/求值声明只需修改类型, 添加的"如果声明"部分(需改名为"条件声明"之类): @Override public 节点 visit如果声明(如果声明Context 上下文) { 条件节点 节点 = new 条件节点(); 节点.条件 = visit(上下文.表达式()); 节点.条件.原始文本 = 上下文.表达式().getText(); 节点.条件为真分支 = visi...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7设置SWAP分区,小内存服务器的救世主
- Hadoop3单机部署,实现最简伪集群