这篇文章有点标题党了,一句话木马大家都不陌生,我想很多菜菜都体验过他的强大之处吧。提起一句话我们不由得想起了laker大侠啊。可以说laker大侠的一句话木马真是为我们广大脚本入侵者带来不少的方便。
今天我要讲述的这个入侵过程就和一句话木马密不可分,说到这大家应该都知道最终拿下这个站的的方法肯定是利用一句话了。不过这个站我还是费了好大周折才成功拿下一句话的。下面让我们一起回顾下整个过程吧。不会熟练使用一句话的小菜们可要认真看了,能熟练运用一句话的大虾们也不要骄傲,说不定下面的方法就是你没有尝试过的哦。
好了,事情起因还是以小菜拿到了网站后台没法拿webshell,找我求助来了,我们还是先到网站后台看看到底是什么样一个状况吧。网址我就不发出来了,免得有些人品不好的小菜们拿去搞破坏。
是一个什么电子商城的后台,不过我之前在前台看了下给人的感觉就是不怎么样,刚那小菜应该就是通过注入漏洞拿到的账号和密码。大约在后台看了下基本情况,寻找可利用的信息,有一个ewebeditor的编辑器,不过貌似是2.16以上版本的,不存在注入漏洞;另外有一个图片上传的功能;还有一个数据库备份恢复功能,大致这些地方都是可以利用的。不过ewebeditor我已经尝试了,默认登录界面删除,数据库名称更改不可下载。admin_style.asp文件验证方式独立,没有与主站后台使用同一种验证,有的网站的ewebeditor的后台验证与网站后台一直,这就导致登录网站后台后就可以直接访问编辑器后台程序。另外就是数据库备份,大家可以看下图:
可见该备份功能不可自定义源数据库路径名称及备份致的数数据库路径或名称,不过当时看到这里我心理面有了一个想法就是既然不可以自己定义路径及名称,我可以自己抓包然后更改数据库后提交。这个方法我以前在其他网站上有试过,而且成功过。主要就是针对类似的数据库备份功能,使用抓包工具抓下来然后更改后再用NC提交。经过测试是可行的。这个方法以后又机会给大家单独写个文章出来,这次这里就不多说了。当然这个网站也不一定能成功,我目的是要找到一个更方便的拿webshell的办法,如果找到我认为比这个更方便的办法我肯定会先尝试,如果不行我再来尝试刚才的想法了。
再继续往下看有一个数据库在线更名的功能:
而且还建议我使用asp的后缀,这不是明摆着让我拿webshell吗?呵呵!!不过当时我在这里还是犹豫了一下,心想要是贸然的把数据库更改成其他文件名了,一旦系统出错我有不知道原来的数据库名,那不就全玩完儿?不过犹豫归犹豫吧,我还是先看看利用这个功能拿webshell的前提条件吧。这个前提条件就是要找到数据库路径。当然要找数据库路径的话在这里直接改名说不定系统就爆出数据库路径了,不过为了安全起见没有十足把握还是不得冒然去更改数据库名称。
接下来找数据库路径的办法很简单直接用上面说到的数据库备份功能,然后抓包!!我在虚拟机上试了下,成功找到了数据库路径。捕获到数据库备份程序的数据包如下:
================================================================================
POST /admin/safe5.asp HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Referer: http://www.xxxxx.com/admin/safe5.asp
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)
Host: www.xxxx.com
Content-Length: 87
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ASPSESSIONIDQQCBSRCR=AMDHANDDDJGIMMMIGNELCGLF; buyok=temp=login&sql=&admin=mingdadz; ASPSESSIONIDQSBCTRDR=AEPLBLEDMNBOAIHMDMFIIBKP
oldpath=..%2Fdata%2Fshopbackupd.asp&DBname=shopbackup.mdb&Submit=%B1%B8%B7%DD&backup=ok
================================================================================
注意看最后的oldpath=这里..%2Fdata%2Fshopbackupd.asp就是网站当前使用的数据库路径了,后面的&DBname=shopbackup.mdb就是备份后的数据库路径。当前数据库路径中那个%2F就是“/”,所以数据库路径就是../data/shopbackupd.asp了,而当前执行的文件路径在admin目录下,“../”这个就表示上一级目录!所以最终的数据库路径就是http://www.xxxxx.com/data/shopbackupd.asp了!好了数据库路径找到了,而且还是asp格式的,那现在拿webshell的思路又换了,就没必要使用数据库改名那个功能了,可以直接在后台找个地方插入一句话木马。说归说,咱们还是先来看看数据库情况吧,怀着激动的心情直接访问数据库却返回以下错误!
丫丫的,看来是管理员在数据库中做了手脚,想让ASP程序在数据库中得不到正常的运行,所以他在数据库的最前面就搞一个ASP的错误出来,这样后面的ASP程序就得不到执行了,那我们就算插入一句话,得不到执行也是白搭啊。要想通过数据内容的方法终结掉他这个错误的话那几乎是不可能的啊。我试过输入%>这样的变形一句话都没能终结掉他这个错误。看来这个拿webshell的思路及那个改名都要宣告失败了。
既然这样那只好再寻他路了,这个时候还是想到利用数据库备份哪里,想抓包更改数据包再NC提交,不过这个还是要有前提条件的啦,前提是要上传一个图片格式的木马,然后再把数据包中源数据库路径替换成上传的图片马,再把备份成的数据库扩展名更改成asp、asa、cer或者cdx等服务器可以执行的格式。oldpath=..%2Fdata%2Fshopbackupd.asp&DBname=shopbackup.mdb也就是这部分,当然更改之前要计算好数据包的大小。想到这里,那现在就要去找个上传图片的地方了,这个可容易多了,网站有直接上传图片的程序,而且还有个编辑器,可以说上传图片马应该是没问题的了。
之前我也看过他网站自带的一个上传图片的程序,大约看了下没什么可利用的,这次再次打开,然后上传一个图片马。
提示上传成功了,点击预览上传的文件看看,结果看到的确是一篇空白。
丫丫的,杯具了。。。按理说上传成功访问应该是一个图片的X才对啊,怎么是一篇空白呢,我查看源码也是一片空白。丫丫的,用这个不行咱换ewebeditor上传图片再试试,结果还是一片空白,我郁闷了。难道是给杀了?然后我上传一个加密的asp马也是,难道我加密的也给杀?接着我又换图片里插入了一句话的上去也是一样,都是空白,而我上传正常的图片却没问题。我插呀。。最终试了半天,总结出来了,是图片里面带有符号的传上去都是空白。。。而不带符号的传上去都没问题。。我插还让不让人活了???图片木马传不上去就算那个抓包的数据库备份能成功又有啥用呢。。诶。到这里我几乎都想放弃了。
不过,就在我鼓捣这个上传图片地方的时候我偶然发现一个地方,很是让我兴奋!!看下图:
仔细看这两个图,上图是上传文件之前的截图,下图是上传文件之后的截图,发现有什么问题了吗?哈哈,如果你没发现让我来告诉你,仔细看上图中地址栏里面的地址,然后看下图中文件上传之后的路径。发现了吗?上图中有个0325,下图中图片名称就是0325,哈哈看到这里我也很兴奋,难道是图片的命名规则是根据上图中fupnam的值来命名的?如果真要是这样的话,那就可以利用IIS的解析漏洞了!为了验证我的想法,我吧路径更爱成了这样!然后上传插入了一句话客户端的图片文件,注意红线标注的地方。
提示成功上传,见下图:
看到了吗?多么淫荡的一个图片文件名啊。。。不过,在点击预览上传文件的时候看到的图片还是一片空白,我郁闷了。。。难道非要让我如此杯具??
做到这里,几乎又让我进入放弃的边缘,经过冷静思考后决定从上传的图片入手。之前有看到过一个教程中使用的插入有一句话客户端的图片能正常显示,而我自己的却是不能正常显示原图的。貌似那个教程中有提到过说那个图片是使用十六进制编辑过的。难道是在十六进制模式下插入的一句话客户段?而我插入一句话客户端的方式是直接用记事本打开图片文件,然后在结尾处插入。
经过如此一分析,我决定死马当活马医了,先找了一个正常显示的gif图片,然后用C32十六进制编辑,为了验证在十六进制模式下编辑后图片能正常显示,我首先在结尾随便插入了点内容,然后保存图片,查看图片显示正常。
如此折腾一番后确定在十六进制模式下编辑的图片能正常显示后,我就在最后直接写上了一句话客户端。然后再保存测试,依然正常显示,并且我还将图片名称更改成xxx.asp;xx.jpg格式,然后放到我电脑的ASP运行环境下测试,能正常使用一句话连接。
不过在对用十六进制编辑过后的图片用记事本打开查看依然能看到直接的明文,上文说过,那个上传图片对图片验证很严格,所有内容当中包含有符号的上传上去后访问都是空白。不知道这次能不能成功共呢。其实当时也没抱多大的希望上传了使用十六进制更改过的图片。上传成功后去访问,这次图片就老老实实的显示出来了。
紧接着就是让laker的一句话连接段上场了,抄出我美化过的laker一句话连接段,填上地址密码进行连接。
哈哈,看到了把,一句话成功的执行了,接下来拿webshell那就是易如反掌的事情了,总的来说这次拿下这个站主要的方法还是一句话+IIS解析漏洞了。不过这个一句话只经过特殊处理的哦,我想这个十六进制编辑一句话图片马对高手来说应该没什么了,不过对小菜们来说应该是一个很不错的技术啦。当然我之前也不知道的,以前拿类似的站我都是用直接用记事本编辑的一句话图片马做的,这次遇上的还是头一次啊。不过自己也有所收获。至少我以后的一句话图片马都会使用十六进制编辑过的,比之前用的肯定要高级点了。建议小菜们下来也自己做一个属于自己的一句话图片马吧,很实用的。