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

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

实验要求

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

实验过程

最后一次了,没有选择尝试免考项目的我最后一次进行这个紧张刺激的活动了。

WebGoat

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

  • 首先我们在kali里面下载Webgoat,这是一个jar包,因为在虚拟机面下载速度太慢了,所以我在主机中下载之后复制到了虚拟机中,之后在工作目录提取文件,使用指令java -jar webgoat-server-8.0.0.M14.jar打开webgoat:

  • 然后在网页中输入http://localhost:8080/WebGoat进入登录界面:

  • 7.0.1版本会有默认的用户名和密码,直接登录开始练习

Phishing with XSS

这一练习是说:如果网页上存在已知的XSS攻击,本课程将举例说明网站如何支持网络钓鱼攻击

这里我们简单的使用一个登陆的代码,我们作为受害者输入用户名和密码时,会显示我们刚刚输入的信息,效果如下:

攻击成功!

Stored XSS Attacks

储存性XSS攻击:

清理所有输入,尤其是稍后将用作OS命令,脚本和数据库查询的参数的输入总是一个好习惯。 对于永久存储在应用程序某处的内容而言,这一点尤其重要。 用户不应该能够创建可能导致其他用户在检索到用户消息时加载不需要的页面或不需要的内容的消息内容。

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

操作步骤为:

在Litle里随便输入某些内容

然后在message中输入一串代码,比如:

<script>alert("attacked by xzh ");</script>

然后点开刚创建的贴子:

成功攻击!

Reflected XSS Attacks

反射型XSS

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

操作如下:

输入带有攻击性的URL作为输入源:

<script>alert(" attacked by xzh");</script>

攻击成功!

如果我们输入错误的用户信息,会返回错误内容。

Cross Site Request Forgery (CSRF)

这里练习的目标是发送电子邮件到新闻组。电子邮件包含一个图像,其URL指向恶意请求。在本课中,URL应该指向“攻击”Servlet,该课程的“屏幕”和“菜单”参数和一个额外的参数“TrimeFund”具有任意数值,如5000。您可以通过在右边插入的参数中找到“屏幕”和“菜单”值来构建链接。当时被认证的CSRF邮件的收件人将转移他们的资金。当这一课的攻击成功时,左边的菜单旁边出现一个绿色的复选标记。

在message框中输入这样一串代码

<img src=‘attack?Screen=277&menu=900&transferFunds=5000‘ width=‘1‘ height=‘1‘>

提交后,会在消息列表中看到一个新的消息,点击该消息,就会看到你所想要让对方看到的新闻:

攻击成功!

CSRF Prompt By-Pass

目标是向包含多个恶意请求的新闻组发送电子邮件:第一个传输资金,第二个请求确认第一个请求触发的提示。 这些URL应通过此CSRF-prompt-by-pass课程的屏幕,菜单参数以及具有诸如“5000”之类的数值的额外参数“transferFunds”来指向攻击servlet以启动传输并且字符串值“CONFIRM” 完成它。 您可以从右侧的插图复制课程参数以创建格式为“攻击?屏幕= XXX&menu = YYY&transferFunds = ZZZ”的网址。 无论谁收到这封电子邮件并恰好在那个时候进行认证,他的资金都将被转移。 当您认为攻击成功时,刷新页面,您会在左侧菜单中找到绿色检查。

具体操作是:

先查看参数:

在message中添加代码:

 <iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>

攻击成功如下:

Injection Flaws练习

SQL注入攻击对任何数据库驱动的站点都构成严重威胁。攻击背后的方法很容易学习,造成的损害可以从相当大到完全的系统妥协。尽管存在这些风险,但互联网上令人难以置信的系统数量易受这种攻击形式的影响。

对所有输入数据进行清理,尤其是在OS命令、脚本和数据库查询中使用的数据,以某种其他方式阻止SQL注入的威胁,也是很好的做法。

下面我们来进行这一方面的练习:

Command Injection

在目标主机上执行系统命令,通过火狐浏览器下的Firebug对源代码进行修改,在BackDoors.help旁边加上

"& netstat -an & ipconfig"

然后会发现框里的选项被修改了,这时点击view:

可以看到命令被执行,出现系统网络连接情况

Numeric SQL Injection

这个练习的要求是:下面的表单允许用户查看天气数据。尝试注入导致所有天气数据显示的SQL字符串。

现在,您已经成功执行SQL注入,尝试对参数化查询进行相同类型的攻击。

依旧利用firebug,在任意一个值比如101旁边加上or 1=1(这个方法我们在实验八的时候用过,因为这是一个永真值):

OK成功!

Log Spoofing

这一练习是通过向日志文件添加脚本来提升攻击。

下面的灰色区域表示将在Web服务器的日志文件中记录的内容。

目标是使其像“admin”用户名登录成功。

具体操作是:

在User Name文本框中输入:

xzh%0d%0aLogin Succeeded for username: admin

其中%0d是回车,%0a是换行符:

点击登录:

攻击成功!

String SQL Injection

在密码栏中输入

‘ or 1=1 --

进行SQL注入,但是登录失败:

结果发现是网页设置的长度不够,我们要对长度限制进行修改:

OK,修改完之后再登录,成功:

SQL Injection(Stage 3:Numeric SQL Injection)

使用inspect分析一下这个按钮,发现这个地方是以员工ID作为索引传递参数的,我们要达到通过Larry来浏览老板账户信息的目的,一般来说老板的工资都应该是最高的,所以把其中的value值改为:

101 or 1=1 order by salary desc --

这里desc是指工资按降序排序,这样老板的信息就会被排到第一个。

我们就可以看到老板的工资信息:

Database Backdoors

先看用户的信息:

然后输入注入语句:

101; update employee set salary=90000

可以修改工资为90000

实验后回答问题

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

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

防御:对于SQL注入攻击的防范,我觉得主要还是应该从代码上入手:

采用预编译语句集PreparedStatement,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可。它的原理就是sql注入只对sql语句的准备(编译)过程有破坏作用,而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,而不再对sql语句进行解析准备,因此也就避免了sql注入问题;

使用正则表达式过滤传入的参数,对一些包含sql注入的关键字进行过滤;

采用字符串过滤的方法;

jsp中调用该函数检查是否包含非法字符,防止SQL从URL注入。

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

原理:

XSS是代码注入的一种,它允许恶意用户将代码注入到网页上,并能够被浏览器成功的执行,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。XSS攻击的主要目的是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的身份登陆,做一些破坏。

防御:

一种方法是在表单提交或者url参数传递前,对需要的参数进行过滤;

检查用户输入的内容中是否有非法内容,如尖括号、引号等,严格控制输出。

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

原理:在用户的浏览器中执行攻击者的脚本,来获得其cookie等信息。而CSRF是借用用户的身份,向web server发送请求,因为该请求不是用户本意,所以称为“跨站请求伪造”。

防御:

通过referer、token或者验证码来检测用户提交;

尽量不要在页面的链接中暴露用户隐私信息,对于用户修改删除等操作最好都使用post操作;

避免全站通用的cookie,严格设置cookie的域

实验心得

这是本学期的最后一次实验了,这次是在平台上进行多个练习,从各个方面加强对网络攻防的理解与实践,希望之后还可以多做一下这类的实践,可以进一步提高自己的水平。

原文地址:https://www.cnblogs.com/xuzihan/p/9101495.html

时间: 2024-10-10 07:25:57

20155208徐子涵《网络对抗》Exp9 Web安全基础的相关文章

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

20145225唐振远<网络对抗>Web安全基础实践 参考博客:20145215 卢肖明 基础问题回答 (1)SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 防御:利用输入规则限制进行防御,过滤输入的数据,不允许特殊字符输入. (2)XSS攻击的原理,如何防御? 跨站脚本攻击,允许恶意用户将恶意Script代码注入到网页上,当用户浏览网页时,嵌入其中Web里面的Script代码

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

20145326蔡馨熤<网络对抗>-- Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统. 根据相关技术原理,SQL注入可以分为平台层注入和代码层注入.前者由不安全的数据库配置或数据库平台的漏洞所致:后者主要是由于程序员对输入未进行细致地过滤,

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

20145216史婧瑶<网络对抗>Web安全基础实践 实验问题回答 (1)SQL注入攻击原理,如何防御 攻击原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入web应用程序,而这些输入大都是SQL语法里的一些组合,程序通过执行SQL语句进而执行攻击者所要的操作.其主要原因是程序没有细致的过滤用户输入的数据,致使非法数据侵入系统. 防御方法: 对输入的数据进行过滤,将常见的sql语句的关键词:select or ' " 等字符进行过滤. 对在数据库中对密码进行加密,验证登陆的时

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

20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,由于在设计程序中忽略对可能构成攻击的特殊字符串的检查,所以通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统.后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果.

20155331《网络对抗》Web安全基础实践

20155331<网络对抗> Exp9 Web安全基础 实验过程 WebGoat 在终端中输入java -jar webgoat-container-7.0.1-war-exec.jar开启WebGoat. 打开浏览器,在地址栏输入localhost:8080/WebGoat打开WebGoat,使用默认的账号密码即可登陆. XSS攻击 Phishing with XSS 跨站脚本钓鱼攻击 任意构造用户当前浏览的HTML内容,甚至可以模拟用户当前的操作.这里实验的是一种获取用户名和密码的攻击 在

exp9《网络对抗》web安全基础实践201453331魏澍琛

201453331魏澍琛web安全基础实践 一.实验过程 1.webgoat开启 2.Injection Flaws练习 Command Injection 原网页中没有注入的地方,那就用burpsuite(设置的相关步骤别人的博客写的很详细,不累述了),分析第一个包看他的数据提交的位置,找到后进行命令的注入,成功. 我注入的命令是AccessControlMatrix.help"&&ifconfig",执行了ifconfig命令,鉴于这个可以证明是本人操作,就把他截了

20155311《网络对抗》Web安全基础实践

基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统. 防御: 1.对用户的输入进行校验,可以通过正则表达式,双"-"进行转换等. 2.不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取. 3.不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接. 4.不要把机密信息直

20145317彭垚《网络对抗》Exp9 Web安全基础实践

20145317彭垚<网络对抗>Exp9 Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的. 对于SQL注入攻击的防范,我觉得主要还是应该从代码上入手: 采用预编译语句集PreparedStatement,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可.它的原理就是sql注入只对sql语句的准备(编译)过程有破坏作用,而Prep

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

20145301赵嘉鑫 <网络对抗>Exp9 Web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 SQL注入攻击原理:SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统.SQL 语句用于取回和更新数据库中的数据.SQL注入是一种通过操作输入来修改后台SQL语句达到代码执行进行攻击目的的技术.通过构建特殊的输入作为参数传入web应用程序,通过执行SQL语句进执行攻击者所要的操作,其主要原因是程序没有细致的过滤用户输入的数据,致使非法数据侵入系统. SQL注入