20155313 杨瀚 《网络对抗技术》实验九 Web安全基础

一、实验目的

  • 本实践的目标理解常用网络攻击技术的基本原理。Webgoat实践下相关实验。

二、基础问题回答

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

  • 答:SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

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

  • 答:XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。

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

  • 答:CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

三、实验内容

第一阶段

  • 1.首先我们来安装一个学习系统Webgoat,然后在里面来进行网络攻击操作。我们先在同学给出的百度云上下载这个压缩包,然后拷入kali中,并在压缩包目录中使用java -jar webgoat-container-7.1-exec.jar这条指令。

  • 等到安装完成以后会显示正在启动,这时候我们就可以在浏览器中运行Webgoat了。

  • 然后我们在浏览器中输入localhost:8080/WebGoat(注意大小写,不然进不去哟)就可以进入这个学习系统。

  • 进入学习系统以后我们可以看到左侧的学习内容。

  • 2.进入学习系统以后我们先进行String SQL Injection(字符串数据库注入?),首先我们在那个文本框里输入Smith,然后在下面会显示Smith的资料。

  • 然后根据文本框下面的数据库语言,我们在文本框中输入'or 1='1,即在数据库语言中形成了名字=''(空集,即所有)or 1=’1(永真式)的判断,结果是会显示所有的用户信息。

  • 3.然后我们进行Log Spoofing(日志伪造),我们通过注入恶意字符串,按照规则伪造出一条登陆成功的日志并实现登陆。

  • 首先我们先在文本框中输入登录名yh,但是我们并不知道密码,所以我们随意输入一个密码,显然登录失败。

  • 然后我们尝试使用yh%0d%0aLogin Succeeded for username: admin输入在登陆名里,密码随意输入,结果显示用户名yh登录失败,但是admin登陆成功。

  • 4.接下来我们进行XPATH Injection(XML路径语言注入?),我们选择一个XML节点,并在不知道用户名和密码的情况下在用户名和密码中分别输入yh' or 1=1 or 'a'='a yh,然后可以看到攻击成功。

  • 5.再接下来我们进行LAB: SQL Injection中的第一项String SQL Injection。我们的目的是使用数据库注入来绕过身份验证,即不需要密码就可以登陆。

  • 参考同学的博客,使用用户Nevile进行登陆,在密码栏中输入' or 1=1 --,但是登录失败。因为查看该网页源代码中显示,这个文本框最多只能输入8个字符。我尝试使用上一个数据库注入的代码’or 1='1,刚好8个字符,结果竟然成功了?

  • 6.再然后我们进行LAB: SQL Injection中的第三项Numeric SQL Injection(数字数据库注入)。我们的目的是通过注入语句浏览到原本无法浏览的信息,通过一个员工Larry,浏览到Boss的账户信息。我们先在上一题中登陆Larry的账户。

  • 然后我们按f12打开网页源代码,如下图中将value=101(即Larry的ID)修改成101 or 1=1 order by salary desc --,这是一种将工资由高到低的一种排序,这样就会在数据库里查找账户数据的时候,第一个查看到老板的账户信息。

  • 结果是我登陆Larry的账户但是却查看到了老板的信息。

  • 7.接着我们进行Database Backdoors(数据库后门)。首先我们输入101查看自己的账户信息。

  • 接下来使用SQL语句101; update employee set salary=20155313进行修改,将薪水修改成20155313?

  • 8.最后我们来做Command Injection(命令注入)。我们通过修改网站源代码来访问本地计算机建立的IP以及系统的网络端口使用情况以及IP地址,尝试注入netstat -an以及ifconfig这两个系统命令。我们在下图源代码的位置添加"& netstat -an & ipconfig"

  • 然后我们在上面的选择框中选择第二项,即我们修改过的选项。

  • 结果我们可以成功查看IP和端口的信息。

第二阶段

  • 1.接下来我们进行XSS跨站脚本攻击,首先我们尝试Phishing with XSS(跨站脚本仿冒攻击)。我们的目的是在一个具有XSS漏洞的页面中,利用XSS和HTML注入达到这些目标。参考提示我们尝试向搜索字段添加HTML以创建假身份验证表单,参照同学的博客我们得到以下代码。
</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.接下来我们尝试进行Stored XSS Attacks(跨站脚本存储攻击)。我们的目的是在这个sumit的操作上添加一个html的标签。这很简单,我们在Title中随意输入一个抬头,然后在Message中输入<script>alert("20155313");</script>一个script的弹窗模块即可完成。

  • 3.最后我们尝试进行Reflected XSS Attacks(跨站脚本反射攻击)。我们在第一个输入文本框随意输入一个银行卡卡号(输入的当然是假的咯),然后输入银行卡最后三位验证码的输入文本框中输入<script>alert("20155313");</script>,然后点击购买就会显示弹窗,但是同时会显示购买成功?所以你只要知道别人的银行卡卡号就可以随便买东西咯?

第三阶段

  • 1.最后我们来进行CSRF跨站请求伪造攻击。首先我们尝试的是Cross Site Request Forgery(CSRF),我们的目的是发送一段包含恶意代码的图片,然后通过设置让被攻击者看不到这个图片。我们在message中输入<img src='attack?Screen=src值&menu=menu值&transferFunds=转账数额' width='1' height='1'>这个格式,其中的src和mune的值参考下面的表格。

  • 提交以后点击下面的bonsai按钮刷新以后就会显示攻击成功。

  • 2.最后的最后我们进行CSRF Prompt By-Pass(绕过CSRF确认攻击)。我们在message的文本框中输入下面的代码,其中的src和menu值参考下面的表格。

<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>```
- ![](https://images2018.cnblogs.com/blog/1071530/201805/1071530-20180529221546402-1539020147.png)
- ![](https://images2018.cnblogs.com/blog/1071530/201805/1071530-20180529221752824-673905580.png)
- 点击提交以后点击下面的Title名就会显示下面攻击成功的界面。
- ![](https://images2018.cnblogs.com/blog/1071530/201805/1071530-20180529222623519-1971263850.png)

20155313 杨瀚 《网络对抗技术》实验九 Web安全基础的更多相关文章

  1. 20155201 网络攻防技术 实验九 Web安全基础

    20155201 网络攻防技术 实验九 Web安全基础 一.实践内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 二.报告内容: 1. 基础问题回答 1)SQL注入攻击 ...

  2. 20155328 《网络对抗》 实验九 Web安全

    20155328 <网络对抗> 实验九 Web安全 基础 实验过程记录 在实验开始之前先把webgoat的jar包放到home目录下.打开终端,用命令java -jar webgoat-c ...

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

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

  4. 20155235 《网络攻防》 实验九 Web安全基础

    20155235 <网络攻防> 实验九 Web安全基础 实验内容 SQL注入攻击 XSS攻击 CSRF攻击 WebGoat WebGoat是OWASP组织研制出的用于进行web漏洞实验的应 ...

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. Paxos协议笔记

    对Paxos协议的介绍,可以通过Leslie Lamport的<Paxos Made Simple>展开学习和了解.Paxos算法在允许失败的分布式系统环境下,实现系统一致性.失败的情况有 ...

  2. oracle EBS rtf报表不能输出模板样式

    1.需要定义中文的数据定义 2.缺少文件 cd $ADMIN_SCRIPTS_HOME prefs.ora 3.查看文档  文档 ID 1059712.1 (1)请求模版显示不出来 解决:模版定义中模 ...

  3. Oracle EBS OPM close batch

    --close_batch --created by jenrry DECLARE x_message_count NUMBER; x_message_list VARCHAR2 (4000); x_ ...

  4. SQL Server自动备份 备份到本地或者远程服务器

    0.1 在SQLServer2008 --> 备份数据库 --> 安全 --> 新建用户 --> 用户名 选择该windows用户 (确保 --> 机器名/人名 --&g ...

  5. Twain Capabilities 转

    转自:http://blog.csdn.net/pamxy/article/details/8629213 Asynchronous Device Events   异步设备事件 CAP_DEVICE ...

  6. Windows进程间的通信

    一.进程与进程通信   进程间通信(Interprocess Communication, IPC)是指不同的进程之间进行数据共享和数据交换. 二.进程间通信方式 1.  文件映射 注:文件映射是在多 ...

  7. ISO8583组包、解包

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace POS. ...

  8. October 10th 2017 Week 41st Tuesday

    If you focus on what you left behind you will never see what lies ahead. 如果你只顾回头看,那么你永远也看不见前方有什么. Ye ...

  9. GitKraken 团队项目使用教程

    前期准备:刚下载好要配置些东西,这些跟着教程走就好了,现在主要是讲团队项目的使用,创建分支 和Fork项目到个人仓库,请参考这篇博客的前两个点 1.将项目克隆到本地 打开GitKraken 点击Fil ...

  10. LVM操作

    创建LVM,并挂载 1.对磁盘进行分区fdisk /dev/sdb [root@testdb ~]# fdisk /dev/sdbDevice contains neither a valid DOS ...