有人可以帮助我理解 chroot 逃生漏洞利用吗?
Can someone help me understand the chroot escape exploit?
我正在尝试了解 chroot 逃逸利用。我正在阅读这篇文章:https://tbhaxor.com/breaking-out-of-chroot-jail-shell-environment/
从这个网站,我找到了这张图:
Chroot escape process
我对它所说的步骤感到困惑
“多个 chdir 会将内核 cwd 更改为/使用 n 次 chdir("..") 系统调用"
为什么是这样?就像 chdir("..") 来自 chrooted 根目录应该只是 return 本身,对吧?但是如果你做了n次,它会带你到主机根目录?为什么你必须做“n”次然后它才有效?
我是你在这里提到的 post 的作者,
因为您不知道当用户执行 chroot 系统调用时 CWD 的确切位置。它可能位于 /home/test/john
或 /home/test/john/mydir
等等。
但是当你执行 chdir("..")
系统调用时,我们在这里说 5 次。在第一种情况下,它会在 3 chdir 中返回到 root 上,当您在根目录上执行 ..
时,它是无效的 read more.
现在在第二种情况下,它将在 4 chdir("..")
个系统调用中将您带到根目录。因此,根目录上的 ..
再次无效。通常,exploits 使用 1000 个 chdirs 只是因为他们不想有任何机会错过实际的根目录。这里的“实际根目录”是指工作目录或 CWD
.
当您执行 chroot 时,它不会更改内核的工作目录或 cwd,而只会更改其中的应用程序 运行。这就是为什么当您不放弃特权并在已经 chroot 的环境中执行双重 chroot 时,它会使您脱离 chroot 监狱。我从 this post 开始理解这个工作。我希望你也会发现它有用。
这里还有一个资源可以让您了解 CWD 和 ROOT 目录之间的区别:https://github.com/earthquake/chw00t#got-that-but-how-does-it-work.
我正在尝试了解 chroot 逃逸利用。我正在阅读这篇文章:https://tbhaxor.com/breaking-out-of-chroot-jail-shell-environment/
从这个网站,我找到了这张图:
Chroot escape process
我对它所说的步骤感到困惑
“多个 chdir 会将内核 cwd 更改为/使用 n 次 chdir("..") 系统调用"
为什么是这样?就像 chdir("..") 来自 chrooted 根目录应该只是 return 本身,对吧?但是如果你做了n次,它会带你到主机根目录?为什么你必须做“n”次然后它才有效?
我是你在这里提到的 post 的作者,
因为您不知道当用户执行 chroot 系统调用时 CWD 的确切位置。它可能位于 /home/test/john
或 /home/test/john/mydir
等等。
但是当你执行 chdir("..")
系统调用时,我们在这里说 5 次。在第一种情况下,它会在 3 chdir 中返回到 root 上,当您在根目录上执行 ..
时,它是无效的 read more.
现在在第二种情况下,它将在 4 chdir("..")
个系统调用中将您带到根目录。因此,根目录上的 ..
再次无效。通常,exploits 使用 1000 个 chdirs 只是因为他们不想有任何机会错过实际的根目录。这里的“实际根目录”是指工作目录或 CWD
.
当您执行 chroot 时,它不会更改内核的工作目录或 cwd,而只会更改其中的应用程序 运行。这就是为什么当您不放弃特权并在已经 chroot 的环境中执行双重 chroot 时,它会使您脱离 chroot 监狱。我从 this post 开始理解这个工作。我希望你也会发现它有用。
这里还有一个资源可以让您了解 CWD 和 ROOT 目录之间的区别:https://github.com/earthquake/chw00t#got-that-but-how-does-it-work.