C权限提升(带密码)

时间:2010-05-30 21:53:32

标签: c passwords permissions privilege escalation

我需要编写一个C程序,允许我读/写root拥有的文件。但是,我只能在另一个用户下运行代码。我有root密码,但系统上没有“sudo”或“su”命令,所以我无法访问root帐户(实际上几乎没有shell命令)。我不太了解UNIX权限,所以我不知道实际上是否可以在不以某种方式利用系统或运行root本身拥有的程序(使用+ s或其他)的情况下执行此操作。有什么建议吗?

谢谢!

P.S。不,这不是恶意的,这是在iPhone上。

3 个答案:

答案 0 :(得分:2)

在UNIX权限系统下,您需要运行root本身拥有的文件,该文件标记为setuid-root(+ s,如您所说)或与已经以root身份运行的某个进程通信。

如果没有这样的档案,那你就不走运了。

答案 1 :(得分:1)

您可以通过将suid位设置为应用程序来执行此操作,但是如果您希望从此c application运行一个shell,则可以在本地用户上运行,如果您通常这是安全系统。

但是,您可以{root}拥有read/write/execute个文件,但如果您的用户不在文件组中,则目标文件必须在最后3位设置read/write/execute或者您的用户位于文件所有者组中你必须在中间位置检查/应用这个3位。 (3个第一位设置对所有者的许可,但这可能不是由您提供的可用信息)。

如果您无法访问root帐户。然后,如果组和其他用户权限不能访问您必须具有的功能,除了尝试获取一些prilveaged用户访问此文件之外,您无法做任何事情。在其他情况下,您可以对文件访问权限进行一些修复,但不能从此系统进行修复,您必须从此设备获取硬盘并附加到其他设备以进行更改或在此设备上加载一些系统来改变这个。但是,您可以在特权系统上执行此操作,而不是在此。

有关SUID bits的更多信息,请访问:

http://www.codecoffee.com/tipsforlinux/articles/028.html

http://www.everyjoe.com/newlinuxuser/explain-what-is-setuid-and-setgid/

答案 2 :(得分:0)

iPhone SDK不允许这样做。您的应用程序是沙盒,除非Apple提供非常具体的方式,否则不允许将其放在该沙箱之外。在iPhone上执行此操作的唯一方法是越狱。