让PHP以ROOT权限执行系统命令的方法
|
用来作为解决php以root权限执行一些普通用户不能执行的命令或应用的参考。 '; Last line of the output: ' . $last_line . ' Return value: ' . $retval; ?> 在浏览器中浏览。 my uid :48 my euid :0 after setreuid uid :0 afer sertreuid euid :48 -------------------------------------------------------------------------------- Last line of the output: afer sertreuid euid :48 -------------------------------------------------------------------------------- Return value: 0 该命令执行成功。 从显示结果可以看出: apache(daemon)的uid 为48(事实上很多linux系统下daemon的uid为2)。 调用setreuid后将有效用户id和实际用户id互换了。(必须在chmod u+s生效的情况下) 使apache当前的uid为0这样就能执行root命令了。 只需要更改 C文件中的system所要执行的命令就可以实现自己的PHP以root角色执行命令了。 在玩C 以前 玩过一段时间的PHP,哪个时候需要用PHP 来运行root命令,一直未果,直到有一天搜索到了super这个插件. 随着玩C的日子多了.发现可以用C语言来包裹 要运行的外部命令. 实验了一下.成功了. 不需要任何外部工具就可以实现用PHP 执行root命令. 我下面就把方法发布给大家,有需求用php来运行root命令的朋友可以不用发愁了. 平台:Linux. 实验命令iptables 当前的目录是/var/www/html/http 写程序的时候 用root用户 大家都知道iptables 非root用户不能运行. 首先写个C程序 命名为:ipt.c <div class="codetitle"><a style="CURSOR: pointer" data="63219" class="copybut" id="copybut63219" onclick="doCopy('code63219')"> 代码如下:<div class="codebody" id="code63219"> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main() { uid_t uid,euid; uid = getuid() ; euid = geteuid(); printf("my uid :%un",geteuid()); system("/sbin/iptables -L"); //执行iptables -L命令 return 0; } 编译该文件 gcc -o ipt -Wall ipt.c 在该路径下生成ipt 这个可执行文件. 如果现在用PHP网页调用 该ipt的话,即使setreuid了 也是不行的. 接下来要做的是chmod u+s ./ipt ls 一下 -rwsr-xr-x 1 root root 5382 Jul 2 21:45 ipt s位已经设置上了. 再写一个php页面调用它. <div class="codetitle"><a style="CURSOR: pointer" data="44657" class="copybut" id="copybut44657" onclick="doCopy('code44657')"> 代码如下:<div class="codebody" id="code44657"> <?php echo ' '; Last line of the output: ' . $last_line . ' Return value: ' . $retval; ?> 在浏览器中浏览. [color=Red]Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED Chain OUTPUT (policy ACCEPT) target prot opt source destination [/color] [color=Blue]my uid :48 my euid :0 after setreuid uid :0 afer sertreuid euid :48[/color] -------------------------------------------------------------------------------- Last line of the output: afer sertreuid euid :48 -------------------------------------------------------------------------------- Return value: 0 该命令执行成功.. 众所周知: apache的uid 为48. 调用setreuid后 将有效用户id 和实际用户id互换了.(必须在chmod u+s生效的情况下) 使apache当前的 uid为0 这样就能执行root命令了。 大家只需要更改 C文件中的 system所要执行的命令就可以实现自己的PHP执行root命令了. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
