Last updated on August 18, 2025 pm
命令执行漏洞是指服务器没有对执行的命令进行过滤,用户可以随意执行系统命令
漏洞原理
应用程序有的时候需要调用一些系统命令,在php中,可以执行命令的函数有 system() exec() shell_exec() passthru() popen() proc_open() pcntl_execl() 等,当黑客能够控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常的命令中,从而造成RCE攻击
漏洞危害
- 控制服务器,执行系统命令或者读写文件
- 反弹shell
前置知识
操作系统连接符
- 分号 ’;‘ : 多条命令无论对错顺序执行
- & : 多条命令无论对错顺序执行
- && :前面命令执行不成功后面的命令不执行
- | : 前面命令执行得到结果作为后面命令的输入
- || :前面命令执行成功后面的命令不执行;前面的命令执行失败则后面的命令执行
WAF绕过
空格过滤绕过
大括号 {}
IFS 代替空格
linux环境中有一个特殊的变量 IFS,叫做内部字段分隔符
重定向字符
< ,<>
%09绕过 - Tab 键
url编码,get方式使用
黑名单绕过
?? , * 绕过
单双引号,反引号绕过
反斜杠绕过
特殊变量 $1-$9 $@ $*
内联执行绕过
利用linux中的环境变量
1
| /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Program Files/Common Files/Oracle/Java/javapath:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0/:/mnt/c/Windows/System32/OpenSSH/:/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/Bandizip/:/mnt/c/Tools/MISC/steghide:/mnt/c/Program Files/Git/cmd:/mnt/c/phpstudy_pro/Extensions/MySQL5.7.26/bin/:/mnt/c/Tools/MISC/Stegdetect:/mnt/c/Tools/PWN/checksec:/mnt/c/Program Files/Wireshark:/mnt/c/Program Files/nodejs/:/mnt/c/Users/Lixiney/scoop/shims:/mnt/c/Users/Lixiney/AppData/Local/Microsoft/WindowsApps:/mnt/c/Tools/Ciphey-5.14.0:/mnt/c/Users/Lixiney/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/c/Program Files/JetBrains/PyCharm 2024.1/bin:/mnt/c/Program Files/JetBrains/CLion 2023.3.4/bin:/mnt/c/Users/Lixiney/AppData/Roaming/npm
|
1
| cat f${PATH:5:1}${PATH:8:1}${PATH:66:1}
|
${PATH:5:1} 表示取路径的第五位,从0开始,步长为1
其他常见绕过方式
base64 编码
1
| cat flag --> Y2F0IGZsYWc=
|
base32 编码
同base64编码
其他编码
同上
读取命令绕过 cat
可以使用下面的命令替换
- tac 反向显示,从最后一行开始读取
- more
- less
- tail 查看末尾几行
- nl 显示行号
- od 以二进制形式读取文件
- sort
- uniq
- strings