某日,一朋友丢过来一个网站,让我看看有无办法获取Webshell,通过分析网站结构,发现该网站采用Art2008cms,Art2008CMS是一款完全开源的程序,功能完善,覆盖面广、扩展性强、负载能力好、模板调用非常灵活、管理方便,因此不仅适合于建设一般企业、政府、学校、个人等小型网站,同时也适合于建设地方门户、行业门户等大中型网站,它有两个版本,一个是免费版本,另外一个需要购买,其下载地址为http://www.art2008cms.com,通过在本地架设网站,发现以下几个可以利用的地方:
(1)上传文件列目录漏洞,其漏洞文件为Admin_UploadFile.asp,通过修改dir参数的传入即可浏览上级目录或者当前磁盘的文件列表。例如Admin_UploadFile.asp?dir=…/…/…/。
(2)系统默认会保留“Art2008cms”用户,密码为“111111”,默认登录地址为:http://localhost/user/login.asp。
(3)user登录后目录浏览漏洞http://localhost /User/selectupfile.asp?CurrPath=…/…/…
(4)修改上传选项,允许上传mdb类型,上传mdb的木马,然后恢复数据库即可获得Webshell。
1.修改上传选项
在Art2008cms系统中默认过滤了asp、aspx等危险后缀,即使修改了允许管理员上传的文件类型,在实际上传过程中也是被禁止的,因此在“允许管理员上传的文件类型”中增加一个“|mdb”选项,如图1所示,允许mdb数据库文件上传。
图1 允许上传mdb数据库文件
2.上传数据库文件
单击“基本设置”-“添加文章”,在文章添加页面中单击“插入FLV视频”,选择一个已经更名为mdb的Webshell上传,如图2所示,选择文件后单击开始上传,上传完毕后会自动显示文件上传后的详细地址“/uploadfile/Media/201106/2011061515303758472.mdb”,记下该地址,留作后用。
图2 上传更名后的Webshell文件
3.恢复数据库备份
在art2008cms中单击“基本设置”-“数据恢复”进入恢复数据库页面,如图3所示,要恢复的数据库源目录保持默认,在要恢复的数据库文件名中输入刚才上传的详细地址,注意需要去掉“/”,即填写的文件名为“uploadfile/Media/201106/2011061515303758472.mdb”,单击立即恢复数据库。如果没有什么意外,一般都会恢复成功,恢复成功后会给出提示,如图4所示。
图3 恢复数据库
图4 数据库恢复成功提示
4.获取Webshell地址
(1)后台和前台无法正常访问
数据库恢复成功后,由于用来恢复的数据库是Webshell,非真实的数据库文件,因此当数据库恢复成功后,后台管理会保错,导致后台无法管理,网站也无法正常访问,如图5所示。
图5后台报错
(2)Webshell显示无法访问
此时输入Webshell的地址,会显示“Directory Listing Denied”,如图6所示,原因是该地址文件中出现了“#”,将“#”换成“%23”即可正常访问,出来熟悉的Webshell登录界面。
图6无法访问Webshell
(3)获取了Webshell也无法操作
将“#”换成“%23”即可正常访问Webshell,如图7所示,但输入正确的Webshell密码后,登录却重新指向“#http://localhost/data/artdb.asp”,显示“该页无法显示”错误信息,如图8。
图7 获取Webshell
图8 显示“该页无法显示”错误
(4)本地修改后门的提交地址
在本地将Webshell重命名为1.html,并使用UltraEdit打开该文件进行编辑,将action的地址修改为“http://localhost/data/%23artdb.asp”,如图9所示,也即在本地提交密码在服务器端进行验证。
图9 修改Webshell的action地址
(5)艰难的获得Webshell
打开1.html文件,输入密码进行Webshell密码验证,虽然验证通过后会再次出现“该页无法显示”的错误提示信息,但无关紧要,再次输入“http://localhost/data/%23artdb.asp”地址进行访问,出现熟悉的Webshell操作界面,如图10所示。
图10艰难的获得Webshell
5.通过挂马获得真正可操作的Webshell
虽然通过本地构建html登录服务器,通过了Webshell的登录验证,但在实际操作过程中却发现无法用该Webshell来浏览文件等操作,无奈之下抱着试一试的态度,对该网站进行挂马,如图11所示,挂马代码为一句话后门。需要注意的是,在挂马时需要指定文件路径和文件类型,插入一句话木马仅在asp文件中才能生效,因此文件类型仅仅选择asp,文件目录选择根目录。单击“开始执行”开始插入一句话后门到asp文件中,挂马成功后会给出详细的文件挂马信息,如图12所示,凡是文件前面有“√”的表示该文件成功插入一句话后门。
图11插入一句话后门来挂马
图12 获取成功挂马的文件
6.使用chopper进行一句话操作
使用中国菜刀进行一句话木马管理,添加一句话木马的详细地址和密码,如图13所示,保存后,双击该地址即可获得Webshell,如图14所示,通过中国菜刀可以方便的对网站文件、数据库等进行操作。
图13添加Webshell地址
图14获得一句话后门
7.思考与总结
(1)通过挂马即插入一句话木马来获得Webshell。在本案例中通过挂马来获得真正的Webshell,也算是一种创新。
(2)后面通过测试,可以直接上传一个一句话的mdb数据库,恢复数据备份后获得的地址“http://localhost/data/%23artdb.asp”,通过菜刀即可直接得到Webshell。
(3)如果cms系统中存在上传文件管理,则尝试修改地址参数来尝试列目录漏洞。
(4)在Webshell地址包含“#”且需要密码验证时,可以将shell保存为html文件,并修改action的地址来提交密码,从而绕过登录验证。