欢迎来到163文库! | 帮助中心 精品课件PPT、教案、教学设计、试题试卷、教学素材分享与下载!
163文库
全部分类
  • 办公、行业>
  • 幼教>
  • 小学>
  • 初中>
  • 高中>
  • 中职>
  • 大学>
  • 各类题库>
  • ImageVerifierCode 换一换
    首页 163文库 > 资源分类 > PPTX文档下载
    分享到微信 分享到微博 分享到QQ空间

    《网络工程技术实践》课件项目六任务二SQL注入漏洞检测与防范.pptx

    • 文档编号:7603763       资源大小:1.22MB        全文页数:37页
    • 资源格式: PPTX        下载积分:15文币     交易提醒:下载本文档,15文币将自动转入上传用户(momomo)的账号。
    微信登录下载
    快捷注册下载 游客一键下载
    账号登录下载
    二维码
    微信扫一扫登录
    下载资源需要15文币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    优惠套餐(点此详情)
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、试题类文档,标题没说有答案的,则无答案。带答案试题资料的主观题可能无答案。PPT文档的音视频可能无法播放。请谨慎下单,否则不予退换。
    3、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者搜狗浏览器、谷歌浏览器下载即可。。

    《网络工程技术实践》课件项目六任务二SQL注入漏洞检测与防范.pptx

    1、1 项目六 Web网站攻击与防范项目六 Web网站攻击与防范2 项目六 Web网站攻击与防范【项目概述】某安全运维公司接到一个任务,要求对客户公司的Web网站进行渗透测试,已知服务器IP地址为192.168.137.100/24。请找出该Web网站存在的安全漏洞并给出防范攻击的措施。【项目分析】Web是万维网(World Wide Web,WWW)的简称,它利用HTTP(HyperText Transfer Protocol,超文本传输协议)来建立用户与服务器之间的标准交互方式。常用的Web应用都是基于网页形式开展的。Web网站由多个网页组成,提供各种类型的网络服务。3 项目六 Web网站攻击

    2、与防范l早期的Web网站只有浏览功能。随着IT技术的发展,现在的Web网站逐渐发展到能支持用户进行自定义查询、支持用户登录并互动、在线交易等复杂业务。在这个过程中,需要添加额外的组件来实现上述功能,因此,目前的Web站点都会附带数据库及其他服务,从而实现对当前站点及用户信息的存储及复杂功能的支持。l基于HTTP协议的Web网站执行一次典型信息查询任务的工作流程如图6-1所示。4 项目六 Web网站攻击与防范图 6-1 Web网站执行一次信息查询的工作流程5 项目六 Web网站攻击与防范l图中所示的流程与真实的大型网站应用流程并不完全一致,只用于说明基本原理。因为大型网站要同时为数以千万的用户请

    3、求提供服务,仅通过一台服务器根本无法支持海量的用户访问请求,所以会利用负载均衡、CDN、云技术、分布式数据库等技术来应对大量用户的并发访问。然而,所涉及的所有环节均可能存在安全隐患,其中一项服务产生问题都可能影响用户的正常使用或者危害Web服务器的安全。因此,要把Web系统中的所有组件都纳入安全防护体系之中。l目前,大多数企业都会拥有自己的Web网站,网站成为了企业对外宣传和业务开展的重要渠道。黑客也常常盯住企业的网站,希望通过利用企业网站的漏洞控制企业网站,进而控制企业的服务器,从中获得企业内部信息的控制权。常见的Web安全漏洞包括:SQL注入漏洞、XSS漏洞、命令执行漏洞、CSRF漏洞、文

    4、件上传漏洞、文件包含漏洞等,还有一些业务层面的逻辑漏洞。渗透测试人员需要利用技术发现这些漏洞,并给出防御措施,才能保证Web网站的安全运行。6 项目六 Web网站攻击与防范项目主要内容:任务一 Web漏洞检测任务二 SQL注入漏洞检测与防范任务三 XSS漏洞检测及防范任务四 文件上传漏洞检测及防范7 项目六 Web网站攻击与防范任务二 SQL注入漏洞检测与防范8 项目六 Web网站攻击与防范l任务描述 根据任务一中对目标网站可能存在漏洞的扫描结果,渗透测试团队发现该网站的index.php页面存在SQL注入漏洞的风险。请使用Sqlmap进一步检测该页面SQL注入漏洞的情况,并能出防范措施。任务

    5、分析l1SQL注入攻击的原理lSQL注入攻击是指攻击者通过把恶意SQL命令插入到Web表单的输入域或页面请求的查询字符串中,并且插入的恶意SQL命令会导致原有SQL语句作用发生改变,从而达到欺骗服务器执行恶意的SQL命令的一种攻击方式。l在网站应用中,如果用户查询某个信息或者进行订单查询等业务时,用户提交相关查询参数,服务器接收到参数后进行处理,再将处理后的参数提交给数据库进行查询。之后,将数据库返回的结果显示在页面上,这样就完成了一次查询过程。9 项目六 Web网站攻击与防范l标准的Web网站数据库查询过程如图6-20所示。图6-20 Web网站数据库查询功能基本流程10 项目六 Web网站

    6、攻击与防范lSQL注入漏洞产生的原因是用户提交了非法的参数。如果用户提交的数据中,不仅仅包含正常的查询信息,而且在查询信息后面拼接了其他查询语句,恰好服务器没有对用户输入的参数进行有效过滤,那么数据库就会根据用户提交的语句进行查询,返回更多的信息。l本任务的目标网站index.php页面实现用户信息查询的功能。当用户访问此页面时,可输入用户名并提交查询。系统会将用户提交的用户名对应的“用户ID”、“用户名”、“注册时间”展示出来。其代码如下:11 项目六 Web网站攻击与防范llSQL注入测试环境l请输入用户名:llllll?phpl$db=mysqli_connect(localhost,r

    7、oot,root,user);lif(!$db)llecho 数据库连接失败;lexit();l12 项目六 Web网站攻击与防范lif(isset($_GETuname)l$name=$_GETuname;l$sql=select*from userinfo where name=.$name.;l echo 当前的查询语句是:.$sql.;l$result=mysqli_query($db,$sql);l l while($row=mysqli_fetch_array($result)l l echo 用户ID:.$rowID.;l echo 用户名:.$rowname.;l echo 注

    8、册时间:.$rowlogintime.;l llmysqli_close($db);l?l13 项目六 Web网站攻击与防范l我们以查询“Mike”为例,其页面访问结果如图6-21所示。图6-21 查询用户“Mike”的结果14 项目六 Web网站攻击与防范l该页面作为一个SQL注入攻击的测试环境,为了让用户更清楚地了解后台查询数据库的SQL语句是如果构成的,特意在网页中将该SQL语句显示出来,正常的网站是不会显示该语句的。通过该语句,我们可以看到,用户输入的用户名“Mike”,会作为查询的条件拼接成SQL语句的一部分。因为在后台程序中有这样两条语句:l$name=$_GETuname;l$s

    9、ql=select*from userinfo where name=.$name.;l其中第一条语句是获得文件框中用户输入的内容,并存放到$name这个变量中。第二条语句是将$name变量拼接到SQL语句中,并将该语句传递给$sql变量以方便后续的执行。于是,如果用户输入的是“Mike”,则该语句实际上就是:l$sql=select*from userinfo where name=Mike;15 项目六 Web网站攻击与防范l那么如果有别有用心的用户,不按要求输入正常的用户名,而输入了别的信息,又会有怎样的结果呢?如图6-22所示。图6-22 用户输入非正常信息的查询结果16 项目六 We

    10、b网站攻击与防范l从图6-22中我们可以看到,当用户输入了“or 1=1#”这个非正常的用户名,系统不仅没有提示输入错误,反而将数据库中所有用户的信息都显示了出来。原因在于,当用户输入的信息存入$name变量后,由该变量拼接成的SQL语句如下:l$sql=select*from userinfo where name=or 1=1#;l该SQL语句的查询条件变成了“name=or 1=1”,虽然“name=”这个条件并没有给出查询用户的名字,但是“1=1”这个条件恒为真,并且这两个条件之间的“or”连接符表示的是逻辑“或”的关系,即只要有一个条件为真,该条件即为真。因为“1=1”这个条件恒为真

    11、,所以这个“name=or 1=1”这个查询条件就为真,就可以进行数据库的查询。既然没有给出查询用户的名字,数据库就把所有的数据都显示出来。这其实就是我们通常所说的“拖库攻击”。17 项目六 Web网站攻击与防范l通过上面的例子,我们可以看到,由于网站程序对用户输入的信息没有作安全性检查,将用户的输入信息直接拿来拼接成SQL语句进行数据库的查询,从而暴露了数据库的信息。这就是SQL注入攻击的原理。lSQL注入攻击已经多年蝉联Web网站高危漏洞的前三名。SQL注入会直接威胁网站数据的数据安全,因为它可实现任意数据查询,严重时会发生“拖库”的高危行为。更有甚者,如果数据库开启了写权限,攻击者可利用

    12、数据库的写功能及特定函数,实现木马自动部署、系统提权等后续攻击。18 项目六 Web网站攻击与防范l2SQL注入攻击的分类。l从攻击手段的角度,SQL注入攻击通常会根据攻击是否使用工具分为两种:l(1)使用工具发起的攻击。SQL注入常见的攻击工具有“啊D小子”、“havji”、“SQLmap”、“pangolin”等,这些工具用法简单,能提供清晰的UI界面,并自带扫描功能,可自动寻找注入点,自动查表名、列名、字段名,并可直接注入,可查到数据库的信息。l(2)手工发起的攻击。也称为手工注入,就是利用攻击者的知识、技术和经验,通过在交互点手工输入命令的方式来完成查找注入点、确定回显位及字段数、注入

    13、并获取数据的完整流程。l在注入过程中,根据前台的数据是否回显,可以将手工注入又分为:回显注入和盲注。l回显注入是当用户发起查询请求后,服务器将查询结果返回到页面中进行显示,典型场景为查询某篇文章、查询某个信息等。19 项目六 Web网站攻击与防范l盲注的特点是用户发起的请求(不一定是查询)服务器接收到后在数据库进行相应操作,并根据返回结果执行后续流程。在这个过程中,服务器并不会将查询结果返回到页面进行显示。典型场景为在用户注册时,只提示用户名是否被注册,并不会返回数据。l3SQL注入漏洞测试流程。lSQL注入攻击的首要目的是获取后台数据库中的关键数据。因此,无论是使用工具攻击还是手工注入,漏洞

    14、测试的流程都大致相同,一般为:l(1)判断Web系统使用的编程语言,查找注入点。就是看某个页面是否存在可实现SQL注入攻击的入口。如此次任务网页中输入用户名的文本框就是注入点。20 项目六 Web网站攻击与防范l(2)判断数据库类型。在实际应用中,SQL注入漏洞产生的原因千差万别,这与所用的数据库架构、版本均有关系。目前数据库可以分为关系型数据库,如Oracle、MySQL、SQL Server、Access等,和非关系型数据库(NoSQL)如MongoDB等。因此,在实施SQL注入攻击测试之前要先确定数据库的类型,这样才可以有针对性地进行攻击测试。l(3)判断数据库中表及相应字段的结构。要想

    15、获得数据库中的关键数据,就需要对数据库的结构非常清楚,这样才知道所需要的关键数据在哪个表的哪些字段中。l(4)构造注入语句,得到表中的关键数据内容。l(5)后续攻击。所获得的关键数据内容往往包含后台管理员的账号和密码,这样就能登录网站的后台,再结合其他漏洞,上传WebShell并保持持续连接,或者进一步提权得到服务器的系统权限。21 项目六 Web网站攻击与防范l4SQL注入攻击测试工具Sqlmap。lSqlmap 是一个开源的渗透测试工具,它可以自动检测和利用 SQL 注入漏洞并接管数据库服务器。它具有强大的检测引擎,同时有众多功能,包括数据库指纹识别、从数据库中获取数据、访问底层文件系统以

    16、及在操作系统上外带连接执行命令。l官方网站为:https:/sqlmap.org/。22 项目六 Web网站攻击与防范l任务实施本次任务实施的拓扑示意图如图6-23所示。图6-23 SQL注入漏洞检测与防范拓扑示意图23 项目六 Web网站攻击与防范l1使用Sqlmap工具对目标网站进行SQL注入漏洞测试。l步骤1 确定目标网页的URL地址。通过正常输入用户名访问页面,我们可以得到该页面的URL地址,如图6-24所示。24 项目六 Web网站攻击与防范图6-24 获得目标网页的URL地址25 项目六 Web网站攻击与防范l步骤2 使用Sqlmap测试该页面是否是注入点,命令格式为:lsqlma

    17、p -u “URL”l如图6-25、图6-26所示。在测试的过程中如果已发现了可能的数据库类型,会询问是否跳过测试其他数据库类型的步骤。为提高测试的效率,我们选择“y(是)”。同时还会询问在接下来的测试中是否包含针对相应数据库扩展提供的级别和风险值,同样选择“y(是)”。在测试的最后,如果已经发现了一个注入点,会询问是否还要测试其他的注入点。一般情况下,只需要一个注入点即可。因此,我们就不再测试其他的注入点,选择“n(否)”。26 项目六 Web网站攻击与防范图6-25 Sqlmap测试是否存在注入点(一)27 项目六 Web网站攻击与防范图6-26 Sqlmap测试是否存在注入点(二)28

    18、项目六 Web网站攻击与防范l步骤3 获取该网站的后台数据库名,如图6-27、图6-28所示。命令格式为:lsqlmap u “URL”-current-db图6-27 获取后台数据库名(一)29 项目六 Web网站攻击与防范图6-28 获取后台数据库名(二)30 项目六 Web网站攻击与防范l步骤4 获取数据库中的表,如图6-29、图6-30所示。命令格式为:lsqlmap u “URL”-D 数据库名 -tables图6-29 获取数据库中的表名(一)31 项目六 Web网站攻击与防范图6-30 获取数据库中的表名(二)32 项目六 Web网站攻击与防范l步骤5 获取表中的字段名,如图6-

    19、31、图6-32所示。命令格式为:lsqlmap u “URL”-D 数据库名 -T 表名 -columns图6-31 获取表中的字段名(一)33 项目六 Web网站攻击与防范图6-32 获取表中的字段名(二)34 项目六 Web网站攻击与防范l步骤6 获取关键字段的数据。根据步骤5中所获取的字段名可知,最关键的字段是“name”和“password”,因此,我们就获取这两个字段的数据值,如图6-33、图6-34所示。命令格式为:lsqlmap u “URL”-D 数据库名 -T 表名 -C 字段1,字段2,-dump图6-33 获取关键字段的数据(一)35 项目六 Web网站攻击与防范图6-

    20、34 获取关键字段的数据(二)小贴士:Kali系统中已经安装了Sqlmap软件,可以直接使用。36 项目六 Web网站攻击与防范l2SQL注入攻击防范措施l在存在SQL注入的情况下,如果数据库中采用明文存放用户名和密码,则即使再复杂的密码也无法阻止密码的破解。但是如果采用MD5加密,则设置满足复杂性要求的密码可以减少被破解的可能。不过,防止SQL注入的根本措施是应该在程序中对用户的输入进行检测。总的来说有以下几点:l(1)要对用户的输入进行安全性检查。包括对输入数据的类型、长度进行检查,对非法关键字进行设置黑名单进行过滤,对诸如单引号、双引号、反斜线()等符号进行转义。l(2)不要使用动态拼接SQL语句。可以使用参数化的SQL或者直接使用存储过程进行数据查询存取。l(3)不要使用管理员权限的数据库连接。为每个应用使用单独的权限有限的数据库连接。l(4)应用的异常信息应该给出尽可能少的提示。最好使用自定义的错误信息对原始错误信息进行包装,把异常信息存放在独立的表中。37 项目六 Web网站攻击与防范THANKS


    注意事项

    本文(《网络工程技术实践》课件项目六任务二SQL注入漏洞检测与防范.pptx)为本站会员(momomo)主动上传,其收益全归该用户,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!




    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库