OWASP-Top3-(Injection 注入)

Injection 注入

先来看看描述

94%的应用程序都测试了某种形式的注入,注入类别中如今包括跨站脚本。映射到该类别的33个CWE在应用程序中出现次数第二多。

这里说的注入也就包括了跨站点脚本、SQL注入、文件名或路径的外部访问控制。

这些漏洞缺陷都是再CWE中的,等等! CWE是个啥?

CWE全称CommonWeakness Enumeration,是一个通用的在线计算机软件缺陷字典,由MITRE公司运行和维护。

MITRE组织了来自企业、学术机构和政府部门的多个国际专家组编写和更新CWE,从而确保内容的广度和深度。

更具体可以参考:
https://www.freebuf.com/column/217026.html

 CWE-73:文件名或路径的外部访问控制

这个映射缺陷,我的理解是它就是目录遍历的意思

这里参考我看到的这个问题:

http://www.xknote.com/ask/60fc8d68da985.html(文件名或路径安全性的外部控制问题)

目录遍历和不安全的文件下载,甚至和文件包含这些漏洞都很类似

 

目录遍历漏洞的特征

?page=xxx.php
?home=xxx.html
?index=xxx.jsp
?file=content

在Unix操作系统上,../ 是一个标准的返回上一级路径的语法;
在Windows操作系统上, ../ 和 ..\ 都是返回上一级的语句。

 

再来看看常见的绕过姿势

一些绕过方式
1.加密参数传递的数据
有的网站程序传递参数后会进行base64加密(当然也会有其他加密),导致我们传递的参数无法解析,所以就无法利用目录遍历,而绕过方式也很简单,就是先对参数进行base64加密后再进行传参。

如:?page=bTByZS50eHQ=


2.编码绕过
进行传参时将参数进行编码,实现绕过,比如URL编码。

?page=%6D%30%72%65%2E%74%78%74


3.双写…/绕过
防御措施是直接将../ 替换为空,可以直接采用双写/复写直接绕过:
filename=.…//….//.…///etc/passwd


4.目录限定绕过
有些Web应用程序是通过限定目录权限来分离的。可以使用一些特殊的符号来绕过。比如提交这样的xxx.php?page=~/…/boot。就可以直接跳转到硬盘目录下。


5.绕过文件后缀过滤
一些Web应用程序在读取文件前,会对提交的文件后缀进行检测,攻击者可以在文件名后放一个空字节的编码,来绕过这样的文件类型的检查。
比如:../../boot.ini%00.jpg, Web应用程序使用的Api会允许字符串中包含空字符,当实际获取文件名时,则由系统的Api会直接截短,而解析为../../boot.ini。

在类Unix的系统中也可以使用Url编码的换行符,

例如:../../../etc/passwd%0a.jpg如果文件系统在获取含有换行符的文件名,会截短为文件名。也可以尝试%20,例如: ../../../index.php%20


6.绕过来路验证
Http Referer : HTTP Referer是header的一部分,
当浏览器向web服务器发送请求的时候,一般会带上Referer,
告诉服务器我是从哪个页面链接过来的,常用做防盗链

在一些Web应用程序中,会有对提交参数的来路进行判断的方法,
而绕过的方法可以尝试通过在网站留言或者交互的地方提交Url再点击或者直接修改Http Referer即可,
这主要是原因Http Referer是由客户端浏览器发送的,
服务器是无法控制的,而将此变量当作一个值得信任源是错误的。

参考:https://blog.csdn.net/qq_51558360/article/details/113183556

 

比如这里的URL:https://web.stanford.edu/~jbulow/lehmandocs/  就存在目录遍历

 

跨站脚本XSS和SQL注入就不多讲了~~

 

posted @ 2021-09-26 14:29  Erichas  阅读(262)  评论(0编辑  收藏  举报