- 如何检查并堵住网站的eWebEditor漏...
- PHPBB 2.0.22 MOD版最新注入漏洞
- 强搜天线 搜出WiFi世界的安全漏洞
- 网络工程师讲解安全漏洞的形成和防...
- 选购入侵检测产品的11点原则
- 渗透测试的攻与守 认清网络面临的...
- Oracle数据库软件包远程溢出漏洞
- 详述Windows 2003 SP2入门IDS构建...
- 绕过Anti-Rookit的内核模块扫描技...
- Firefox浏览器现多个远程安全漏洞
- 入侵检测 浅谈安全扫描软件的检测...
- 卡巴斯基漏洞被黑客利用入侵系统
- 补丁也有漏洞 艾妮漏洞让微软手忙...
- Agent技术在分布式入侵检测系统中...
- Win2000服务器入侵前兆检测方法
PHPBB 是国内使用非常多的一款PHP论坛程序,这次出现的注入漏洞主要是针对PHPBB简体中文MOD版,连最新的2.0.22 版本也受影响(通杀低版本的PHPBB2 MOD版)。关于该漏洞的形成原因我们不作讨论,有兴趣的朋友可以自己阅读代码分析一下,本文将主要介绍该漏洞的详细利用以及如何在后台拿到 Webshell。
我到PHPBB中文官方网站下载了最新版本的2.0.22,在本机搭建了PHP环境以做测试。要寻找使用这套程序的论坛可以在 Google里以“Powered by phpBB © 2001, 2005 phpBB Group”为关键字搜索,如果要找国内的目标就以“Powered by phpBB © 2001, 2005 phpBB Group phpBB中文开发小组提供技术支持”为关键字进行搜索。这个漏洞可以直接暴出论坛管理员的用户名及32位MD5加密密码。
高手们已经制作出了针对该漏洞的利用工具(伤心的鱼友情赠送给我的),其界面如图1所示。

图1
工具上面标明了“phpBB<=2.0.22 Links MOD Exp”,针对最新版本2.0.22有效。其实针对旧版本的MOD版PHPBB程序也是同样有效的!到底如何利用呢?非常简单!只要在Url后面填上目标论坛的访问地址(注意要连最后面的/也必须填上,否则会出错),然后直接点“暴”,如果目标存在漏洞,就会暴出管理员的用户名和32位的MD5密码,测试结果如图2所示。

图2
成功暴出了管理员的用户名(hackest)和32位MD5密码(3787795aeee01c9ab7267f252c932572),将密码放到www.cmd5.com网站上进行查询密码明文,如图3。

图3
至于密码能不能查出来,那就得看密码的复杂程度如何了。查询出密码明文后就可以直接登录论坛,然后再点击论坛底部的“管理员控制面板”打开后台登录窗口,使用得到的密码进入后台,如图4。

图4
前面所讲述的操作都非常简单,基本上没有什么太大的难度。可是进入了后台要获取Webshell就有点麻烦了,PHPBB旧版本还可以直接添加上传类型为 PHP的文件,然后直接上传PHP的后门得到Webshell。可是,最新版本的PHPBB后台已经不允许添加上传类型了,如图5。

图5
可以利用的基本上都限制了,经测试发现部分空间可以添加inc扩展名,然后前台发帖上传扩展为inc的PHP后门程序也可以成功解释执行。不过这个方法局限性太大,但有部分论坛确实是可以成功的!添加inc扩展名的操作也比较简单。在后台找到“扩展名”—“扩展名控制”,然后在“扩展名”里填入inc,勾选上“增加”,其它默认,然后点提交即可,如图6。

图6
然后在前台发帖或编辑帖子来上传附件,上传扩展名为inc的PHP后门,再在预览里找到Webshell的访问路径即可得到Webshell(在预览里直接点击附件名即可打开Webshell)。当然了,要是空间支持其它脚本,大可以添加上传jsp后门哦。如果要添加asp后门也是有办法的,虽然“禁止扩展名”里禁止了上传asp。但是我们可以先把禁止了的asp删除掉,然后再参照添加inc扩展名的方法添加即可。
除了这个方法可以拿到Webshell外,还有一个稍为复杂点的方法。这个方法同样局限性也很大,因为要求论坛要使用具有root权限的MySQL用户名和密码才可以成功!
具体操作步骤如下(以本机架设的测试论坛举例说明):
1、先使用管理员用户名和密码登录后台;
2、在浏览器中访问http://127.0.0.1/admin/admin_disallow.php?setmodules=00(会看到空白页面);
3、在后台找到“总体管理”—“备份数据库”,执行备份数据库操作(备份完毕会自动弹出下载窗口,下载保存本地即可);
4、复制备份文件另存一份(用于导出Webshell后恢复论坛),使用记事本打开下载回来的数据库文件phpbb_db_backup.sql,查找关键字 ●INSERT INTO phpbb_categories (cat_id, cat_title, cat_order) VALUES●,一共有两处!●INSERT INTO phpbb_categories (cat_id, cat_title, cat_order) VALUES●后面的内容会根据情况而有所不同。比如我这里是●INSERT INTO phpbb_categories (cat_id, cat_title, cat_order) VALUES('1', '测试分区', '10');●;
5、把 ●INSERT INTO phpbb_categories (cat_id, cat_title, cat_order) VALUES('1', '测试分区', '10');●改为●INSERT INTO phpbb_categories (cat_id, cat_title, cat_order) VALUES('1', '', '10');SELECT cat_title INTO OUTFILE 'D:\\Program Files\\VertrigoServ\\www\\shell.php' FROM phpbb_categories where cat_id=1;●,保存即可。简单的解释一下,“D:\\Program Files\\VertrigoServ\\www\\shell.php”是导出Webshell的绝对路径(即为我本机的论坛安装目录),这个方法是利用数据库操作实现的,先往一个已存在的表段里插入PHP一句话后门,然后再使用“SELECT 表段名 INTO OUTFILE”导出到论坛目录,从而得到Webshell(要注意的是里面的绝对路径一定要把\替换成\\,否则不可以成功,而*nix类系统使用/连结路径);
6、在后台找到“总体管理”—“恢复数据库”,浏览选中刚才改好的备份文件phpbb_db_backup.sql,然后点击“开始恢复”,恢复完毕后一般会看到一些错误,不必理会,过会儿会恢复就是了;
7、使用一句话客户端连接http://127.0.0.1/shell.php,得到简易的Webshell,如图7;
8、参照第6步,使用未修改过的phpbb_db_backup.sql恢复论坛数据(要是不恢复,论坛会出错)!
