白帽子讲web安全-注入攻击

前言

一个安全设计原则:数据与代码分离原则。他就是专门为了解决注入攻击而产生的。

注入攻击的本质,是把用户输入的数据当做代码执行,有两个关键条件:第一个是用户能够控制输入,第二个是原本程序要执行的代码,拼接了用户输入的数据。

SQL注入

拼接过程很重要,正因此才导致了代码的注入。

在SQL注入的过程中,如果网站的web服务器开启了错误回显,则会为攻击者提供极大地便利。

1盲注

回显关闭后,攻击者必须找到一个方法来验证注入的SQL语句是否得到执行。

通过简单的条件语句,1=2,1=1,根据页面返回是否发生变化,来判断SQL语句是否得到执行,判断SQL注入漏洞是否存在。

2Timing Attack

利用BENCHMARK()函数,可以让同一函数执行很多次,使得结果返回时间比平时要长,通过时间长短的比较,可以判断注入语句是否得到执行成功。

----------找到了SQL注入漏洞,仅仅是一个开始,要发起一个完整的攻击,还有很多事情要做。

数据库攻击技巧

1常见的攻击技巧

猜测数据对应版本技巧,确认表名技巧,读写文件技巧,

2命令执行

在MySQL中,除了导出webshell间接地执行命令外,还可以利用用户自定义函数的技巧,即UDF来执行命令。

3攻击存储过程

在my sqlserver  中,存储过程xp_cmdshell可谓臭名昭著,无数黑客利用他在讲到注入sql server时都是使用它执行系统命令。

除了利用存储过程直接攻击之外,存储过程本身也可能存在注入漏洞。

4 编码问题

要解决这个问题就是要统一数据库,操作系统,web应用所使用的字符集,以避免各层对字符的理解存在差异,统一设置为UTF-8是一个很好的方法。

5SQL Column Truncation

正确的防御SQL注入

要做的就是两件事:

找到所有的SQL注入漏洞

修补这些漏洞。

像       使用预编译语句,绑定变量。

           使用存储过程,使用安全的存储过程来对抗注入。

           检查数据类型

           使用安全函数

 数据库自身角度。用该使用最小权限原则,避免web应用直接使用root,dbowner等高级权限账户连接数据库。

其他注入攻击

xml注入,代码注入,CRLF注入("\r","\n");

你可能感兴趣的:(白帽子讲web安全-注入攻击)