今天,我将向大家介绍我在利用路径遍历逻辑漏洞时的思维方式。这些文章来自受控环境,用于解释我的方法,以帮助您学习如何自己测试应用程序。
目的
检索 /etc/passwd 文件的内容。
什么是路径遍历?
文件遍历,也称为目录遍历,是一种漏洞,允许攻击者访问受限目录并在 Web 服务器的根目录之外执行命令。攻击者可以访问存储在预期应用程序表面之外的文件和目录,从而可能暴露敏感信息,例如配置文件、密码和其他关键数据。此漏洞通常是由于用户输入的清理不足造成的,允许插入的字符或序列遍历目录树并访问未经授权的区域。
我的目标是在各种网络安全主题中为您提供价值,并成为您扩展专业知识或任何有抱负的网络安全专业人士进入该领域的最终目的地。
方法论
想要亲自尝试一下实验室并跟随?您可以在 PortSwigger 的网站上免费查看。
侦察
与任何应用程序一样,我们的第一步是弄清楚我们的攻击媒介将在哪里。
看起来该应用程序的功能非常简单:一个带有没有功能的产品页面的商店。
也没有对应用程序进行身份验证的功能。
接下来,我们来看看 SiteMap。
没有任何东西可以立即包含路径遍历。尽管有 prodcut的检索,但它只是检索产品的 API 调用,而不是特定文件。
/images 文件夹看起来也没有任何功能。
接下来,我们来看看 Proxy 选项卡下的 HTTP History。
看起来我们可能已经找到了入口点!
我们可以看到,有一个 filename 参数用于检索产品页面中使用的图像。
让我们将其发送到 Repeater 进行 som 测试。
测试
由于我们将在这里尝试文件遍历,我们应该首先尝试经典的双点技术:../
这是我们经常通过 Command-Line 界面或在编程以遍历文件目录时看到的一种技术。
让我们试一试:
我们可以看到,此函数的几个变体会产生 400 响应。
让我们使用文件名再次测试它,以确保我们没有遗漏任何内容。
还是一无所获...
让我们退后一步,记住我们实验室的名称。我们可以假设非递归剥离正在发生。
这意味着应用程序可能会查看我们的四个双点序列并将其剥离。
但是,由于它不是递归查看,这意味着它在删除 sequence 后不会再次检查。
这正是我们需要尝试的。
开发
让我们拼凑一下我们的攻击:....//etc/passwd
由于双点序列被移除,这意味着它将给我们留下:../etc/passwd
完善。
让我们试一试。
还是什么都没有!!
但是,信不信由你,这实际上是意料之中的。
我们需要在当前有效负载之前测试更多的 ....// 序列,因为我们的目标文件不太可能只是我们当前位置的上一个文件夹。
我们需要不断后退,直到找到它......
三次遍历看起来是我们需要的正确数量 - 实验室解决了!
我们学到了什么
我们已经了解到 在 Web 应用程序中清理用户输入的重要性。任何时候,只要应用程序天生信任用户可以修改的任何内容,我们就在为危险做好准备。我们还在这里看到了跳出框框思考的重要性。“非递归”是一条直面我们的线索,我们花了一点时间才意识到这一点。
原文始发于微信公众号(安全狗的自我修养):文件路径遍历序列非递归地剥离
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论