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)


相关推荐

  • NV12截图_js 截图

    NV12截图_js 截图截图原理参考:从NV12中裁剪子画面注意事项这是源码://裁剪的坐标X和Y必须是偶数,否则UV和Y会有偏差,注意点,linesize对其为1intNV12CropTo420P(uint8_t*nv12data,intwidth,intheight,intcropx, intcropy,uint8_t*yuv420pdata,intdscw,intdsc…

  • 读取QQ ClientKey C++版本[通俗易懂]

    读取QQ ClientKey C++版本[通俗易懂]不需要注入,读取QQClientKeyC++版本#include”stdafx.h”#include<string>#include<windows.h>#include<iostream>#include<WinInet.h>#pragmacomment(lib,”wininet.lib”)usingnamespaces…

    2022年10月22日
  • Springboot自动装配的原理「建议收藏」

    Springboot自动装配的原理「建议收藏」springboot在日常开发中减少了我们许多工作量减少了很多XML配置,这都得益于springboot自动装配的特性。那么springboot是如何实现自动装配的呢?首先我们浅显得介绍一些springboot的一些主要注解:@Configuration用于声明定义bean这也是springboot中的主要注解其实就是平常Spring配置文件中我们写的bean@EnableAutoConfiguration用来开启springboot自动配置的注解,这个也是自动装…

  • PyCharm设置改变字体大小的快捷键

    PyCharm设置改变字体大小的快捷键File->Settings在搜索框搜索increase点击IncreaseFontSize(增大字体)右键选择AddMouseShortcut然后按Ctrl并且鼠标滚轮往上滚。同理可以设置减小字体【设置减小字体时,在搜索框内输入decrease】转载于:https://www.cnblogs.com/Will-guo/p/6308991.h…

  • 网约技师APP详细设计说明书「建议收藏」

    网约技师APP详细设计说明书「建议收藏」目录1引言31.1编写目的31.2背景31.3定义31.4参考资料42程序系统的结构43登录程序Login()设计说明53.1程序描述53.2功能63.3性能63.4输人项63.5输出项73.6算法73.7流程逻辑73.8接口83.9存储分配83.10注释设计

  • java 时间字符串 转换_java实现时间与字符串之间转换

    java 时间字符串 转换_java实现时间与字符串之间转换导读正文本文实例为大家分享了java实现时间与字符串之间转换的具体代码,供大家参考,具体内容如下1.long字符串转换成yyyy-MM-ddHH:mm:ss格式输出importjava.text.SimpleDateFormat;importjava.util.Date;//将long字符串转换成格式时间输出publicclassLongToString{publicstatic…

发表回复

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

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