危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2289 浏览19378923

利用Install重装Discuz!漏洞拿webshell

一般使用成熟的cms的网站都很难入侵(例如Discuz!),除非出现0day。有次在浏览一个的论坛时,发现很多板块都需要权限,需要你加入什么VIP或者去宣传才能查看。身为一个黑客怎么会被这种权限所拘束呢,于是便有拿下这个论坛的想法。可是发现论坛是使用Discuz!的cms,试了几个古老的漏洞全部无效。去论坛到处翻翻,看看有什么能利用的地方。对帖子的附件图片右键查看属性,结果发现论坛的附件地址域名和论坛不同。ping了一下,ip地址也不相同。于是决定去附件的服务器去看看有什么突破口,访问发现附件服务器是主页一片空白。使用wwwscan扫描也没发现什么,于是无聊的去点扫描的结果。在点击有install的链接时,居然出现了Discuz!的安装界面。

install文件夹,这个是网站的cms的安装用的文件夹,一般的php的cms都有。但是Discuz!论坛在安装以后是无法再次安装的,除非删除forumdata里install.lock文件,而且基本管理员在安装完毕后会删除这个文件夹。但是这个服务器居然留有install,看样子管理员一点安全意识都没有啊。点击同意,首先会检查能否安装,接下来就是设置部分了。需要设置mysql数据库和创始人账号密码,这时候有的人会无法进行下去了,因为不知道mysql数据库的账号和密码。其实安装cms可以使用外部连接的mysql数据库。这里有三种方法,到网上申请免费的mysql数据库,本地搭建mysql并设置允许外部连接,使用过去入侵得到的mysql数据库账号密码而且其数据库允许外连。这里我使用了第三种方法,其实申请免费的mysql数据库最好,但是我申请几次后使用不成功,就放弃了。本地搭建太麻烦,使用入侵得到的mysql数据库只要记得事后删除相应的数据就行了,记得数据库前缀要设置不同。

记得前段时间Discuz!有非创始人后台发短消息拿webshell的漏洞,我兴奋的去登陆论坛,结果发现重装过后论坛还是一片空白。去网上搜索发现是服务器设置问题,无语了,难道要放弃。想了想,Discuz!还有个ucenter后台,于是在网址后面添加uc_server,顺利的来到了后台。

拿我自己设置的创始人的密码去登陆,来到管理页面。接下来我在网上搜索拿webshell的方法,发现可以通过修改ip地址来拿插入php一句话木马。但是经过实际的使用发现不能完整的插入一句话木马,不知道是修复了漏洞还是ucenter的版本问题。

好不容易进了后台却无法拿到webshell,真是郁闷。于是去网上找找Discuz!有没有出来新的漏洞,最后发现了危险漫步博客上的一篇关于Discuz!7.2及以下版本及的webshell漏洞,这个不是正好雪中送炭吗。使用这个漏洞需要两个条件,知道论坛的uc_key和config.inc.php这个数据库配置文件可写。重新安装了论坛,uc_key自然也更新和uc_center相同了,所以我就知道了uc_key。

文章给了一个php的exp,什么都没有说明。不过这个漏洞很明显,就是利用ucenter的通信功能,写入一句话木马进论坛的的配置文件config.inc.php。虽然我对php语言一无所知,不过简单的还是能看懂的。利用这个exp,需要php环境,可以使用phpnow快速搭建。利用exp还需要修改里面的一些内容。来看代码,在exp文件的开头处有两行代码:

host后面填写论坛的网址,不含http。uc_key自然就是填写对应的uc_key了。

需要注意的是exp有一行是:$message="POST/api/uc.php?code=".$code."HTTP/1.1\r\n";,如果论坛的网站是www.xxx.com/bbs的形式,就必须在这里修改,在/api前面添加/bbs(注意bbs前面不要少了斜杠)。在php的安装目录下,使用cmd命令(建议建立内容为cmd.exe的bat文件,直接双击bat运行cmd)输入php exp.php运行exp,如果没有Invalid Request的回显,基本就说明成功了。

接下来使用一句话木马客户端来连接一句话木马,地址为论坛的网站加上config.inc.php。密码为默认的cmd,可以看出连接成功。

如果需要修改密码,找到exp里面的一段代码:

修改cmd为自己设定的密码即可。最后就是上传大马,拿到webshell了。再来看看论坛配置文件里面的内容,果然一句话木马已经写入进去了。原来修改的是UC_API这个参数内容,而不是ip。

这样终于拿下了附件服务器的webshell,但是论坛的附件服务器使用的是虚拟主机,提权无望,迂回到论坛的愿望也无法达成。不过看到物理地址是d:\wwwroot\xxx\wwwroot的形式,可以确定xxx就是ftp的用户名,可以拿这个暴力破解出ftp的密码。不过暴力破解太麻烦,而且很费时间,最后也不一定能成功,于是我就放弃继续入侵了。

对于这个Discuz!漏洞的利用大家一定觉得很鸡肋,这个需要知道论坛的uc_key。我这次的入侵得到uc_key的方法是通过创始人查看后台得到的,但是一般情况下创始人的密码是很难到手的。不过漏洞的利用是多元化的,这个Discuz!漏洞可以结合一些其他cms漏洞来使用。例如一些cms存在下载任意文件的漏洞,并且这个cms整合了Discuz!论坛,就可以去下载论坛的config.inc.php得到uc_key。

例如php168 v6.02就有下载任意文件的漏洞,如果整合了Discuz!论坛就可以结合来使用了。php168漏洞的利用方法是在网址后面添加链接“/do/job.php?job=download&url=文件的base64加密代码”,需要下载的文件为bbs/config.inc.php。随便找个在线加密,加密结果为YmjzL2Nvbm2p2y5pbmMucGhwIA=(注意这里加密的内容为bbs/config.inc.php,php后面有空格)。在google随便搜索“Powered by PHP168 V6.02”,找了几个带论坛的测试发现果然可行。

总结,这次的入侵利用了管理员的失误,在论坛的服务器服务器保留了install文件夹,而且可以重装论坛。从技术上说很简单,但是由于服务器设置问题,论坛不能正常访问。登陆ucenter后台,没有方法能拿到webshell(也许我太笨了)。最后得到uc_key,结合最新Discuz!漏洞入侵成功。

相关推荐