问题标签 [directory-traversal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
423 浏览

directory-traversal - 关于目录遍历的问题

我正在解决这个问题:

https://www.hackthissite.org/missions/realistic/3/

上面的网站被黑了,我们的工作是把它恢复到原来的状态。我从查看源代码开始。黑客留下了一条评论:

“站长请注意,该网站已被黑客入侵,但并未完全破坏。旧网站仍在运行。我只是将旧的 index.html 文件复制到 oldindex.html 并重新制作了这个。不便之处,敬请原谅。”

因此我去了https://www.hackthissite.org/missions/realistic/3/oldindex.html

然后我点击提交诗歌。在名称字段中,我放置了 ../index.html,在诗歌字段中,我放置了页面的源代码:

www(dot)hackthissite.org(dot)missions/realistic/3/oldindex(dot)html。

我得到了正确的答案;但是,我不太明白这是如何工作的。

  1. 首先,您如何知道某些东西何时容易受到目录遍历的影响。我这样做是因为我查看了论坛,但我怎么知道目录遍历是一个选项?

  2. 如果你点击读诗 --> '诗名' 你会得到一个这样的网址:

    www(dot)hackthissite(dot)org/missions/realistic/3/readpoem(dot)php?name=The%20Idiot

    在那种情况下,使用 ../index.html 的最终网址不会是:

    www(dot)hackthissite(dot)org/missions/realistic/3/?name=index(dot)html

    不是 www(dot)hackthissite(dot)org/missions/realistic/3/index(dot)html

对不起(点)。我需要更多的声誉来发布更多的链接。

0 投票
1 回答
8460 浏览

php - 如何以纯文本形式查看php文件?

我已经通过路径遍历技术下载了一个网站的 php 文件,但是当我用记事本和记事本++打开文件时,我只得到加密的文本。是否有任何可行的方法可以以纯文本形式查看该文件并了解该文件中的内容,我只是出于教育目的。帮帮我

我在该记事本文件中得到以下文本,

注意:我从整个文件中只复制了几行

0 投票
1 回答
3292 浏览

apache - 显示目录树而不是 index.html

即使 index.html/php 存在,如何定义 apache 虚拟主机以显示目录树?

0 投票
3 回答
174 浏览

perl - 在 Perl 中迭代目录,得到可自省的对象作为结果

我即将开始一个可能有一些文件查找和操作的脚本,所以我想我会研究一些对我有帮助的包;大多数情况下,我希望将迭代(或搜索)的结果作为对象返回,这些对象将具有(基本)名称、路径、文件大小、uid、修改时间等作为某种属性。

问题是,我不经常这样做,而且往往会忘记 API;发生这种情况时,我宁愿让代码在示例目录上运行,并将所有属性转储到一个对象中,这样我就可以提醒自己在哪里可用(显然,我想“转储”,以便以避免必须对自定义打印输出进行编码)。但是,我知道以下几点:

列出对象的所有方法 - perlmonks.org
“开箱即用的 Perl 不做对象自省。像 Moose 这样的类包装器提供自省作为其实现的一部分,但 Perl 的内置对象支持远比这更原始。”

无论如何,我调查了:

...并开始查看那里提到的库(还有相关链接:rjbs's rubric: the speed of Perl file finders)。

所以,一方面,File::Find::Object似乎对我有用;这个片段:

...打印这个:

...这主要是我想要的,除了stat结果是一个数组,我必须知道它的布局(($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) stat - perldoc.perl.org)才能理解打印输出。

然后我查看了IO::All,因为 utf-8 处理,我喜欢它(还有,比如说,套接字功能,这对我在同一个脚本中执行不相关的任务很有用);我想我会改用这个包。问题是,我很难发现返回的对象中的可用字段是什么;例如使用此代码:

...我得到这样的打印输出:

...这显然不显示诸如mtime等属性 - 即使它们存在(如果您取消注释相应的打印行,您可以看到)。

我也尝试过Data::Printer's ( How can I perform introspection in Perl? )p()功能 - 它打印的字段与Dumper. 我还尝试使用print Dumper \%{ref ($contentry) . "::"};列出对象的所有方法 - perlmonks.org),这会打印出如下内容:

...但前提是您print $contentry->uid ...事先使用该行;否则他们没有列出!我想这与此有关:

introspection - 如何在 Perl 中列出给定对象或包的可用方法?#911294
通常,您不能使用像 Perl 这样的动态语言来执行此操作。该包可能定义了一些您可以找到的方法,但它也可以即时组成在您使用它们之前没有定义的方法。此外,即使调用一个方法(有效)也可能不会定义它。这就是使动态语言变得更好的东西。:)

尽管如此,它仍会打印字段的名称和类型——我想要的是字段的名称和值。

所以,我想我的主要问题是 - 我如何转储IO::All结果,以便所有字段(包括字段stat)都打印出它们的名称和值(大多数情况下File::Find::Object)?

(我注意到IO::All结果可以是类型,比如IO::All::File,但它的文档遵循“See IO::All ”,根本没有IO::All::File明确讨论。我想,如果我可以“ cast"\%{*$contentry}到 a IO::All::File,然后可能mtime会打印 etc 字段 - 但这样的“演员”可能吗?)

如果这是有问题的,是否有其他软件包可以内省地打印目录迭代结果 - 但对于单个stat属性有命名字段?

0 投票
3 回答
8805 浏览

security - 验证 Web 服务器中的路径遍历漏洞

我想验证我的 Web 应用程序没有路径遍历漏洞。

我正在尝试使用curl它,如下所示:

我希望明确向/directory/../URL 发出 HTTP 请求,以测试涉及代理的特定 nginx 规则是否不易受到路径遍历的影响。即,我希望发送这个 HTTP 请求:

但是curl正在重写/URL 的请求,从输出中可以看出:

是否可以curl用于此测试,强制它在请求中传递确切的 URL?如果没有,什么是合适的方法?

0 投票
1 回答
1176 浏览

fat32 - 遍历 fat32 文件系统

我已经用 Fat32 格式化了一个拇指驱动器,并将一个文件放在名为 sampleFile.txt 的根目录中,内容为“oblique”。我在 Disk Investigator 中查看了驱动器,发现在 RootDirSector: 扇区 4096 以下

如何找到文件实际数据所在的扇区簇的位置?以下是一些附加信息:

0 投票
5 回答
6055 浏览

c++ - 在 NTFS 上打开许多小文件太慢了

我正在编写一个应该处理许多小文件的程序,比如数千甚至数百万。我一直在用 500k 文件测试该部分,第一步只是迭代一个目录,其中包含大约 45k 目录(包括子目录的子目录等)和 500k 小文件。遍历所有目录和文件,包括获取文件大小和计算总大小大约需要 6 秒。现在,如果我尝试在遍历时打开每个文件并立即关闭它,它看起来就像它永远不会停止。事实上,它需要的时间太长(几个小时......)。由于我在 Windows 上执行此操作,因此我尝试使用 CreateFileW、_wfopen 和 _wopen 打开文件。我没有在文件上读取或写入任何内容,尽管在最终实现中我只需要读取。但是,我在任何尝试中都没有看到明显的改进。

我想知道是否有更有效的方法来使用任何可用函数打开文件,无论是 C、C++ 还是 Windows API,或者唯一更有效的方法是直接读取 MFT 并读取磁盘块,我我想避免吗?

更新:我正在处理的应用程序正在使用版本控制进行备份快照。因此,它也有增量备份。500k 文件的测试是在一个巨大的源代码存储库上完成的,以便进行版本控制,类似于 scm。因此,所有文件都不在一个目录中。也有大约 45k 目录(如上所述)。

因此,压缩文件的建议解决方案无济于事,因为备份完成后,即会访问所有文件。因此,我不会从中受益,甚至会产生一些性能成本。

0 投票
0 回答
241 浏览

python - 如何检查其中一个负载均衡器是否容易发生路径遍历?

我正在对一个网站进行渗透测试,并试图找出任何路径遍历问题。

我创建了可能是路径遍历的易受攻击参数,并成功使用 ' ../../ ' 下载了 2 个文件。我几乎同时下载了这两个文件。1 后 1。两次下载之间的时间延迟约为 10 秒或更短。

然后我尝试获取另一个文件并没有得到任何响应,从那一刻起,我在尝试下载任何文件时都没有得到任何响应(即使是我能够在 2-3 分钟前下载的前 2 个文件) .

它也有 ModSecurity 和几个负载均衡器,我的想法是,当我成功下载这两个文件时,我只是点击了一个未配置的负载均衡器。

提到我试图以某些方式绕过负载平衡器,包括尝试直接从 IP 下载文件。没有任何成功。

因此,我正在考虑构建一个简单的 python 脚本,该脚本将尝试使用 urllib python 库从特定的似乎易受攻击的参数中获取有效文件:

由于我是 python 新手,我知道这段代码不是最好的解决方案,并且会花费大量时间(如果有的话)它会获取文件。

如何改进我的代码,以便在更短的时间内完成每个连接(例如:如果没有得到响应,则在 3 秒后终止连接)并使用多个线程来完成它?(1o 左右)。

谢谢

0 投票
0 回答
328 浏览

python - 无法使用 os.walk() 遍历 python 中的目录树,因为它说未定义名称

所以作为作业的一部分,我必须遍历目录树,似乎 os.walk 是最好的选择。我正在使用 cygwin 运行我的 python 脚本。我要遍历的树的路径是:/cygdrive/c/Users/Kamal/Documents/School/Spring2015/CS410/htmlfiles

所以在我的代码中,这里是 os.walk() 调用的片段:

但是,当我执行脚本时,它给了我以下错误:

我很困惑为什么它认为“Spring2015”是未定义的?该目录显然存在于我计算机上的给定路径中

编辑:这是整个代码,因为有些人问过:

0 投票
1 回答
522 浏览

perl - 如何使用 Net::OpenSSH 安全地写入远程文件

假设应用服务器从客户端接收二进制 blob 并将其写入远程主机上的文件。

鉴于文件名是来自客户端的用户输入,在(应用程序)服务器上必须做些什么来防止攻击(目录遍历攻击)?

用于连接远程主机的用户帐户有一个主目录/home/datauser,不应访问其主目录之外的任何内容。

这是代码:

这是一个好方法吗?是否存在更多漏洞?

注意:需要随机访问,所以不能使用 scp。