1 概述
SQL注入是影响企业运营最具破坏力的漏洞之一,他会泄露保存在应用程序数据库中的敏感信息,包括用户名,口令,地址,电话号码以及信用卡明细等容易被利用的信息。
SQL注入是这样一种漏洞:应用程序在后台想 数据库传递SQL语句查询时,如果为攻击者提供了影响该查询的能力,就会引发SQL注入。SQL注入不只是一种只会影响Web应用程序的漏洞,对于任何从不可信源获取输入的代码来说,如果使用该输入来构造动态SQL语句时,就很可能受到攻击。
目录
2 基本原理
SQL起源于70年代的IBM实验室。SQL被用来让应用程序与数据库之间进行通信。SQL使用如下的4种语言来对数据库进行操作
- SELECT -从数据库中获得一条记录
- INSERT-向数据库中插入一条记录
- DELETE-从数据库中删除一条记录
- UPDATE-从数据库中更新或者改变当前记录
当用户提交的语句被用作数据库的查询语句时SQL就能够发生。比如当用户被网站认证授权,用户发送一个带有”用户名”和”密码”的信息,用户名/密码就与存放在数据库中的内容进行核对。如果相同的话用户就被允许登录,否则用户登录失败。以下是一个在后台进行登录的例子。
SELECT * FROM user WHERE username='$username' AND password='$password'
这个语句简单地指明了从user的表中查询用户名和username相等的,并且密码和password相等的。所以,如果用户发送用户名为”admin”,并且密码为”12345”,那么SQL语句被创建如下:
SELECT * FROM user WHERE username='admin' AND password ='12345'
那么,如果用户输入’ or ‘1’=’1,第一个引号会终止输入的字符串,剩下的会被当做SQL语句,并且在SQL语句中1=1恒为真,这就能够让我们绕过注册机制。
SELECT * FROM user WHERE username='admin' AND password =''or '1'='1'
上述是一个SQL注入的简单地例子,然而在实际过程中,SQL注入比这要复杂的多。在我们的渗透测试中,大多数时候我们有一个非常紧凑的计划表,所以这个时候我们需要一个自动化的攻击来为我们进行注入攻击。
SQLMAP就是一能够利用(系统)脆弱性的工具。它是开源的,并经常被用来在Python写的脆弱的DBMS上进行入侵的渗透测试。它能够检测并利用SQL上的漏洞。
3 测试环境搭建
在虚拟环境中运行试用版的操作系统,搭建一个有漏洞的web应用程序,安装Kali LInux,执行渗透测试。所需条件:
- VMware Workstation
- Windows XP系统映像
- Kali Linux虚拟映像
3.1 在VMware Workstation上运行Windows试用版操作系统
一旦我们下载并安装了VMware Workstation,下一步就是下载并安装Windows XP, Vista, Server 2003,因为这些系统有许多著名的安全问题。XP:http://pcriver.com/operating-systems/windows-xp-professional-iso-download/ Serial key: FVMK4-6DD4B-26MB4-74JB2-R4XWM