技术笔记

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

字号+ 作者:wd0g 来源:转载 2016-12-17 08:49 我要评论( )

简介 很多人拿到网站的权限后,不知道如何把权限持久化 其实大多数人拿到权限后,都会在网站中留一个后门 如果后门没有被杀软扫到,那么这个后门存活时间相对不免杀后......

简介

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

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

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

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

 

一般的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中可用


本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Note/436.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评
暂时未开启评论功能~