如果我将nc or
curl` bins 上传到我的 Web 服务器的根目录,我可以使用(GET|POST)请求远程运行命令吗?
http://website.com/nc -lv 1234
http://website.com/curl http://foo.com -o bar.txt
http://website.com/curl%20http%3A%2F%2Ffoo.com%2F%20-o%20bar.txt
上述示例似乎不起作用。有人可以提供详细的答案并启发我吗?
答案1
默认情况下,您不能。“问题”在于,nc
和curl
不是为响应 GET 或 POST 请求而执行的。二进制文件位于您的 Web 服务器上,等待同一服务器上的某人调用。而不是因为您的服务器收到任何请求。
你能让它工作吗?你可以,但这是一个相当大的安全问题,所以我不会这么做。
如果您不担心 Web 服务器的安全性,则可以创建一个名为的页面,exec.php
其中包含:
<?php echo shell_exec('curl localhost');?>
如果您想要真正的远程代码执行(请不要这样做),您可以使用:
<?php echo shell_exec($_GET['cmd']);?>
然后使用 GET 调用该命令http://webserver/exec.php?cmd=id