如何和管理员玩躲猫猫/捉迷藏

作者前言:有些时候,当你对于一个服务器getshell以后,例如有一个webshell,但是可能被对方的管理员发现,在发现之前我们有什么办法让自己的后门藏起来呢,方便被删权限以后再次控制机器 都是基本操作 别笑我 求求你们了。。。。:)

本文环境

ubuntu 16.04 + php + mysql

另外不同操作基于不同权限 有可能是root 有可能是webserver的权限

Webshell/Web

>*基于web服务的一句话下和管理员进行的捉迷藏

一个最简单的webshell一句话

1.藏于一些对方的文件下,比如upload/image/等文件夹里夹带着大量文件的文件夹

1.你可以直接写成php后缀的文件 当然 这很容易被发现

2.可以利用htaccess文件进行重写

在我的环境下(上文提及) 默认是不开启rewrite

ps:我以前是在的centos之类的做的多 ubuntu我还找了一下配置文件

基于htaccess bakcdoor操作的有很多我也是抛砖引玉

弊端:

虽然说大部分网站都是会主动开启rewrite 但是还是怕脸黑 如果需要开rewrite 是需要root权限重启服务的 而且修改的配置文件多 动静大

越来越多的管理员有安全意识 类似存放Img文件 doc文件会开启禁止执行的权限限制

优点:

虽然也不算什么优点 但还是说说

.htaccess 在linux中是.开头 属于隐藏文件 ls可能还没看见

如果在一个正常的图片中插入代码可能更难发现

权限在不用开启rewrite的情景下 只用webserver

另外 如果文件名最好是符合同文件夹下的命名规则 例如xxx时间撮.jpg 这样子管理员追查日志更难找到 而不是醒目的1.jpg konjac.jpg xxx.jpg....

暂时想不到 loading....还有关于这种操作的技巧希望还有大佬们讲讲

2.藏于php.ini

php.ini是php的配置文件 可以用来控制php的某些功能 在这个文件上可以做很多操作

举个例子

在/etc/php7.0/apache2/php.ini中 (本文测试环境,以后的路径都不再说明)

其中有这样子的2个配置

auto_prepend_file =

auto_append_file =

根据注释可以看明白 一个是在php文档之前自动添加文件。一个是在php文档后自动添加文件。

我们来实验一下

修改php.ini文件 这个参数是受到include_path限制的 所以我们给这2个参数进行修改 我这里放在了网站目录 你也可以放在别的php有权限的地方更加隐蔽 比如/tmp /etc/php/xxx/等等

修改参数以后我一直重启php发现没有生效 然后才知道是重启apache

重启以后访问一个文件

的确是在test.php 前面自动include了一个文件

然后我们延伸一下 自php5.3开始 php支持基于每个目录的.htaccess风格的ini文件 说的通俗点 除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。

当然了 不是php.ini所有的设置你都可以做操作 是有具体模式的

PHP_INI_USER 可在用户脚本(例如 ini_set())或 Windows 注册表(自 PHP 5.3 起)以及 .user.ini 中设定

PHP_INI_PERDIR 可在 php.ini,.htaccess 或 httpd.conf 中设定

PHP_INI_SYSTEM 可在 php.ini 或 httpd.conf 中设定

PHP_INI_ALL 可在任何地方设定

具体模式可以看官方的文档http://php.net/manual/zh/ini.list.php

实际上 除了 php_ini_system 别的都可以利用 .user.ini控制

一开始我的.user.ini一直未生效 以为是有300秒的生效时间 结果发现是

apache 一般不是fastcgi 得装模块 为了节省时间我就用.htaccess来实验

注意.htaccess的写法 有点不一样

只是一些很多年前就有的操作了 希望有大佬们多分享一下

优点:

可以知道 我们只要有webserver的权限就kyii通过.htaccess/.user.ini来控制所有的php文件包含后门

动静不大 动的东西不多

弊端:

隐藏性不高 有经验的人都能发现

待补充....

3.制作.so扩展后门

PHP扩展简介

PHP扩展库(在Linux中为.so,在Windows中为.dll),它们提供了添加可以从执行的PHP脚本调用的新函数集的可能性。扩展可以使用php.ini文件中的定义自动加载,参数名为“extension”; 或者使用函数dl()从将要执行的PHP脚本代码动态执行 另外刚刚去看了看官方手册 dl函数已经在新版本删了

0x01:

http://cn2.php.net/distributions/

先去下载一个php下来 然后解压

在创建的文件中,有一个konjac.c文件 然后这里写明几点

PHP_FUNCTION() 是用来 将被导出 以便用来 从php中执行的函数 这里可以定义所需要的新功能。

PHP_MINT_FUNCTION() 每当php解析器启动时,都会执行你利用这个注册的代码,还有一个就是 你添加的代码都是root身份执行的,是一种使用特权执行代码的方法。

PHP_MSHUTDOWN_FUNCTION() 这个代码是应该在停止php解析器之前执行的 看这个shutdown的单词就猜到了

PHP_RINT_FUNTION() 这个是在php文件执行启动时执行

PHP_RSHUTDOWN_FUNCTION() 这个是在php文件执行结束时执行。

PHP_MINFO_FUNCTION() 这个是以phpinfo的形式显示。用来检测扩展是否正确加载。

我们打开config.m4这个文件 取消下面三行的注释

然后顺手改改konjac.c里面的代码 看看测试效果

修改保存以后执行

成功的效果图:

然后修改php.ini

我测试了3个小时 自己给自己挖了个坑 发现网上大多是php5的扩展编译资料 没看到php7的 一直不知道为何get或者post的参数获取不到 后来想了想 我都能编译扩展库了 system函数一把梭

在konjac.c中添加如下demo测试代码

这样子我每次访问php文件就会执行这个代码

另外 这里时间关系就不演示了 说明几点

可能说这个动的文件多 但是这里操作空间很大

比如 php.ini加载是加载一次的 所以我们可以

利用PHP_MINT_FUNCTION(是root权限)在php开启的时候把php.ini里面的extension删除 然后修改时间撮

利用PHP_MSHUTDOWN_FUNCTION在php服务关闭的时候把php.ini里面的extension加回来 然后修改时间撮 但是如果对方不是重启 只关闭就可以发现了 想想还有什么骚操作?抛砖引玉

顺便记一个东西

zend_eval_string是在c语言中执行php代码

还有不死马 写进内存 php定时任务之类的 就先不说了。网上都有很多很多总计

web方面的大概写在这里 有点累 其实都是一些老操作 大佬们笑笑就好了

基于MYSQL

1. mysql定时任务

也可以写文件 或者执行系统命令之类的 反正都是mysql语句 不一一描述

基于linux文件

linux的功能性强 操作空间也特别大

crontab 定时任务

crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

ubuntu的情景下

如何让管理员执行我们的命令

比如我们执行一个命令

是等同于

那么我们如果在/bin/cat 里面藏后门呢

然后执行cat test 结果发现成功打印但是一直在输入的状态

是因为没有参数传给back_cat 所以我们可以利用$1 获取shell的参数来传给back_cat

执行

然后又思考了一下 如果屌丝管理员cat 2个文件 或者别的命令有别的参数呢

执行

是成功执行了cat的作用和实现执行自己的命令的

另外一些命令记录一下

Linux/Unix 添加 UID 为 0 的用户(肯定是要root权限的啦)

然后去/etc/passwd /etc/shadow中把最后一行 属于backdoor的信息 移到中间 迷惑管理员的眼睛

虽然一个的事情 但是说不定可以骗骗半桶水

修改时间撮

语法:touch -t +时间撮

ps:前几个星期听某师傅说某公司的检测后门基于时间撮 我也是醉了 哈哈

添加bash后门

添加ssh后门

执行这个命令以后 ssh这个服务器5555端口 任意密码既可登录root

.bashrc

在中每次打开新的shell都会自动执行命令

还有LINUX pam 后门 linux openssh后门 rookit后门 各种各样的藏后门 我依稀记得一年前有个师傅还能在ssh的config里面藏后门 基于密钥的那种 手法太多了 说三天三夜也说不完

综上所述:

思考与对抗

是否可以建立一个linux所有文件的hash对照表 检测什么文件发生了变化 以至于 管理员进行检测

多对系统进行备份

也是一些比较简单的操作 但是如果混合起来运用 可以恶心管理员的 如果你熟练掌握以后 再加上一些骚操作

触类旁通:比如cat 或者 vi 会不会遇到哪种字符会终止 遭到截断 有什么文件 在shell情景下较难删除

如何让自己的动静小 尽最大努力保持文件hash 不变 时间撮不变

如何清理自己操作的日志

如何记录hack操作的日志

参考资料:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190123B0DEVW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券