项目五SQL注入攻击与防御5.1项目描述 5.2项目分析 5.3项目小结 5.4项目训练 5.5实训任务
5.1项目描述SVU?公司新开发了基于Web的用户管理系统,可以通过??使用用户?ID?进行信息查询渗透测试工程师小?D?负责测试该项功能的安全,并提出针对性的加固方案。因此,小?D?需要了解?SQL?注入攻击的基础知?识。本项目的具体要求如下:(1)测试注入点类型;(2)测试?SQL?注入绕过方法;(3)测试是否可以控制服务器;(4)针对测试结果,给出加固方?案。
5.2项目分析SQL?注入攻击是攻击者对数据库进行攻击的常用手段之一,也是最有效的攻击手段之一。这是因为,通过?Web?客户端注入的?SQL?命令与原有功能需要执行的?SQL?命令是相同的,浏览器与防火墙等安全设备不能阻断?SQL?命令的执行,数据库服务器同样无法阻断对注入的?SQL?命令的解析与执行。防御?SQL?注入攻击的方法是降低数据库连接用户的权限,对需要执行的?SQL?命令进行严格的代码审计。针对上述情况,本项目的任务布置如?下:
5.2项目分析项目目标(1)了解SQL注入的基本原理。(2)掌握不同数据库识别的方法与原理。(3)掌握不同数据库的特点。(4)利用SQL注入完成对MySQL数据库的渗透测试。(5)学会程序设计中防御SQL注入攻击的基本方法。
5.2项目实施流程项目任务列表(1)利用简单的SQL注入实验分析攻击原理。(2)利用PHP程序搜索实现对MySQL数据库的注入。(3)分析非文本框输入方式的SQL注入方法。(4)分析针对返回固定错误信息的渗透方法。(5)利用SQL注入漏洞对文件进行读/写。(6)利用sqlmap完成SQL注入。(7)防范SQL注入攻击。
5.2项目实施流程SQL注入攻击典型流程发现注入点数据库类型判断表结构判断获取数据获取账号上传Websehll提权(1)判断?Web?系统使用的脚本语言,发现注入点,并确定是否存在?SQL?注入漏?洞。(2)判断?Web?系统的数据库类?型。(3)判断数据库中表及相应字段的结?构。(4)构造注入语句,得到表中数据内?容。(5)查找网站管理员后台,使用得到的管理员账号和密码登?录。(6)结合其他漏洞,想办法上传一个?Webshell。(7)进一步提权,得到服务器的系统权?限。
5.2项目实施流程认识SQL注入SQL注入概念:所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。项目相关知识点
5.2项目实施流程SQL注入产生的原因基本所有电子商务应用程序都使用数据库来存储信息。不论是产品信息,账目信息还是其它类型的数据,数据库都是Web应用环境中非常重要的环节。SQL命令就是前端Web和后端数据库之间的接口,使得数据可以传递到Web应用程序,也可以从其中发送出来。需要对这些数据进行控制,保证用户只能得到授权给他的信息。可是,很多Web站点都会利用用户输入的参数动态的生成SQL查询要求,攻击者通过在URL、表格域,或者其他的输入域中输入自己的SQL命令,以此改变查询属性,骗过应用程序,从而可以对数据库进行不受限的访问。因为SQL查询经常用来进行验证、授权、订购、打印清单等,所以,允许攻击者任意提交SQL查询请求是非常危险的。通常,攻击者可以不经过授权,使用SQL输入从数据库中获取信息。
5.2项目实施流程SQL注入使用的时机当Web应用向后端的数据库提交输入时,就可能遭到SQL注入攻击。可以将SQL命令人为的输入到URL、表格域,或者其他一些动态生成的SQL查询语句的输入参数中,完成上述攻击。因为大多数的Web应用程序都依赖于数据库的海量存储和相互间的逻辑关系(用户权限许可,设置等),所以,每次的查询中都会存在大量的参数。
5.2项目实施流程MySQL介绍:SQL是结构化查询语言的简称,它是全球通用的标准数据库查询语言,主要用于关系型数据的操作和管理,如增加记录,删除记录,更改记录,查询记录等。常用命令如下:1)命令:select 功能:用于查询记录和赋值范例:selecti,j,kfromA(i,j,k是表A中仅有的列名)selecti=1(将i赋值为字符1)Select*fromA(含义同第一个例句)2)命令:update 功能:用于修改记录 范例:updateAseti=2wherei=1(修改A表中i=1的i值为2)
5.2项目实施流程3)命令:insert 功能:用于添加记录 范例:insertintoAvalues(1,2,3)(向A表中插入一条记录(i,j,k)对应为(1,2,3