20145325张梓靖 《网络对抗技术》 Web安全基础实践

  

实验内容

  • 使用webgoat进行XSS攻击、CSRF攻击、SQL注入
  • XSS攻击:Stored XSS Attacks、Reflected XSS Attacks
  • CSRF攻击:Cross SSite Request Forgery(CSRF)、CSRF Prompt By-Pass
  • SQL注入攻击:Numeric SQL Injection、Log Spoofing、String SQL Injection、Database Backdoors step1、Database Backdoors step2、Blind Numeric SQL Injection

基础问题回答

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

    - SQL注入是指攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。简单来说,即把SQL语句当做用户名等输入正常网页中。

    - 防御SQL注入就需要在web设计中,设计成用户能够输入的内容是不能直接放到后台要执行的SQL语句里的,或者让web应用程序对用户输入数据的合法性进行判断,不合法则不允许提交。
  2. XSS攻击的原理,如何防御

    - 通过对网页注入可执行代码(如HTML、javascript)且成功地被浏览器执行,以达到攻击的目的

    - 与防御SQL注入一样,可以对用户输入的数据进行合法性验证,即对输入参数进行过滤,与可执行代码、特殊字符相关的不允许通过
  3. CSRF攻击原理,如何防御

    - 通过伪装来自受信任用户的请求来利用受信任的网站,即受害用户登录受信任网站后,在本地生成了COOKIE而又在不登出该网站的情况下,访问了危险网站,而此时访问的危险网站可能就已经写入了利用你的身份进行而恶意操作的代码

    - 因为CSRF攻击主要利用的就是受害用户的身份,即COOKIE,所以可以对web应用时进行设置,不长时间保存COOKIE等,同时我们也要尽量避免访问危险网站

实验总结与体会

    在本次实验中,使用了webgoat来分别进行XSS攻击、CSRF攻击、SQL注入的实验测试。在进行SQL测试时,如果输入框为下拉框,那么我们可以使用kail里的burpsuite来作为网页代理,对传送的网页内容进行编辑以后再发到服务器,如果是text的输入框,直接输入就好;XSS与CSRF有些类似,都是在合法用户的身份下进行操作,只不过XSS是直接利用站点内的信任用户,而CSRF是通过伪装来自受信任用户的请求来利用受信任的网站。之所以能够进行这些攻击,主要是因为我们的web设计有漏洞,或者说没有想到会有这些情况的发生,所以我们正在进行各种代码设计的时候,一定要做的就是对用户输入进行合法性验证,通过了才提交到后台进行处理,没通过则不处理。

实践过程记录

XSS攻击

  • Stored XSS Attacks

  • 该实验目的是在新建帖子的message里进行XSS攻击,即随意写任何在浏览器中可被执行代码,创建成功后点击写好的帖子即被攻击

  • 这里写入massage内容为<script>alert("It's just funning!");</script>

  • Reflected XSS Attacks

  • 该实验同样是在输入框中输入可执行代码,提交后被攻击

  • 这里是在ACCESS CODE 框里填入获取COOKIE的javascript代码<script>alert(document.cookie);</script>

CSRF攻击

  • Cross SSite Request Forgery(CSRF)

  • 该实验为在新建邮件里写入可以更改由题目要求的attack的src、menu的transferFunds数值参数

  • 可选用html里的iframe模块,可自动连接打开所标示网页

  • 这里在message里写入的内容为<iframe src="attack?Screen=284&menu=900&transferFunds=5000"></iframe>

  • CSRF Prompt By-Pass

  • 该实验与上个实验类似,同样是通过邮件的方式进行恶意请求,只不过这里不仅是对transferFunds数值参数进行了变化,还对这个过程的进行了请求确认,所以需要两个iframe模块,并且由题目可知在请求确认的模块里transferFunds参数的值

  • 这里在message里写入内容为

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

SQL注入攻击

  • Numeric SQL Injection

  • 该实验为使用SQL注入语句,将原本选中一个地点只显示一个地点的天气状况变为选中一个地点显示所有地点天气信息

  • 在kail中可使用burpsuite作为网页代理,对传送的网页内容进行编辑以后再发到服务器

  • 这里就选用burpsuite,在地点_id后增加or 1=1;--,因此处的地点_id是数值型的,所以不用在开始加单引号

  • Log Spoofing

  • 该实验为在用户名处通过使用%0d%0a(回车换行)以及文字内容输入来使人迷惑,虽然有成功登陆的文字信息,但实质上是登录失败的

  • 这里的user name处写入的内容是%0d%0aLogin succeeded !admin

  • String SQL Injection

  • 该实验和Numeric SQL Injection类似,同样是要求原本只能查到某一个人的信息,通过SQL语句的注入使整张表都显示出来

  • 着这里的last name写入的内容是' or 1=1;--,因为last name是字符型的,所以需要在开始加上单引号

  • Database Backdoors step1

  • 该实验是要在user ID中实现多条SQL语句的注入,其中101是题目给的已存在的账户ID

  • 这里第一次填入的内容是or 1=1;update employee set salary=53250;

  • 虽然实验成功通过了,但是并没有按我所想的,不仅把用户表的所有内容显示出来同时把工资值变化了

  • 发现是因为在or之前没打空格或任意用户名加空格,它以为是有个叫or的用户,1=1它也读不懂,但因为有后面的分号,它还是知道有多句SQL,所以实验通过

  • 我们重新将user ID输入101 or 1=1;update employee set salary=53250;

  • Database Backdoors step2

  • 该实验所要使用的SQL语句已经在题目中给出,意思是使用该SQL语句实现在myBackDoor表中一旦添加新用户那么就在用户表里将新用户的邮箱改为题目固定的邮箱

  • 在user ID输入的内容为101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHERE userid = NEW.userid;

  • Blind Numeric SQL Injection

  • 该实验目的是要找的cc_number为1111222233334444的pin大小(题目已给出pin为数值),输入正常用户ID作用是判断这个用户是否存在

  • 我们首先测试下效果,101是题目给的已知用户ID

  • 通过上一实验我们可以知道100用户并不存在

  • 效果知道了后,根据题目,我们知道pin是个数值,要知道cc_number对应的pin,则只有一个一个尝试,先使用<、>来大概确定范围(同and一起,and前为存在的用户ID,例如101,一旦and后面的语句,即判断pin的值大小成立,则下面就会显示存在用户,然后继续缩小范围进行查找,直到找到唯一确定的,即使用=号时成立)

  • 由博客后面的学习指导Webgoat学习笔记之习题破解可以知道,所求的对应pin就是2367

  • 直接在numer框中输入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') = 2364 );

  • 可以看到用户存在的显示,即成功找到cc_number为1111222233334444的pin值

  • 题目说找到对应pin值后,将值输入框中,该实验即通过

学习指导参考

SQL注入攻击原理以及基本方法

xss攻击原理与解决方法

浅谈CSRF攻击方式

Webgoat学习笔记之习题破解

20145325张梓靖 《网络对抗技术》 Web安全基础实践的更多相关文章

  1. 20145308 《网络对抗》Web安全基础实践 学习总结

    20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...

  2. 20145326蔡馨熤《网络对抗》—— Web安全基础实践

    20145326蔡馨熤<网络对抗>—— Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程 ...

  3. 20145216史婧瑶《网络对抗》Web安全基础实践

    20145216史婧瑶<网络对抗>Web安全基础实践 实验问题回答 (1)SQL注入攻击原理,如何防御 攻击原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入web应用程序,而这些 ...

  4. 20145227鄢曼君《网络对抗》Web安全基础实践

    20145227鄢曼君<网络对抗>Web安全基础实践 实验后回答问题 1.SQL注入攻击原理,如何防御? SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是 ...

  5. 20145217《网络对抗》 Web安全基础实践

    20145217<网络对抗> Web安全基础实践 一.实践任务 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 二.实验后回答问题 (1)SQL注入攻击原理,如 ...

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

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

  7. 20155206《网络对抗》Web安全基础实践

    20155206<网络对抗>Web安全基础实践 实验后问题回答 (1)SQL注入攻击原理,如何防御 攻击原理:SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查 ...

  8. 20155211 网络对抗 Exp9 Web安全基础实践

    20155211 网络对抗 Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语 ...

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

    20155305<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

  10. 20155307《网络对抗》Web安全基础实践

    20155307<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

随机推荐

  1. PyQT5速成教程-3 布局管理

    本文由 沈庆阳 所有,转载请与作者取得联系! 布局(Layout)管理 Qt Designer中,在工具箱中最上方可以看到有4种布局.分别是垂直布局.水平布局.栅格布局和表单布局.   四种布局 布局 ...

  2. python+appium+PyCharm==自动化测试APP环境

    1.点击SDK下面的uiautomatorviewer 2.启动夜神3.启动adb--->在cmd adb -version adb connect 127.0.0.1:62001 这里的配置环 ...

  3. Linux 配置yum源.

    Linux 配置yum源. 环境:虚拟机中安装了RedHat ,在进行安装mariadb的时候,出现如下错误.是因为yum源的问题,需要进行配置yum源.本教程是配置本地yum源. [root@loc ...

  4. python文件基础IO,OS

    #!/usr/bin/python # -*- coding: UTF-8 -*- import os # 导入 Phone 包 #File 对象方法: file对象提供了操作文件的一系列方法. #O ...

  5. 05 enumerate index使用

    # enumerate 自动生成一列, 默认0开始,每次自增+1li = ["电脑","鼠标垫","U盘","游艇"]f ...

  6. Keras 处理 不平衡的数据的分类问题 imbalance data 或者 highly skewed data

    处理不平衡的数据集的时候,可以使用对数据加权来提高数量较小类的被选中的概率,具体方式如下 fit(self, x, y, batch_size=32, nb_epoch=10, verbose=1, ...

  7. 关于this指向性的问题

    函数调用 首先需要从函数的调用开始讲起. JS(ES5)里面有三种函数调用形式: func(p1, p2) obj.child.method(p1, p2) func.call(context, p1 ...

  8. Spark学习之路 (十三)SparkCore的调优之资源调优JVM的基本架构

    一.JVM的结构图 1.1 Java内存结构 JVM内存结构主要有三大块:堆内存.方法区和栈. 堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分成三部分,Eden空间.From Su ...

  9. 使用函数接口和枚举实现配置式编程(Java与Scala实现)

    概述 做报表时,有时需要根据不同的业务生成不同的报表.这样,需要能够动态地配置列字段,并根据列字段来输出对应的报表.使用函数接口结合枚举可以比较优雅地实现配置式编程. 问题描述如下: 假设有对象 St ...

  10. Xfire基础

    XFire 是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,能够快速地开发Web Service应用.和其他Web服务引擎相比,XF ...