php代码混淆提权在服务器没有配置错误的情况下如何处理漏洞php混淆在线解密
2022-07-07
是黑客经常使用的恶意脚本。其目的是为了获得服务器的权限来执行操作,例如执行系统命令、窃取用户数据、删除网页、修改主页等。它的危害是不言而喻的。黑客通常利用 SQL 注入、远程文件包含 (RFI)、FTP 等常见漏洞,甚至使用跨站点脚本 (XSS) 作为社会工程攻击的一部分,最终控制网站服务器。
常用的编程语言有asp、jsp和php。本文将以php为例,详细讲解常用功能、工作方法、常用隐藏技巧。
为什么受到黑客青睐
黑客使用的第一步通常是将其上传到可访问的服务器,例如利用用户CMS系统的第三方插件中的漏洞进行简单的php上传。当然,类型和功能并不完全相同。一些简单的仅用于连接外部世界,允许黑客插入更精确的恶意脚本并执行他们需要的指令;其他的可能更复杂,有数据库或文件浏览 一种允许黑客从数千英里外查看受感染系统的代码和数据的设备。无论设计如何,它都是极其危险的,并且是网络犯罪分子和高级持续威胁 (APT) 的常用工具。常见的攻击特征如下:
持久远程访问
脚本通常包含后门。黑客上传后,可以充分利用后门实现远程访问和控制服务器,从而达到长期控制网站服务器的目的。此外,在上传后,黑客选择自己修复漏洞,以确保没有其他人会利用该漏洞。通过这种方式php代码混淆,黑客可以保持低调,避免与管理员进行任何互动,同时仍然获得相同的结果。
特权提升
只要服务器没有配置错误,它就会在网络服务器的用户权限下运行php代码混淆网站制作,这是有限的。通过这个,黑客可以利用系统上的本地漏洞来实现提权以获得root权限,这样黑客基本上可以在系统上做任何事情,包括安装软件、更改权限、添加和删除用户、窃取密码、阅读电子邮件和还有更多。
高度隐蔽
可以在普通网页中嵌套运行,不易被检测和杀死。它也可以通过服务器防火墙。由于与受控服务器或远程主机交互的数据是通过 80 端口传输的,因此不会被防火墙拦截。在没有记录流量的情况下,使用 post 数据包发送,不会被防火墙发送。记录在系统日志中,只有部分数据提交记录会记录在web日志中。
常用的PHP函数
适用于几乎所有的网络编程语言。 PHP 是焦点,因为它是 Web 上使用最广泛的编程语言。下面是 PHP 中一些最常用的执行命令的函数。
()
() 函数将命令作为参数并输出结果。
以下示例在操作系统上运行 dir 命令,并返回 PHP 文件所在目录的目录列表。
同样,在机器上执行 ls 命令会得到类似的结果。
执行()
exec() 函数将命令作为参数,但不输出结果。如果指定了第二个可选参数,则结果以数组形式返回。否则,如果回显,则只显示结果的最后一行。
使用exec()函数执行echo命令,只会输出最后一行命令结果。
如果指定第二个参数,结果是一个数组。
()
() 函数类似于 exec(),但它的整个输出是一个字符串。
()
() 执行命令并以原始格式返回输出。
()
() 函数可能很难理解。简单来说,我们可以使用(),来创建一个(进程),实现脚本与要运行的程序之间的通信。
反引号
许多 PHP 开发人员没有意识到这一点,但 PHP 将首先执行命令中反引号 (`) 内的任何内容。请注意,反引号 (`) 与单引号 (') 不同。
基于以上,下面是一个简单的PHP。
它使用()函数执行'cmd'HTTP请求的GET参数中传递的命令。
我们已经确定这些功能(以及其他一些功能)可能非常危险。更危险的是,在安装 PHP 时,所有这些内置的 PHP 命令都默认启用,并且大多数系统管理员不会禁用它们。如果您不确定您的系统是否启用了这些功能,请输入以下内容将返回已启用的危险功能列表。
在默认安装的情况下,默认启用以下功能。
黑客如何隐藏
修改标题
黑客使用用户代理字符串而不是 $ 参数来传递命令。
然后,黑客可以通过将命令放在 User-HTTP 标头中来制作特定的 HTTP 请求。
在服务器日志中可以看到这种行为的影响,其中第二个请求中的 HTTP User- 被 cat /etc/ 命令替换。
上述方法可能会很吵,并且很容易提示管理员查看服务器日志。但是通过以下方法,管理员很难发现。
这种方法不会留下正在执行的命令的可见痕迹(至少在访问日志中)。
隐藏在普通文件中
黑客可以隐藏的最简单方法之一是将它们上传到深层子目录和/或使用随机名称。
另外,一种更有效的方法是将代码嵌入到现有的法律文件中。
或使用 CMS(例如)
注意:黑客通常在函数前使用@操作符写入错误日志,以防万一发生错误。
混乱
黑客使用各种混淆技术来避免被管理员检测到。他们不断想出新的和更复杂的方法来隐藏他们的代码和绕过安全系统。以下是我们见过的一些最常见的技术:
删除空格和换行符
通过从代码块中删除空白换行符,代码看起来像一个大字符串,这会降低代码的可读性并且更难识别脚本试图实现的目标。
加密技术
这种技术会加密代码,降低代码可读性,并利用可在运行时重构代码的各种功能。
使用十六进制进行混淆
十六进制值
字符也可以用来进一步混淆命令,下面的例子很好的说明了混淆技术在.
中的应用
以下是上述字符串的十六进制值。
因此,以下代码可用于接受十六进制编码的字符串并将其转换为 PHP 代码。
输出类似于下图。
通过可控输入
PHP中常用的可控输入包括:$_GET、$、$、$、$、$等,它们是PHP中的预定义变量网站建设,可以将黑客定义的值传递给浏览器。
下面的例子很简单但很有用。虽然代码没有被编码或加密,因为它没有使用任何可疑的函数名(例如 eval() 或 ())、冗长的编码字符串、复杂的代码,它的可检测性比之前的代码还低。最重要的是,管理员查看日志时不会造成任何危险。
如何使用
我们举一个例子来分析它是如何使用的。是一个类似 PHP 的轻量级,有几个选项,我们将在本例中使用。
出于演示目的,我们将使用创建后门代理在目标服务器上进行部署。我们只需要指定密码和文件名。然后使用密码访问后门。
.php 包含以下编码文件。
将 .php 重命名为 ma.php 并将其上传到受感染的服务器。然后,我们不使用浏览器访问文件,而是使用文件连接。
现在我们有了目标服务器的后门,我们可以执行命令了。
检查服务器的访问日志,我们会发现一些奇怪的东西。
发送的请求经过编码,原始 URL 似乎是。如果我们要分析恶意活动的日志,这很可能会困扰我们,因为它应该是合法的引荐来源网址。当然,这是防止检测策略的一部分。
我们使用的另一个有趣的功能是反弹 TCP 选项。这意味着受感染的服务器将连接回我们,或者我们请求连接。
在源机器上,我们在端口 8181 上设置了一个监听器。
使用已建立的后门连接发起退回的 TCP 请求。
反弹连接现已建立 (192.168.5.25 192.168.5.26)@ >.
通过使用反弹 TCP 控制服务器,在访问或错误日志中没有任何痕迹,因为通信是通过 TCP(第 4 层)而不是 HTTP(第 7 层)进行的。
总结
代码简单且易于使用,但由于许多 Web 服务器的设置方式,即使是简单的脚本也会造成严重破坏。这就是为什么有成千上万的披露。变种太多,入侵检测和入侵防御系统 (IDS/IPS) 很难检测到它们,尤其是在使用签名检测此类时。有些非常复杂,即使通过行为分析,也几乎无法检测到。
话虽如此,它只是一个后利用实施工具,这意味着首先要尽早检测到它,以防止它被上传然后被利用。