审计之代码防御错误示范【1】

admin 2023年11月30日17:00:42评论8 views字数 703阅读2分20秒阅读模式

最近在看一个中等规模的源码。发现它存在一些错误的代码防御手段。因此列举一处出来。都还是比较基础简单。

防止目录穿越(这里是一处文件下载功能)

if (path.startsWith("/"|| path.startsWith("./"||path.startsWith("../"))
      return

if (FileName.startsWith("/"|| FileName.startsWith("./"|| FileName.startsWith("../"))
      return

这个显而易见不能成功防御目录穿越漏洞的。

为什么呢。

  • 在不同的操作系统中,文件路径分隔符可能不同(例如,Windows使用反斜杠 ,而Unix/Linux使用正斜杠 /)。实际情况下:在windows上使用 / 作为文件路径分割符都可以识别成功。

  • 编码问题:在Web应用中,用户输入的路径可能经过URL编码。因此,需要检测编码防止编码绕过。

文件处理方式

有时候我们上传一个asp/jsp/php,成功传上去也知道文件路径,但是访问路径结果下载到本地了。这种情况下就是后端对不同文件处理方式不同导致的。

文件是在线读取还是下载:
Content-Disposition设置为attachment 下载
Content-Disposition为inline。在线读取

如处理文件代码:

response.setHeader("Content-Disposition""attachment; filename="example.txt"");



原文始发于微信公众号(天才少女Alpha):审计之代码防御错误示范【1】

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月30日17:00:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   审计之代码防御错误示范【1】https://cn-sec.com/archives/2255538.html

发表评论

匿名网友 填写信息