2018——2019 20165239Exp9 Web安全基础

2018——2019 20165239Exp9 Web安全基础

Exp9 Web安全基础

一:基础问题回答

(1)SQL注入攻击原理,如何防御
•原理:它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入恶意SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句,最终达到欺骗服务器执行恶意的SQL命令。
•本质:基于文本解析的机制无法分辨代码是否是恶意代码,仅仅是顺序读取和执行,因为通常文本解析的语言并不会进行编译。

•防御:既然可以看到注入类攻击的核心原因是因为很多语言的顺序执行机制,和文本解析的本质,那么我只需要打破这种机制就可以防止注入攻击的发生。以SQL注入为例,可以通过JAVA中的绑定变量等方法进行预防,JAVA的绑定变量方法是吧用户的输入作为一种变量,对SQL语句进行预编译,这样在执行时就不是顺序执行,而是把输入作为一种变量进行处理,不会在运行时进行动态的拼接SQL语句,防止了恶意的攻击代码被写入SQL语句进行解析和执行。
(2)XSS攻击的原理,如何防御
•原理:攻击者往Web页面里插入恶意html标签或者javascript代码,当用户浏览该页或者进行某些操作时,攻击者利用用户对原网站的信任,诱骗用户或浏览器执行一些不安全的操作或者向其它网站提交用户的私密信息。

•条件: ◦网站需要有输入参数的地方。(所谓输入不一定是<\input>标签的文本框类型,也可以是选择栏,或者submit,只需要通过工具进行intercept修改参数,能够控制传入值就可以了。)

◦用户的输入会被通过某种方式再次呈现出来。

•分类:反射型和储存型,简单来讲,反射型不存储信息,一旦离开该网页所有输入无法再找回;储存型会存储信息,会将用户名甚至密码存储起来,即使离开这个网站下次再次进入,用户名依旧会留存在页面。

•防御: ◦过滤标记,XSS跨站攻击的最终目标是引入script代码在用户的浏览器中执行,所以最基本最简单的过滤方法,就是转换标记。

◦HTML属性过滤,一旦用户输入的语句中含有javascript,jscript,vbscript,都用空白代替。

◦过滤特殊字符:&、回车和空格。

(3)CSRF攻击原理,如何防御
•原理:CSRF就是冒名登录。跨站请求伪造的核心本质是窃取用户的Session,或者说Cookie,因为目前主流情况Session都是存在Cookie中.攻击者并不关心被害者具体帐号和密码,因为一旦用户进行了登录,Session就是用户的唯一凭证,只要攻击者能够得到Session,就可以伪装成被害者进入服务器.

•实例:利用HTML的Request机制,攻击者发送给被害者一个www.B.com域名下的网站,内部嵌入了恶意的src=www.A.com的Request指令,如果被害者打开B.com时当前浏览器正好已经登录过了A.com并且把A.com的Cookie放入了浏览器,那么在B.com下Request站点A.com时就会带走A.com的Session.服务器会错误的认为B.com的恶意请求是用户自己发出的。

•防御: ◦CSRF的攻击是有条件的,当用户访问恶意链接的时候,认证的cookie仍然有效,所以当用户关闭页面的时候cookie应该要被清除。

◦验证HTTP Referer字段。

◦在请求地址中添加token并验证。

◦在HTTP头中自定义属性并验证。
防御:在浏览器会话结束后清理cookie,在form中包含秘密信息、用户指定的代号作为cookie之外的验证。

二:实验内容
•执行java -jar webgoat-container-7.0.1-war-exec.jar开启webgoat,

1.Phishing with XSS
•在搜索框里输入XSS攻击代码


This feature requires account login:

Enter Username:

Enter Password:


•在表单内填写的用户名密码会被捕获发送给你


1296709-20190526135748380-234274868.png

2.Reflected XSS
•在code输入框内输入
•点击purchase,则会弹出窗口,内容是输入代码中的字符串。
1296709-20190526133034471-91341830.png
3.Stored XSS Attacks
•在发的帖子message部分插入jsp代码,当该帖子被浏览时,该代码也会被浏览器解析成html的内容。
•在message中输入 提交后,浏览该贴,成功弹出窗口,说明攻击成功!
1296709-20190526133127936-691759306.png
1296709-20190526133246732-1008071590.png
4.Command Injection
•右键复选框,选择inspect Element,在某个选项后加上”& netstat -an & ipconfig”
1296709-20190526133333617-1968940913.png

•在页面中选择该选型,然后点击view,则会出现该命令执行的结果

1296709-20190526133416137-866586083.png
5.Numeric SQL Injection
•根据其SQL语句SELECT * FROM weather_data WHERE station = [station],在填入的字段中注入特征字符,查看所有的天气数据。
•右键复选框,选择inspect Element,然将value =”101″改为value =”101 or 1=1″,其值对应的是Columbia,修改完成后选择该选项,然后点击Go!即可查看所有天气数据。
1296709-20190526133503171-2040572091.png
1296709-20190526133530607-978108443.png
6.Log Spoofing
•通过调整输入,从而隐藏登录的信息,不使它被记录到日志文件中。
•在用户名输入szkun%0d%0aLogin Succeeded for username: admin

1296709-20190526133615292-1711877658.png
7.String SQL Injection
•通过SQL注入构造永真式,使用者可查询到所有的信用卡号。
•在输入框直接输入’or 1=’1即可
1296709-20190526133653667-1309048476.png

8.Cross Site Request Forgery
•写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。
•查看自己电脑的Screen和menu的值:
•message内容为attack?Screen=276&menu=900&transferFunds=500 当点击该图片时,就会发出一个转钱的请求,盗取钱财。提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的钱,达到CSRF攻击的目的。

1296709-20190526133952532-19934777.png

•提交后点击该链接,可查看操作信息。
1296709-20190526134246626-1800569055.png
9.CSRF Prompt By-Pass
•利用CSRF进行冒名操作转账,不过这次包括了转账请求和确认转账成功请求,即需要额外传递两个参数给服务器
•在message框输入
1296709-20190526134455394-1234608328.png

•点开链接
1296709-20190526134755010-1100029955.png

三:实验感想

次实验主要是利用WebGoat工具,进行SQL注入攻击、XSS攻击、CSRF攻击。攻击原理主要是利用一些语句漏洞,通过修改这些语句进行攻击。这次实验中我遇到了许多问题,最后问同学,查资料慢慢都解决了。

转载于:https://www.cnblogs.com/qm20165239/p/10925855.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100898.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • HTML 动画(一)[通俗易懂]

    HTML 动画(一)[通俗易懂]入场动画(一)图片从左至右逐渐消失实现逻辑:a:将遮罩分割为数个div,多个div通过图片定位拼接成一张图片;b:运用requestAnimationFrame+animation实现动画;c:遮罩层网格状逐步消失设置background-position:0;2.效果图:3.代码:<!DOCTYPEhtml><htmllang=”en”&…

  • 图解Kafka的服务端的网络通信模型

    图解Kafka的服务端的网络通信模型在开始讲解Kafka的网络通信模型之前,我们有必要先简单了解一下:线程模型Reactor模式Reactor模式Reactor模式,是指通过一个或多个输入同时传递给服务处理器的服务请求的事件驱动处理模式。服务端程序处理传入多路请求,并将它们同步分派给请求对应的处理线程,Reactor模式也叫Dispatcher模式。即I/O多了复用统一监听事件,收到事件后分发(Dispatch给某进程),是编写高性能网络服务器的必备技术之一。根据Reactor的数量和处理资源池线程的数量不同,有

  • dataframe填充缺失值_pandas填充空值

    dataframe填充缺失值_pandas填充空值如果单独是>>>df.fillna(0)>>>print(df)#可以看到未发生改变>>>print(df.fillna(0))#如果直接打印是可以看到填充进去了>>>print(df)#但是再次打印就会发现没有了,还是Nan将其Nan全部填充为0,这时再打印的话会发现根本未填充,这是因…

  • Shiro面试题(二十道)[通俗易懂]

    Shiro面试题(二十道)[通俗易懂]SecurityManager才是实际的执行者。Realm:域,shiro从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;Shiro提供了CredentialsMatcher的散列实现HashedCredentialsMatcher,和PasswordMatcher不同的是,它只是用于密码验证,且可以提供自己的盐,而不是随机生成盐,且生成密码散列值的算法需要自己写,因为能提供自己的盐。..

    2022年10月14日
  • 大数据开发 岗位需要的知识——写给大数据开发初学者的话

    经常有初学者在博客和QQ问我,自己想往大数据方向发展,该学哪些技术,学习路线是什么样的,觉得大数据很火,就业很好,薪资很高。如果自己很迷茫,为了这些原因想往大数据方向发展,也可以,那么我就想问一下,你的专业是什么,对于计算机/软件,你的兴趣是什么?是计算机专业,对操作系统、硬件、网络、服务器感兴趣?是软件专业,对软件开发、编程、写代码感兴趣?还是数学、统计学专业,对数据和数字特别感兴趣

  • platform_device与platform_driver

    platform_device与platform_driver

    2021年12月14日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号