20145217《网络对抗》 Web安全基础实践

20145217《网络对抗》 Web安全基础实践

一、实践任务

本实践的目标理解常用网络攻击技术的基本原理。Webgoat实践下相关实验。

二、实验后回答问题

  • (1)SQL注入攻击原理,如何防御?

SQL注入是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。

要做到防微杜渐,最重要的是清理数据和验证数据,这两项工作不能出现懈怠。

  • (2)XSS攻击的原理,如何防御?

XSS是什么?它的全名是:Cross-site scripting,为了和CSS层叠样式表区分所以取名XSS。是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。

当恶意代码值被作为某一标签的内容显示:在不需要html输入的地方对html 标签及一些特殊字符( ” < > & 等等 )做过滤,将其转化为不被浏览器解释执行的字符。
当恶意代码被作为某一标签的属性显示,通过用 “将属性截断来开辟新的属性或恶意方法:属性本身存在的 单引号和双引号都需要进行转码;对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。

  • (3)CSRF攻击原理,如何防御?

CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性。攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。

目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。

三、URL攻击实验

实验过程

java -jar webgoat-container-7.0.1-war-exec.jar运行WebGoat,在浏览器上访问localhost:8080/WebGoat,进入WebGoat之后,进行题目练习。

  • 1.Blind String SQL Injection:直接使用用真式。

  • 2.Phishing with XSS:在搜索框中输入XSS攻击代码




    This feature requires account login:



    Enter Username:

    Enter Password:




下方会出现改攻击网页,填入信息提交,会发现捕获反馈的信息

  • 3.Stored XSS Attacks:在title里随便输入,然后在message中输入如下代码:,提交后在下方部分查看该帖子然后就会出现如下结果:

  • 4.Reflected XSS Attacks:将带有攻击性的URL输入,依旧输入,就会弹出如下对话框

  • 5.Cross Site Request Forgery(CSRF):在message框中输入这样一串代码:,具体参数在下方会有;提交后点击下方红字会出现消息内容并发生转账。

  • 6.CSRF Prompt By-Pass:在浏览器中手动输入URL:localhost:8080/WebGoat/attack?Screen=265&menu=900&transferFunds=5000进入确认转账请求页面,参数在题目下方有。点击了CONFIRM按钮之后,再在浏览器中输入URL:localhost:8080/WebGoat/attack?Screen=265&menu=900&transferFunds=CONFIRM,成功转账:

  • 7.Command Injection:用Firebug对源代码进行修改,在BackDoors.help旁边加上"& netstat -an & ipconfig",然后选在该选项,view可以看到系统网络连接情况:

  • 8.Numeric SQL Injection:用Firebug对源代码进行修改在任意一个值旁边加上or 1=1,然后对应选择查看就可以看到所有天气信息:

  • 9.Log Spoofing:在User Name中输入20145217%0d%0aLogin Succeeded for username: admin,登陆即成功:

  • 10.Database Backdoors:先输入一个数据入102查询,输入注入语句:101; update employee set salary=5217,成功把该用户的工资改到了5217,再使用语句101;CREATE TRIGGER lxmBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20145217@163.com' WHERE userid = NEW.userid创建一个后门,把表中所有的邮箱和用户ID都设为我的:

  • 11.LAB:SQL Injection(Stage 1:String SQL Injection):直接使用用真式失败,原因是不够长,修改最大长度限制后即可成功:

posted @ 2017-05-19 15:55  joke-bright  阅读(156)  评论(0编辑  收藏  举报