2

作为我的安全课程的一部分,我们不得不利用一些安全性较低的 ubuntu 版本中的漏洞。我解决了所有的挑战,但是我遇到了一个问题,我希望有人能解释一下。

每个挑战都是一个 setgid 二进制文件,当它被接管时,攻击者将获得更高级别的特权。为了被添加到该级别的组中,可以运行命令 l33t ,该命令实际上是 run adduser <user> <group>

在我的一个漏洞利用中,我的 shellcode 只是调用了 exec l33t,我收到了这条消息: Insecure dependency in printf while running setgid at /usr/share/perl5/Debian/AdduserCommon.pm 第 64 行。

为了解决这个问题,我创建了一个运行良好的两行 bourne shell:

#!/bin/sh
l33t

谁能解释为什么我看到不安全的依赖问题?

4

1 回答 1

0

如果您还不知道污点模式:它会导致所有用户输入都被标记为“污点”,并且将拒绝输出任何“污点”值(这意味着您必须明确“不污点”不受信任的输入)。

无论如何,第 64 行AdduserCommon.pm是函数sprintf中的一个dief……所以我怀疑发生的情况是,当您l33t直接调用时,adduser脚本遇到某种错误,然后在adduser尝试报告该错误时引发 taint 错误。

于 2010-11-10T19:05:14.480 回答