如何和管理员玩躲猫猫/权限维持
- 有些时候,当你对于一个服务器getshell以后,例如有一个webshell,但是可能被对方的管理员发现,在发现之前我们有什么办法让自己的后门藏起来呢,方便被删权限以后再次控制机器 都是基本操作 别笑我 求求你们了
本文环境
ubuntu 16.04 + php + mysql
另外不同操作基于不同权限 有可能是root 有可能是webserver的权限
Webshell/Web
>* 基于web服务的一句话下和管理员进行的捉迷藏
一个最简单的webshell一句话
![19fe7b01181cd44f1a7a30cfa3a57029.png](https://i-blog.csdnimg.cn/blog_migrate/78819a114fc5b916d01d210f87ffa545.jpeg)
1.藏于一些对方的文件下,比如upload/image/等文件夹里夹带着大量文件的文件夹
1.你可以直接写成php后缀的文件 当然 这很容易被发现
2.可以利用htaccess文件进行重写
在我的环境下(上文提及) 默认是不开启rewrite
ps:我以前是在的centos之类的做的多 ubuntu我还找了一下配置文件
sudo a2enmod rewritesudo vim /etc/apache2/sites-enabled/000-default#将/var/www 下的AllowOverride None 修改为 AllowOverride All,如果没有看到这项内容,可以修改apache2.conf配置文件:sudo vim /etc/apache2/apache2.confsudo /etc/init.d/apache2 restart
![d82486248bbbf3b4a0e9a930d90ee886.png](https://i-blog.csdnimg.cn/blog_migrate/909cf1dd7538ed87927f34ca4da3d970.jpeg)
基于htaccess bakcdoor操作的有很多我也是抛砖引玉
弊端:
- 虽然说大部分网站都是会主动开启rewrite 但是还是怕脸黑 如果需要开rewrite 是需要root权限重启服务的 而且修改的配置文件多 动静大
- 越来越多的管理员有安全意识 类似存放Img文件 doc文件会开启禁止执行的权限限制
优点:
- 虽然也不算什么优点 但还是说说
- .htaccess 在linux中是.开头 属于隐藏文件 ls可能还没看见
- 如果在一个正常的图片中插入代码可能更难发现
img code img code
- 权限在不用开启rewrite的情景下 只用webserver
- 另外 如果文件名最好是符合同文件夹下的命名规则 例如xxx时间撮.jpg 这样子管理员追查日志更难找到 而不是醒目的1.jpg konjac.jpg xxx.jpg....
- 暂时想不到 loading....还有关于这种操作的技巧希望还有大佬们讲讲
2.藏于php.ini
- php.ini是php的配置文件 可以用来控制php的某些功能 在这个文件上可以做很多操作
举个例子
在/etc/php7.0/apache2/php.ini中 (本文测试环境,以后的路径都不再说明)
; Automatically add files before PHP document.; http://php.net/auto-prepend-fileauto_prepend_file =; Automatically add files after PHP document.; http://php.net/auto-append-fileauto_append_file =
其中有这样子的2个配置
auto_prepend_file =
auto_append_file =
根据注释可以看明白 一个是在php文档之前自动添加文件。一个是在php文档后自动添加文件。
我们来实验一下
修改php.ini文件 这个参数是受到include_path限制的 所以我们给这2个参数进行修改 我这里放在了网站目录 你也可以放在别的php有权限的地方更加隐蔽 比如/tmp /etc/php/xxx/等等
![906d202c6a3bcb3caa689ed8dce76781.png](https://i-blog.csdnimg.cn/blog_migrate/dd762f85b3195dd5d36036bbc40bb50d.jpeg)
修改参数以后我一直重启php发现没有生效 然后才知道是重启apache
重启以后访问一个文件
![35c25daa6648af957227f7504709950b.png](https://i-blog.csdnimg.cn/blog_migrate/cf44cfe65cfb0744c4f5a6b479541af1.jpeg)
的确是在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秒的生效时间 结果发现是
不管是 nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法
apache 一般不是fastcgi 得装模块 为了节省时间我就用.htaccess来实验
注意.htaccess的写法 有点不一样
![3f74add9a82fb1714b173f5dff555776.png](https://i-blog.csdnimg.cn/blog_migrate/d4db377c6108c55bbdcf48e67411e151.jpeg)
只是一些很多年前就有的操作了 希望有大佬们多分享一下
优点:
- 可以知道 我们只要有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下来 然后解压
$ cd phpxxx/$ ./configure $ make$ cd etx$ ./etx_skel --extname=konjac # [backdoorname]$ cd konjac
在创建的文件中,有一个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这个文件 取消下面三行的注释
#这里的注释不是# 是dnl PHP_ARG_ENABLE(backdoor, whether to enable backdoor support, Make sure that the comment is aligned: [ --enable-backdoor Enable backdoor support])
然后顺手改改konjac.c里面的代码 看看测试效果
PHP_MINFO_FUNCTION(konjac){ php_info_print_table_start(); php_info_print_table_header(2, "konjac test hack