运行setgid时printf中的不安全依赖

时间:2010-11-10 18:47:01

标签: security exploit

作为我的安全类的一部分,我们必须在安全性较低的ubuntu版本中利用许多漏洞。我解决了所有的挑战,但是我遇到了一个问题,我希望有人可以解决这个问题。

每个挑战都是一个setgid二进制文件,在接管时会为攻击者提供下一级权限。为了添加到该级别的组,可以运行基本上运行adduser <user> <group>的命令l33t。

在我的一个漏洞中,我的shellcode只是调用了exec l33t,我收到了这条消息: 运行setgid时,printf中的不安全依赖性 /usr/share/perl5/Debian/AdduserCommon.pm第64行。

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

#!/bin/sh
l33t

有谁可以解释为什么我看到了不安全的依赖问题?

1 个答案:

答案 0 :(得分:0)

如果您还不知道taint mode:它会导致所有用户输入被标记为“污染”,并且将拒绝输出任何“污染”值(暗示您必须明确地“取消” “不信任的输入。”

无论如何,AdduserCommon.pm的第64行是sprintf函数中的dief ...所以我怀疑当你直接致电l33t时,发生的事情是{ {1}}脚本遇到某种错误,然后在adduser尝试报告错误时引发污点错误。