【干货分享】常见高危漏洞及验证方法

相信大家对sql注入、xss、csrf、命令注入、越权等常见Web安全漏洞并不陌生。但是如何验证这些漏洞呢?且听小编一一道来。

Web安全漏洞

输入输出验证不充分

设计缺陷

环境缺陷

Sql注入 xss csrf 目录穿越 文件上传 代码注入 命令注入 信息泄露 …… 越权漏洞 非授权对象引用 业务逻辑漏洞 框架漏洞 基础环境漏洞

一.Web常见安全漏洞分析——输入输出验证不充分

1.1 输入输出验证

验证的内容:

1、验证所有客户端的输入

2、验证所有输出到客户端的内容

验证的方法:

1、验证数据的长度、大小、格式、类型以及内容

2、使用服务端代码做最终验证

3、不使用黑名单检测方式

4、数据非法,停止程序执行,切勿企图修正数据

1.2 SQL 注入

SQL注入本质

Web程序代码中对于用户提交的参数未做过滤就直接放到SQL语句中执行,导致参数中的特殊字符打破了SQL语句原有逻辑,黑客可以利用该漏洞执行任意SQL语句。

SQL 注入原理

规避SQL注入

1、采用参数化查询的方式(推荐)

2、内置过滤系统(黑名单,很常见但是不推荐)

治标不治本,存在被绕过的可能性

1.3 跨站脚本攻击(XSS)

XSS(Cross Site Script):Web程序代码中把用户提交的参数未做过滤就直接输出到页面,参数中的特殊字符打破了HTML页面的原有逻辑,黑客可以利用该漏洞执行恶意HTML/JS代码、构造蠕虫传播、篡改页面实施钓鱼攻击等。

XSS分类

  • Reflected XSS(Non-persist XSS)

跨站代码存在于链接中,请求该链接时,跨站代码经过服务器反射回来,不会在服务器端进行存储。

  • Stored XSS(Persist XSS)

相对反射性XSS,存储型危害更大,利用更广泛,跨站攻击代码存储在服务端(比如数据库中)

  • DOM based XSS

一种基于DOM的跨站,这是客户端脚本自身解析不正确导致的安全问题

XSS 示例

 

XSS 示例(DOM)

触发XSS方式为:http://xxx.com/dom.html#alert(1)

Eval执行的是location.hash中的值,也就是url最后#后面的alert(1)

XSS代码不会发送到服务器端

正确的编程方式

转义比过滤更好

1.4 跨站请求伪造(CSRF)

Cross Site Request Forgery:CSRF是伪造客户端请求的一种攻击,字面上的意思是跨站点伪造请求。这种攻击方式是国外的安全人员于2000年提出,国内直到06年初才被关注。CSRF的定义是强迫受害者的浏览器向一个易受攻击的Web应用程序发送请求,最后达到攻击者所需要的操作行为。

CSRF示例(GET)

某银行网站:

http://www.mybank.com/Transfer.php?toBankId=11&money=1000

B站点(存在XSS)

<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>

CSRF示例(POST)

某银行网站:

B站点(存在XSS)

<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>

某银行网站:

B站点(存在XSS)

规避CSRF

1、判断HTTP referer

2、使用隐藏的token hash做校验

3、图形验证码

1.5 文件上传常见问题

1、允许上传可执行文件

2、客户端JS脚本验证上传文件类型

3、使用黑名单限制上传文件类型

4、文件名、目录名可自定义

5、文件名中特殊字符处理不当

1.6 文件下载漏洞

二. Web常见安全漏洞分析——设计缺陷

2.1 逻辑漏洞:非授权对象引用

越权查询任意用户信息:

涉及URL:

http://***.com/buyer/buyerCenter/findSubInfoByRoleId/8700260063

2.2 逻辑漏洞:纵向越权

2.3 逻辑漏洞:找回密码漏洞

  1. 密码找回凭证太弱,容易被爆破
  2. 密码找回凭证可以从客户端、URL中直接获取
  3. 密码找回凭证可以在网页源代码中直接获取
  4. 密码找回的邮箱链接易猜解,如时间的md5
  5. 密码找回的手机或邮箱从页面获取,可以通过firebug修改
  6. 最后提交新密码时修改用户ID为其他ID

三. Web常见安全漏洞分析——环境缺陷

3.1 解析漏洞

1.IIS 5.x/6.0解析漏洞

a) 目录解析

/xx.asp/xx.jpg

b) 文件解析

xx.asp;.jpg

还有IIS6.0 默认的可执行文件除了asp还包含这三种

/shell.asa

/shell.cer

/shell.cdx

2. IIS 7.0/IIS 7.5/ Nginx <8.03畸形解析漏洞

在默认Fast-CGI开启状况下,上传一个名字为test.jpg,内容为

<?PHP fputs(fopen(‘shell.php’,’w’),'<?php eval($_POST[cmd])?>’);?>

的文件,然后访问test.jpg/.php,在这个目录下就会生成一句话木马 shell.php

3. Nginx <8.03 空字节代码执行漏洞

影响版本:0.5.,0.6., 0.7 <= 0.7.65, 0.8 <= 0.8.37

Nginx在图片中嵌入PHP代码然后通过访问

xxx.jpg%00.php

来执行其中的代码

4. Apache解析漏洞

Apache 是从右到左开始判断解析,如果为不可识别解析,就再往左判断.

比如 shell.php.a.rar “.a”和”.rar” 这两种后缀是apache不可识别解析,apache就会把shell.php.a.rar解析成php

5. 其他

在windows环境下,xx.jpg[空格] 或xx.jpg. 这两类文件都是不允许存在的,若这样命名,windows会默认除去空格或点,利用windows的这种特性,在文件名后加一个空格或者点绕过黑名单.若上传成功,空格和点都会被windows自动消除,这样也可以getshell。

 

 

 

Spread the word. Share this post!

Meet The Author

Leave Comment