你好,我有几个关于PHP ()和passthru()的问题。
1)
我从未在PHP中使用exec(),但我看到它有时与imagemagick一起使用。我现在很好奇,在web应用程序中,exec有哪些其他常见用途呢?
2)
大约6年前,当我第一次开始玩PHP的时候,我什么都不知道,只是一些非常基本的东西,我有一个被破坏的网站,有人在那里安装了自己的PHP文件,使用passthru()函数,通过我的网站下载免费音乐或视频,然后我收到了4000美元的带宽收费!6年后,我对如何使用PHP有了更多的了解,但我仍然不知道这是怎么发生在我身上的。如何才能通过错误的代码将文件添加到我的服务器?
发布于 2010-01-08 22:24:15
1] Exec()在以下情况下非常有用:
( A)希望在php没有等效命令的服务器上运行程序/实用程序。例如,ffmpeg是通过exec调用运行的通用实用程序(用于各种媒体转换)。
( B)运行另一个进程--您可以阻止也可以不阻止--这是非常强大的。有时,您可以使用一个pcnt_fork (或类似的),以及正确的用于非阻塞的CL args。
C)另一个例子是,当我必须处理XSLT2.0时,我必须执行一个小型的java服务来处理转换。非常方便。PHP不支持XSLT2.0转换。
该死,那太可惜了。有很多种方式。有一个名为“远程文件包含秃鹫”的漏洞系列,基本上允许攻击者包含任意源,从而在您的服务器上执行它。看看:http://lwn.net/Articles/203904/
另外,上面提到过,假设您所做的事情(非常简化):
exec("someUnixUtility -f $_GET['arg1']"); 那么,假设攻击者这样做,url.come?arg1="blah;rm -rf /",您的代码基本上可以归结为:
exec("someUnixUtility -f blah; rm -rf /");在unix中,您可以分离命令w/the;所以是的,这可能会造成很大的损害。
与文件上传一样,假设您删除了最后四个字符(.ext),以找到扩展名。那么,像"exploit.php.gif“这样的东西呢,然后去掉扩展,这样就有了exploit.php,然后将它移动到/user/imgs/文件夹中。好吧,攻击者现在所要做的就是浏览到用户/imgs/plit.php,他们可以运行他们想要的任何代码。你在那时候就已经拥有了。
发布于 2010-01-08 22:11:13
exec或当您想要运行不同的程序时。警告 当允许用户提供的数据传递给这个函数时,请使用
escapeshellarg()或escapeshellcmd()来确保用户不能欺骗系统执行任意命令。
可能有人在您的脚本中发现了一个安全漏洞,允许他们运行任意命令。下次使用给定的函数来清理您的输入。记住,从客户端发送的任何东西都不能被信任。
发布于 2010-01-08 21:58:38
exec()允许您使用服务器上的编译代码,这将比php运行得更快,后者将被解释。
因此,如果您有大量的处理需要快速完成,exec()可能是有用的。
https://stackoverflow.com/questions/2031028
复制相似问题