mah*_*ooL 0 php c linux centos suid
我只想使用具有 root 权限的 php 脚本和像本教程一样的 C 包装器。
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
Run Code Online (Sandbox Code Playgroud)
创建配置.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;
}
Run Code Online (Sandbox Code Playgroud)
测试.php:
<?php
mkdir("/root/ourDir");
?>
Run Code Online (Sandbox Code Playgroud)
索引.php :
<?php
exec("/var/www/html/createConfig");
?>
Run Code Online (Sandbox Code Playgroud)
但是当在浏览器上运行 index.php 时,我收到了这个错误:
sh: /var/www/html/createConfig: Permission denied
Run Code Online (Sandbox Code Playgroud)
谢谢
你应该setgid(getegid()); setuid(geteuid())在打电话之前放system()。
作为旁注,在您的示例中设置文件权限的方式,您的“解决方案”是完全不安全的。任何用户都可以更改要由该 setuid C 程序运行的 .php 脚本的内容,然后使用 C 程序将更改后的内容作为 .php 执行root。
| 归档时间: |
|
| 查看次数: |
1395 次 |
| 最近记录: |