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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c语言中按位异或运算_c语言按位与怎么算

    c语言中按位异或运算_c语言按位与怎么算按位与运算符:&语法expression&expression备注表达式可以是其他“与”表达式,或(遵循下面所述的类型限制)相等表达式、关系表达式、加法表达式、乘法表达式、指向成员的指针表达式、强制转换表达式、一元表达式、后缀表达式或主表达式。按位“与”运算符(&)会将第一操作数的每一位与第二操作数的相应位进行比较。如果两个位均为1,则对应的结果位将设置为1

    2022年10月12日
    1
  • 领域建模与数据库建模[通俗易懂]

    首先两者比较: 我下面是引用的别人的文章,并且感觉有句话很好,不过除了这句话其它的话都不是很好,哈哈:有些人就把问题归结于Java语言本身,睡不着觉怪床歪。 我们知道:一个软件从无到有需要经过如下几个阶段:分析、设计、编程、调试、部署和运行。   编程阶段我们通常使用Java/.NET这样面向对象语言工具,可以带来很多设计上的好处,但是也存在一个奇怪的现象:很多程序员虽然在

    2022年4月16日
    36
  • 数据结构:表达式求值

    数据结构:表达式求值数据结构:表达式求值表达式求值是程序设计语言编译的一个最基本问题,其中任何一个表达式都是由操作数、运算符(±*/)、界限符(#,(,),[,])组成。运算符和界限符统称算符。算符的优先级关系为(数学角度上):为了通过代码实现,我们定义两个工作栈,一个叫OPTR,存运算符和界限符;另一个存OPND,存操作数或运算结果。首先OPND为空栈,OPTR首先存’#’为栈底元素。依次读取算术表达式…

    2022年6月15日
    32
  • Prometheus TSDB存储原理

    Prometheus TSDB存储原理Python 微信订餐小程序课程视频 https blog csdn net m0 article details Python 实战量化交易理财系统 https blog csdn net m0 article details Prometheus 包含一个存储在本地磁盘的时间序列数据库 同时也支持与远程存储系统集成 比如 grafanacloud 提供的免费云存储 API 只需将 remote write 接口信息填写在 Prome

    2025年7月16日
    4
  • 国家标准《电子计算机机房设计规范》(GB50174-93)_计算机机房建设标准规范

    国家标准《电子计算机机房设计规范》(GB50174-93)_计算机机房建设标准规范dgtool:GB50174-2008电子计算机机房设计规范目次1总则(1)2术语(2)3机房分级与性能要求(6)3.1机房分级(6)3.2性能要求(6)4机房位置及设备布置(7)4.1机房位置选择(7)4.2机房组成(7)4.3设备布置(8)5环境要求(9)5.1温度、相对湿度及空气含尘浓度(9)5.2噪声、电磁干扰、振动及静电(9)6建筑与结构(1o)6.1一般规定(1o)6.2人流、物…

    2022年10月2日
    2
  • springboot集成日志

    springboot集成日志一、通过代码引入slf4j因为pom文件中已经通过父类引入了log4j查看中有直接进行引入即可。// 在类中引入,MyController是本类名 private static final Logger log = LoggerFactory.getLogger(MyController.class);下面直接使用即可。显示结果:默认情况下是info…

    2022年6月13日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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