0

我只想像本教程一样使用具有 C 包装器的具有 root 权限的 php 脚本。

ls -l :

-rwsr-xr-x. 1 root root 6466 Aug 15 03:07 createConfig
-rwxrwxrwx. 1 root root  102 Aug 15 04:23 test.php
-rw-r--r--. 1 root root  822 Aug 14 21:35 index.php

创建配置.c:

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>

int main(void) {
    system("/usr/bin/php /var/www/html/test.php");
    return 0;
}

测试.php:

<?php
mkdir("/root/ourDir");
?>

索引.php:

<?php
exec("/var/www/html/createConfig");
?>

但是当在浏览器上运行 index.php 时,我得到了这个错误:

sh: /var/www/html/createConfig: Permission denied

谢谢

4

1 回答 1

5

你应该setgid(getegid()); setuid(geteuid())在调用之前放置system()

作为旁注,在您的示例中设置文件权限的方式,您的“解决方案”是完全不安全的。任何用户都可以更改要由该 setuid C 程序运行的 .php 脚本的内容,然后使用 C 程序将更改的内容作为root.

于 2013-10-25T02:33:10.853 回答