20145228《网络对抗技术》Web安全基础实践
实验内容
理解常用网络攻击技术的基本原理。Webgoat实践下相关实验。
基础问题回答
(1)SQL注入攻击原理,如何防御
把SQL命令插入到网页请求表单中来欺骗服务器;限制输入sql语句的关键词
(2)XSS攻击的原理,如何防御
利用HTML以及用户端脚本语言注入攻击来获取cookie;过滤<script>
等XSS攻击可能涉及到的字符
(3)CSRF攻击原理,如何防御
攻击者伪装成用户,以用户的名义发送请求;利用随机验证码
实验过程
打开WebGoat:java -jar webgoat-container-7.0.1-war-exec.jar
等待一会就让它待在后台运行
然后在浏览器输入localhost:8080/WebGoat
进入
SQL字符串注入(String SQL Injection)
输入永真式'or 1='1
,得到了全部的信用卡号
数字型SQL注入(Numeric SQL Injection)
此题无法在前端注入,需要利用BurpSuite
·设置代理“Proxy”的“Options”选项
·添加一个新的端口8888,点击add
·设置浏览器的代理 如图
·然后回到题目,GO,再到burpsuite,出现了捕获到的数据:
·然后点击send to repeater ,修改station值从为101 为 101 or 1=1
,点击GO,
成功
命令注入(Command Injection)
·按上一个题目操作来,捕获到数据、
·send to Repeater,更改URL处为AccessControlMatrix.help"&&ifconfig"
储存型XSS(Stored XSS Attacks)
使用户访问时载入攻击者所期望的内容,直接输入<script>alert("you are a shabi.Had this been a real attack...hehe");</script>
反射型XSS(Reflected XSS Attacks)
欺骗用户自己去点击链接才能触发XSS代码,也就是说它的代码是不存在服务器中的,所以存储型XSS攻击危害更大。
跨站脚本钓鱼攻击(Phishing with XSS)
创建一个form,让用户在我们创建的form中填写用户名和密码,再添加一段JavaScript代码,读取用户输入的用户名和密码
Cross Site Request Forgery(CSRF)
·利用URL诱使其他用户点击,来触发CSRF攻击,我们可以用图片的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。
·输入<img src=' attack?Screen=网站的scr &menu=网站的menu &transferFunds=转钱数额 >
盲数字注入(Blind Numeric SQL Injection)
·尝试输入默认的101,发现是有效数字
·然后确定范围101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 100 );
若有效,说明值大于100
101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
若无效,说明值小于10000
然后按此方法确定
最后为2364
log Spoofing
·要求是欺骗登录成功
·所以利用回车%0d,换行符%0a
·输入5228%0d%0aLogin Succeeded
便可以假装进入
String SQL Injection
·刚开始输入' or 1 = 1 --
,这样是不行的,密码框被设置只能输入8位
·然后在页面点右键Inspect Element,将长度改为16,格式改为text便于我们查看自己的输入
·再次输入即可成功
Database Backdoors
·输入' or 1 = 1 --
,
·后面要求使用该SQL语句实现在myBackDoor表中添加新用户就在用户表里将新用户的邮箱改为题目固定的邮箱。
·然后加上101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHERE userid = NEW.userid;
实验收获
这次实验收获很多,学到了SQL、XSS、CSRF攻击的思路以及原理、方法,对网络攻击的方式更加多样化,理解了这些之后对我们如何防御这些攻击有了有较大帮助