文件操作漏洞是Web世界中最经典的漏洞类型。结合SQL注入等其他漏洞,通常会产生意想不到的影响。由于它能够执行任意代码,因此它是使严重漏洞(如严重的信息泄漏,甚至是问题漏洞)出现常见漏洞的最佳方法之一。 一,常见的文件操作漏洞和危害 文件包含 成因: 引入文件时,用户是可控的,没有严格的验证,或者绕过了一些敏感文件,导致文件泄漏和恶意代码注入。当包含的文件在本地服务器上时,包含本地文件;当包含的文件在第三方服务器上时,将形成远程文件。 举例:
常见危害: 代码执行是如此简单和粗鲁! 路径(目录)遍历 成因: 应用程序功能对文件进行操作,当限制不严格时,它会导致访问除Web之外的文件。可以近似为一种局部文件包含,因为使用两个向量,验证方法几乎完全相同。值得注意的是,路径遍历和目录浏览是不同的。 举例:
常见危害: 严重的信息泄露,篡改服务器上的文件会导致命令执行,并且删除服务器中的文件(例如配置文件,脚本文件)会导致服务器崩溃。 上传文件 成因: 文件上载漏洞是指用户上载可执行脚本文件并通过脚本文件获取服务器端命令。 举例:
常见危害: 导致任意代码执行,上传的文件是一个病毒或特洛伊木马文件,欺骗其他用户下载;上传域控制策略文件,如crossdomain.xml;上传网络钓鱼图像以进行网上诱骗和欺诈;将文件名上载到XSS有效负载,并执行文件名显示时会导致存储类型XSS。 上述三个文件操作漏洞的常见威胁可导致任意代码执行。 二。检测和旁路方法 路径遍历 1.使用以下类型的有效负载进行检测。这些有效负载可以执行各种编码尝试,以绕过应用程序删除和清除遍历序列的能力。
2.专注于根据用户提交的输入读写文件的能力。 3.首先尝试使用基本目录中的遍历序列。如果成功,则尝试另一个序列返回到基础目录并访问服务器操作系统中的已知文件。 4.应用程序可以检查所请求的文件扩展名。只允许访问特定类型的文件,尝试使用空字节或换行符进行攻击。当然,这两个方法在新版本的php5中无法实现,asp,jsp或旧版本的php应该试试。 5.应用程序可以检查用户提交的文件路径是否以特定的根目录(目录)开头。尝试将遍历序列附加到Web应用程序可接受的根的根,从而避免过滤。 例如:
文件包含 1.如果测试受到目标应用程序基础结构的HTTP连接的影响,则通常确定应用程序具有包含漏洞的远程文件。 2.如果存在远程文件包含,请在您自己的主机上放置一个脚本,以测试是否执行了包含远程的脚本(注入类似命令)。 3.检查比较测试的延迟,以确定响应异常延迟的原因。 4.看到这种功能需要关注。
5.包含临时文件,会话文件和日志文件。 上传文件 1.客户端旁路:捕获包修改确认的代码值。 2.服务器端旁路:捕获内容类型值,将一些正常字符添加到文件中以混淆,例如image66h<php phpinfo();&gt ;或绕过基于后缀名称的检测。 3.使用组合文件来包含漏洞:例如,如果您只检查asp,jsp,php的内容,您可以先传递包含恶意脚本的txt文件,然后将其包含在php文件中,例如 <php Include(“上载的txt文件路径”);> 4.尝试服务器解析漏洞。 5.尝试绕过大文件的WAF:但请注意,由于内容长度,使用大文件绕过服务器验证的可行性几乎不存在。 三。预防方法 消除文件包含漏洞 消除文件包含漏洞的想法与目录遍历漏洞相同: 1.避免从外部指定文件名。 2.避免在文件名中包含目录。 3.将文件名限制为仅包含字母和数字。 4.当然,避免将用户提交的数据传输到任何文件系统API是防止路径遍历的最有效方法。 添加:可以检测到的直接传递,不要替换它,甚至递归替换也不是一种可靠的方法。 消除文件上载漏洞 1.无法执行文件上载目录。 2.严格限制文件类型和大小。 3.使用随机数(哈希)覆盖文件名和文件路径。 补充 使用dirTraversal.txt时,需要将{FILE}向量替换为本地资源的绝对URI并使用它。例如,如果您的本地资源名称是local_file,请使用 Sed -i的/{FILE}/loacl_file/g'dirTraversal.txt被替换。