liuyang000 2020-04-20
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
在写与数据库交互的语句时,直接将用户输入的数据跟sql语句进行拼接,没有过滤内容,导致用户可以修改整条语句的结构,产生不同的数据库操作语句,没有经过任何的过滤就直接放入数据库引擎执行。
攻击者可以直接或者间接的操作数据库。sql注入的危害,一直排行在owasp排行榜的top10高居不下,其危害性不言而喻,又能够直接获取数据又能够获取权限,但是注意危险行为,切莫越界。
网站中的每个参数值,思考是否与数据库进行交互。例如登陆页面,获取http头(user-agent/client-ip等),订单处理,查询功能
通读代码,寻找数据库相关语句,也可以结合相关功能点,针对性的进行寻找sql语句,黑白盒结,对量比较大的代码会显得效率高很多,主要是看对传入的参数是否直接进行拼接,对传入的参数是否进行了完整的过滤函数过滤。是否采用了其他sql语句编写模式,例如php中的pdo是否进行了预编译处理,当然预编译也不是完全安全的。
查询数据库内容,获取网站数据,获取后台登陆帐号密码登入后台,修改内容钓鱼等其他间接利用(权限较小时);利用数据库直接进行提权,写入一句话,执行系统命令(权限够大时)等等。
在互联网上的sql注入跟rce不一样,sql注入容易猜测网站跟数据库交互的位置,所以黑盒产出sql注入漏洞也是非常的多的,但是相对于一个比较安全的
网站而言,进行了一系列的函数导入以及过滤,也是会让黑盒变得非常头大,白盒的优势就是可以看到过滤了些什么,以及sql语句的编写方式,是否是拼接
进入数据库的等等,更加的具有针对性,就是代码内容会比较繁多。要进行上下的追踪查询。这里提一句,sqlmap一款非常不错的工具,以高自动化著称,
节省了渗透时的不少时间,也相信大部分的人都知道以及使用过,但是工具还是工具,我们需要理解原理以及寻找漏洞点。
常见的方式有好多,简单的就是直接导入一个现成的过滤函数,比如像是360safe函数又或者是dedecms采用的过滤函数都是非常的好用,但是也不代表是
完全安全的,比如你内容采用了编码进入,那么函数就会识别不出来而直接无效了。所以最重要的是编写sql语句时的规范,比如预编译等等操作,还有自带的
过滤函数,这里插一句,在大多数情况下,只需要过滤单引号其实就能抵挡大多数的sql注入,除非你是没有进行单引号包裹,直接进行拼接的数字型,那自然
过滤了单引号是没有用处的。对传入的值进行参数化也是一种防范方法,但是事总无绝对,例子就不举了,大佬都懂,入门没必要。还有就是不要以为买了waf
就高枕无忧了,waf并不能修补漏洞,waf在高手面前并没有什么阻挡能力,关于waf的讲解以后也会提及,写的不是很好,有错误请纠正。