20155209 林虹宇 Exp9 Web安全基础

本文介绍了通过WebGoat平台进行的Web安全实验,包括XSS、CSRF和SQL注入攻击的实施与防御方法,并讨论了实验过程中的体会。

Exp9 Web安全基础

XSS

1.Phishing with XSS

  • 跨站脚本攻击,在表单中输入超文本代码
    1071485-20180529193230773-717865621.png

  • 在网页中形成一个自制的登陆表单,然后将结果反馈到自己的主机上。
    1071485-20180529193235546-221612901.png
    1071485-20180529193254332-105973591.png

  • 攻击成功

    2.Stored XSS Attacks

  • 存储型XSS攻击
  • 在信息栏中输入一段js代码,提交之后,让点击这个评论的人触发xss
    1071485-20180529193308139-1747758776.png

  • 结果
    1071485-20180529193314784-756548053.png

3 Reflected XSS Attacks

  • 反射型XSS攻击
  • 在enter your three digit access code:处输入一段简单的js代码。
    1071485-20180529193331197-1450147248.png
    1071485-20180529193340362-1055970509.png

CSRF

4 Cross Site Request Forgery(CSRF)

  • 此题是要写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件
    1071485-20180529193422592-676841066.png

  • 在信息栏中输入恶意代码
    1071485-20180529193429003-1048289231.png

  • 点击提交
  • 成功
    1071485-20180529193437074-1648435043.png

5 CSRF Prompt By-Pass

  • 此题包括了两个请求,一是转账请求,二是确认转账成功请求,即需要额外传递两个参数给服务器(transferFunds=4000,transferFunds=CONFIRM)
  • 先进入转账请求地址
    1071485-20180529193454800-1360202972.png
    1071485-20180529193512628-1856503453.png

  • 点击confirm
  • 修改语句进入成功地址
    1071485-20180529193524627-615147091.png
    1071485-20180529193530047-1185814929.png

SQL

6 Command Injection

  • 在目标主机上执行系统命令,通过火狐浏览器下的Firebug对源代码进行修改,在BackDoors.help旁边加上"& netstat -an & ipconfig":
    1071485-20180529193544003-437064424.png

  • 选中修改项,点击view
    1071485-20180529193557208-160732684.png

  • 出现网络连接情况
    1071485-20180529193604753-1908890346.png

7 Numeric SQL Injection

  • 要显示全部的天气信息,观察数据库语句是要搜索station来显示相应的信息。
  • 通过修改station选择的语句,然后让它没有选择,直接全部显示。
    1071485-20180529193722127-932536568.png

  • 所以修改之后,点击Columbia提交,实际上提交了一个永真式。
    1071485-20180529193727521-1896120969.png

  • 全部显示,成功。
    1071485-20180529193734354-98341447.png

8 Stage 1:String SQL Injection

  • 这是老师上课演示的题目,知道密码的输入长度被限制,所以先修改html代码。
    1071485-20180529193743971-139195753.png

  • 修改之后输入’ or 1=1 --密码
    1071485-20180529193749885-1322527881.png

  • 登陆成功。
    1071485-20180529193758200-1294616589.png

9 Stage 3:Numeric SQL Injection

  • 课上演示实验中用到了burpsuite,所以这个实验中的登陆就先用一下burpsuite。
    1071485-20180529193822731-1223566981.png
    1071485-20180529193831203-1519760238.png

  • 然后修改html代码,使提交数据的时候,提交到后台的员工号变成查找那个工资最高的员工号,然后显示工资最高的也就是老板的账号信息。
    1071485-20180529193837973-1452471902.png
    1071485-20180529193843153-1029967832.png

10 String SQL Injection

  • 这个非常简单,选择语句都已经给好了,直接输入' or 1=1 --
    1071485-20180529193849953-371046660.png

  • 获取成功
    1071485-20180529193857329-1182672098.png

问题回答

  • SQL注入攻击原理,如何防御
  • SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
  • 防御:1.检查变量数据类型和格式,前端js检查是否包函非法字符。2.过滤特殊符号,对于无法确定固定格式的变量,一定要进行特殊符号过滤或转义处理。3.绑定变量,使用预编译语句,MySQL的mysqli驱动提供了预编译语句的支持,不同的程序语言,都分别有使用预编译语句的方法。
  • XSS攻击的原理,如何防御
  • XSS分三类,存储型XSS、反射型XSS、DOM-XSS。
    存储型XSS:数据库中存有的存在XSS攻击的数据,返回给客户端。若数据未经过任何转义。被浏览器渲染。就可能导致XSS攻击。
    反射型XSS:将用户输入的存在XSS攻击的数据,发送给后台,后台并未对数据进行存储,也未经过任何过滤,直接返回给客户端。被浏览器渲染。就可能导致XSS攻击。
    DOM-XSS:纯粹发生在客户端的XSS攻击。
  • XSS防御—输入输出的过滤和数据转义
  • 输入:客户端求情参数:包括用户输入,url参数、post参数。
  • 输出:即使在客户端对用户的输入做了过滤、转义,攻击者一样可能,通过截包,转发等手段,修改你的请求包体。最终还是要在数据输出的时候做数据转义。
  • CSRF攻击原理,如何防御
  • CSRF全称 Cross Site Request Forgery, 跨站域请求伪造。
  • 攻击过程:1假设abc用户登录银行的网站进行操作, 同时也访问了攻击者预先设置好的网站.2abc点击了攻击者网站的某一个链接,这个链接是http://www.bank.com/xxxx指向银行,银行服务器会根据这个链接携带的参数会进行转账操作.3银行服务器在执行转账操作之前会进行SESSION验证是否登录, 但是由于abc已经登录了银行网站,攻击者的链接也是www.bank.com.所以攻击的链接就会携带session id到银行服务器.4由于session id是正确的,所以银行会判断操作是由本人发起的,执行转账操作.
  • 两种防御手段
  • referer 验证
  • 根据HTTP协议,在http请求头中包含一个referer的字段,这个字段记录了该http请求的原地址.通常情况下,-执行转账操作的post请求www.bank.com/transfer.php应该是点击www.bank.com网页的按钮来触发的操作,这个时候转账请求的referer应该是www.bank.com.而如果黑客要进行csrf攻击,只能在自己的网站www.hacker.com上伪造请求.伪造请求的referer是www.hacker.com.所以我们通过对比post请求的referer是不是www.bank.com就可以判断请求是否合法.
  • token 验证
  • 从上面的样式可以发现,攻击者伪造了转账的表单,那么网站可以在表单中加入了一个随机的token来验证.token随着其他请求数据一起被提交到服务器.服务器通过验证token的值来判断post请求是否合法.由于攻击者没有办法获取到页面信息,所以它没有办法知道token的值.那么伪造的表单中就没有该token值.服务器就可以判断出这个请求是伪造的.

    实验体会

    本次实验是最后一次实验了,本次实验借助webgoat实现对web的攻击,实现对数据库安全上的攻击,对html前端代码的攻击,也有使用burpsuite对发送的数据包进行截取修改再发送。理解了对网站的一般攻击步骤,同时也学到了对于不同的攻击应该如何防范。

转载于:https://www.cnblogs.com/lhyhahaha/p/9107519.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值