我正在尝试构建一个可用于任意代码执行的函数列表.目的不是列出应列入黑名单或以其他方式禁止的功能.相反,我希望在搜索受感染的后台服务器时,有一个grep可用的红旗关键字列表.
这个想法是,如果你想构建一个多用途的恶意PHP脚本 - 比如像c99或r57这样的"web shell"脚本 - 你将不得不使用一组或多组相对较小的函数文件中的某个位置,以便允许用户执行任意代码.搜索这些功能可以帮助您更快地将数万个PHP文件的大海捞变到相对较小的脚本集中,这些脚本需要仔细检查.
显然,例如,以下任何一种都会被视为恶意(或可怕的编码):
<? eval($_GET['cmd']); ?>
<? system($_GET['cmd']); ?>
<? preg_replace('/.*/e',$_POST['code']); ?>
Run Code Online (Sandbox Code Playgroud)
等等.
前几天通过一个被入侵的网站进行搜索,我没有注意到一段恶意代码,因为我没有意识到preg_replace使用该/e标志可能会造成危险(严重的是,为什么即使那样?).还有其他我错过的吗?
到目前为止,这是我的清单:
Shell执行
systemexecpopenbacktick operatorpcntl_execPHP执行
evalpreg_replace(带/e修饰符)create_functioninclude[ _once]/require[ _once](有关漏洞利用详情,请参阅mario的回答)拥有一个能够修改文件的函数列表可能也很有用,但我想99%的时间漏洞利用代码至少包含一个上述函数.但是如果你有一个能够编辑或输出文件的所有功能的列表,请发布它,我会在这里包含它.(而且我不算数mysql_execute,因为那是另一类漏洞利用的一部分.)