Exp9 Web安全基础
Exp9 Web安全基础
20154305 齐帅
一、实验要求
本实践的目标理解常用网络攻击技术的基本原理。
Webgoat实践下相关实验:
【目录】
【第一部分 WebGoat 8.0】
-
1.WebGot
-
2.BurpSuite
-
3.Injection Flaws
-
4.Cross-Site Scripting
【第二部分 WebGoat 7.1】
-
1.Injection Flaws
1.1 Numeric Injection 1.2 LAB:SQL Injection 1.3 String SQL Injection 1.4 Log Spoofing 1.5 Database Backdoors 1.6 Blind Numeric SQL Injection
-
2.Cross-Site Scripting (XSS)
2.1 Phishing with XSS 2.2 Stored XSS Attacks 2.3 Reflected XSS Attacks
-
3.Cross Site Request Forgery(CSRF)
-
4.CSRF Prompt By-Pass
二、实践过程
【第一部分】
1.安装WebGoat 8.0
WebGoat是由著名的OWASP负责维护的一个漏洞百出的J2EE Web应用程序,这些漏洞并非程序中的bug,而是故意设计用来讲授Web应用程序安全课程的。这个应用程序提供了一个逼真的教学环境,为用户完成课程提供了有关的线索。
因为WebGoat是基于java开发的软件,所以需要JDK环境,还需要下载一个WebGoat.jar包.
至于下载这个WebGoat.jar包真的费了好久时间,因为网上找到的下载链接都被墙了,这个链接你可以试一下,最后费了九牛二虎之力翻了一下墙,下载好的jar包和JDK我放在了百度云。
看一眼哈,我真的FQ了,现在可是严打的情况,我免费FQ也不容易啊~
FQ软件叫蓝灯,还挺靠谱的,哈哈哈~
jar包下载好了以后放到kali里面,键入java -jar *.jar
等着就可啦,*为文件名。
打开火狐,键入127.0.0.1:8080/WebGoat
(注意大小写),注册一个用户就可以啦~
sad,是全英文的,我真的头大了~还需要依靠翻译软件理解不是人话的东西。。。
2.Injection Flaws
这个题就是你输入姓名会得到相关信息
如上,用万能公式弄一下就得到了所有人的信息啦~注意这个是字符串注入。
下一题是输入用户ID得到信息,同样输入一个永真式,数字注入,得到所有人的信息。
SQL注入进阶:
本题要求通过Smith的信息联合得到Dave的密码,根据提示信息可以得到存储用户密码的表名为 user_system_data,列为password。
先键入Smith' order by 7--
,如下,可以得到正确的反馈信息
键入Smith' order by 8--
,得到错误反馈,说明列数为7。
根据以上信息,键入Smith' union select null,null,null,null,null,null,null from user_system_data --
联合查询判断数据回显位置。
键入Smith' union select null,user_name,password,null,null,null,null from user_system_data --
获取Dave的密码。
输入Dave
的密码,正确~
3.BurpSuite
BurpSuite是用于攻击web应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。
通过代理服务器可以截获http报文进行修改。
kali自己带这个东西,程序里面搜索一下就行了,开启。
配置本机BurpSuite,在Proxy->Option中选择add添加项:
设置浏览器,进行代理:
4.Cross-Site Scripting
这个题就是要你打开两个相同的网页,然后插入一段JS代码,显示cookie,比较两个值是否相同:
经过比较,两个值是相同的,所以输入yes,通过~!
此题第一步是要求你在一个购物车支付界面面找到优惠券的代码,给你自己打折
如上,我们查看网页源代码,找到判断优惠券的函数。
找到优惠券具体函数:
查看优惠券的值:PLATINUM
在支付界面输入优惠券代码,完成第一步:
第二步,要求全单免费,直接把值改成0呀,哈哈哈。
可以看到真的不要钱了,完成。很神奇~
【第二部分】
因为第一部分WebGoat8.0版本题型进行了更新,再加上我的三脚猫英语真的做不来了,我认输,so,我下载了一个WebGoat 7.1版本,进行试验
1. Injection Flaws
1.1 Numeric Injection
要求能够显示所有地方的天气,与8.0版本不同,这个是下拉框的,所以不能直接在网页注入,需要修改网页代码。
搜索 Columbia,找到value,修改value=“101 or 1=1”
,注入一个永真式,成功!
1.2 LAB:SQL Injection
Stage 1:String SQL Injection
此题通过注入实现免密码登录,根据老师课上的演示,直接修改长度限制,然后进行注入
密码栏输入' or 1=1 --
成功!
Stage 3:Numeric SQL Injection
用员工账号登陆,进入员工页面后再通过SQL注入来查看老板的账户信息。
用上一步的方法进入员工账号:
修改网页源代码,把其中的value值改为101 or 1=1 order by salary desc --
,此方法很巧妙,按照工资高低排序
点击viewprofile按键
成功!
1.3 String SQL Injection
SQL注入查看所有人的信息,简单的万能注入:
成功!
1.4 Log Spoofing
此题目的是通过注入恶意字符串,按照规则伪造出一条日志:
在username输入:zh%0d%0aLogin Succeeded for username: admin
成功!
1.5 Database Backdoors
此题的要求是修改后台数据库数据给自己涨工资,然后在数据库中给自己造一个后门,把所有用户的邮箱换成自己的。
在输入userid的地方输入 101; update employee set salary=20154305
成功!
建后门:在输入框注入如下语句101;creat TRIGGER lxmBackDoor BEFORE insert on employee FOR EACH ROW BEGIN update employee SET email='20154305@besti.edu.cn' WHERE userid = NEW.userid
成功!
1.6 Blind Numeric SQL Injection
盲注,就是结果只有真和假,需要自己构合适的注入语句去暴力猜测:
输入语句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 4000 );
根据返回结果可知,pin值小于4000.
修改值,根据返回结果逐步求精:
pin值大于2000.
继续。。。
其实 BurpSuite 提供了暴力破解工具,但是我这个好像有点问题,抓不到包
最后结果是2364,当然不是一个一个试的啦~~
成功!
2. Cross-Site Scripting (XSS)
2.1 Phishing with XSS
此题要我们在搜索框中输入XSS攻击代码,利用XSS可以在已存在的页面中进一步添加元素的特点。我们先创建一个form,让受害人在我们创建的form中填写用户名和密码,再添加一段JavaScript代码,读取受害人输入的用户名和密码,并且将这些信息发送给http://localhost:8080/WebGoat/catcher?PROPERTY=yes
输入用户名和密码:
成功!
2.2 Stored XSS Attacks
此题用户A可以任意输入,然后用户B点击用户A的留言,触发XSS
title可以任意输入,Message输入消息,可以嵌入一段js代码,用户点击后即可触发,例如输入:<script>alert("Welcome Qsss");</script>
成功!
2.3 Reflected XSS Attacks
此题是一个反射型XSS攻击
在enter your three digit access code:处输入 <script>alert("Qsss attack succeed!");</script>
成功!
3. Cross Site Request Forgery(CSRF)
此题是要写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件
在Message里输入恶意代码:<iframe src="attack?Screen=282&menu=900&transferFunds=6666"></iframe>
点击提交,会出现这个消息,点击这个消息
成功!
4. CSRF Prompt By-Pass (不懂-_-)
此题包括了两个请求,一是转账请求,二是确认转账成功请求,即需要额外传递两个参数给服务器(transferFunds=4000,transferFunds=CONFIRM)
此题参照了学姐的步骤,但是没有出现进入转账的请求界面,参考答案给了一段代码,但是出来的是这个结果,有点蒙蒙的~~