3 SQL注入漏洞利用与防御
- SQL是访问Oracle、MSQL、 Sybase、 Microsoft
SQL Server和 Informⅸ等数据库服务器的标准语言 - 大多Web应用都要与数据库交互,
- 大多数的Web编程语言也提供可编程的方法来与数据库交互,
- 如果未对用户可控的键值过滤,就带入数据库运行,那么极有可能产生SQL注入
- 自SQL数据库应用于Web应用时,
- SQL注入就已存在,
- SQL注入是影响互联网企业运营且最破坏性的漏洞之一,
- 泄露应用程序数据库中的敏感数据,
- 用户姓名、密码、地址和电话等易被利用的私人信息。
- 本章重点SQL注入的发展、成因、利用及其防御。
3.1发展历史
- SOL注入流行前,溢出是最有效的渗透方法。
- 但经历了数次严重的病毒事件后,管理员的安全意识普遍增强,大部分管理员开始及时安装补丁。
- 安装补丁之后,溢出程序便没有了用武之地。
- Web应用程序愈加被黑客关注,因为这些代码一般开发周期比较短,存在缺陷的概率大。
- 由此,Web开始成为了突破点。
- 至今Web渗透已经成为渗透测试中很重要的一部分。
- Web渗透測试中,SQL注入是一种危险系数很高且很常见的
- 因为Web程序用数据库来存储信息。
- SQL命令是前台与后合交互的窗口,使数据可传输到Web应用程序。
- 很多网站会利用用户输入的参数动态形成SQL查询。
- 攻击者在URL、表单,或者HTP请求头部输入恶意的SQL命令,
- 使攻击者可不受限制地访问目标站点的数据,如图3-1
3.3利用方式
- 目标网站可能存在注入URL
- http://www.test.com/showdetail.asp?id=49,
- 分别在URL后面添加and 1=1或and 1=2
- http://www.test.com/showdetail.asp?id=49 and1=1
- http://www.test.com/showdetail.asp?id=49 and1=2
- 如果这个站点存在注入的话,加上and 1=1,这个页面会返回正常,
- and 1=2会返错误,由此可判断这是一个注入点。
- 该URL存在SQL注入漏洞,可通过很多工具快速测试,
- Sql map和 Pangolin(穿山甲
3.3.1 Sqlmap的使用
1.简介
- 开源的SQL注入漏洞检测与利用工具,可进行多种数据库的注入检测,
- 能识别目标系统版本
- Sqlmap的常用命令
-u URL:检测URL是否存在基本的GET注入
– cookie:在发送请求时一并发送Cookie的值。
要检测的网站需Cookie信息才能访问或想对Cookie信息进行SQL注入检测时,都需用该参数提交相应Cookie数据。
–level(1-5):值越高检测的项目越多,–level3检测 Cookie是否存在注入
–risk:检测风险程度,越高风险越大,成功概率在某些情况下更高。
-p:指定注入参数。
-r:POST注入时指定存储POST请求的文件。
–dbs:列出网站的数据库。
–tables:列出网站数据库中的表。
–columns:列出网站数据库中的列。
–dump:输出数据。
-D(-T-C):指定数据库(表或列)。
–current-db:列出当前数据库。
–current-user:列出数据库用户。
–passwords:列出数据库密码Hash。
2.使用
- Kali Linux是基于Debian的 Linux发行版,
- 用于数字取证、渗透测试和黑客攻防的操作系统。
- Kali Linux中的 Sqlmap为例
- 打开终端输入: SQLmap-h,如图3-2
- 基本流程
- 终端输入sqlmap -u http://www.test.com/test.php?id=4,
- 检测是否存在注入。
- 经检测此URL可能存在的注入,如图3-3
3.3.2 Pangolin
1.简介
- 帮助渗透测试人员进行SQL注入测试的安全工具,如图3-10。
- 支持国内外主流的数据库,
- Access、DB2、 Informix、
- Microsoft SQL Server2000、2005、 2008、
- MYSQL、 Oracle、 Postgresql
- Sqlite3、 Sybase
- 全面的数据库支持。
- 独创的自动关键字分析能够减少人为操作,且判断结果准确。
- 独创的内容大小判断方法能够减少网络数据流量
- 最大化的 union操作能够极大地提高SQL注入速度。
- 预登录功能,在需要验证的情况下照样注入。
- 支持代理服务。
- 支持HTPS。
- 自定义HTTP标题头功能。
- 多种方法绕过防火墙过澽。
- 注入站(点)管理功能。
- 数据导出