蜗蜗侠's Blog-关注网络安全移动版

主页 > 技术笔记 >

从代码层来讲如何让PHP后门权限持久化

简介

很多人拿到网站的权限后,不知道如何把权限持久化

其实大多数人拿到权限后,都会在网站中留一个后门

如果后门没有被杀软扫到,那么这个后门存活时间相对不免杀后门肯定会大大增加

因为我书读得少,所以我单从代码层来讲如何权限持久化:)

 

一般的PHP后门

像这样:

这样(回调函数):

 

杀软查杀原理

一般的杀软查杀木马,都是通过正则表达式来匹配脚本内容

如果匹配出结果,则表示该脚本可能是木马文件

 

如何让正常代码执行恶意命令

看到这段代码你会想到它能执行恶意命令吗?

好吧,正常情况下,这玩意还会报错,执行个毛线的命令…

那非正常情况下呢?

 

PHP中的全局变量注册开关

register_globals:该选项在设置为ON的情况下,会直接把用户request过来打参数注册成全局变量并初始化值为参数对应的值,而且该值能直接在脚本中使用

从php5.3.0起该配置项被废弃,在php5.4.0中移除了该配置项

OK,说了这么多,到底如何上上面原本安全的代码执行命令呢?

 

设置PHP配置,让原本安全的代码执行命令

在php.ini中添加下面的代码:

然后,新建一个脚本文件test.php并写入下面的代码:

然后访问该URL:

https://www.test.com/test.php?a=eval&b=phpinfo();

你会惊奇的发现,页面居然显示了phpinfo的信息

为什么会这样呢?

 

为什么会这样呢?

上文中说道了,如果register_globals设置为ON,将会把用户request过来的参数注册为全局变量,并可直接在脚本中使用

所以我们只要在url中增加参数,php就会自动把参数名设置为变量名,参数值设置为变量值

所以PHP处理上面URL中的参数时,自动创建了变量并赋值:

到最后那段安全的代码会变成下面这样:

 

最后

经过我测试呢,D盾,安全狗这两款杀软都没有查杀到

没有查杀就代表你的后门被发现的时间就长

后门时间长,权限即持久化

对了,因为我懒,所以最近没测试代码是否被杀

不过应该没有被杀

还有,该配置项只在PHP版本小于5.4.0中可用

(责任编辑:蜗蜗侠)