CVE-2019-0232:Apache Tomcat远程代码执行漏洞分析

文件上传漏洞原理和绕过方式

那天我在公司加班,有同事挠着屏幕说上传文件总是失败。
我去看了一下,发现它正在加载头像,但它说“文件类型无效”。
他尝试了JPG、PNG,又换成了GIF,但还是不行。
我随口说道:“把文件名改成‘avatar.jpg.php’试试?”他愣了一下,尝试了一下,果然成功了。
你看,这个简单的修改背后隐藏着一个文件上传漏洞的影子。

等等,还有一件事。
上大学的时候,我帮一个朋友修过电脑。
他安装了盗版软件,结果系统上不断出现乱七八糟的窗口。
后来我发现该软件内置了文件上传功能,正在偷偷将用户的文件上传到服务器上。
这就像特洛伊木马一样,冒充正常文件,欺骗检查。

突然我想到了。
以前我用论坛的时候,有人发一张图片,我点开它,就是一个Word文档。
后来了解到,论坛并没有严格限制文件类型,用户上传的是“picture.jpg.doc”。
服务器以为是图片,直接作为文档打开。
这是典型的 MIME 类型检查覆盖。

回到那位同事的问题。
后来换了电脑,发现加载正常。
原来公司的服务器是Apache,其家用Windows系统文件名不区分大小写。
这是黑名单绕过中的绕过情况。
攻击者可以尝试小写、大写或混合字符并逃脱惩罚。

我见过更暗的。
有一个网站可以上传头像,但仅限于图片格式。
结果,用户上传了“avatar.jpg.asp”,并利用Windows文件名的空字节截断功能将.jpg解析为.asp。
服务器认为自己遵守了规则,并尽职尽责地执行了恶意代码。

这些漏洞实际上很常见。
例如,由于IIS解析漏洞,如果您上传“shell.asp.asa”文件并在其中放入任何.txt,IIS会将其作为ASP文件执行。
阿帕奇也类似。
当你加载“shell.jpg.php”时,它会从后到前搜索。
当它看到 .php 时,它会将其解析为 PHP。
Nginx 也存在空字节漏洞。
加载“shell.php.jpg”也可以执行代码。

最有趣的是.htaccess。
上传一个 .htaccess 文件,在其中输入几个单词“AddType application/x-httpd-php .jpg”,然后上传“shell.jpg”,Apache 将以 PHP 方式运行它。
这就像在服务器上画一个圆圈,圆圈内的所有东西都可以工作。

但又来了。
现在的服务器都很智能,很多都使用白名单验证,比如只允许“jpg|png|gif”,或者检查文件内容是否以GIF开头。
但攻击者总有办法。
例如,上传内容为 GIF8 9 a 且后跟 PHP 代码的文件。
这称为“内容绕过”。
或者上传名称很长的文件并截断​​有效参数,例如“shell.jpg...”。
服务器只看到“shell”,其余都是命令。

你看,文件上传漏洞就像一个迷宫,走来走去。
开发人员必须配置访问控制,检查文件扩展名、MIME 类型、内容,并了解访问规则服务器分析以避免绕过。
但攻击者不断改变策略,总有办法利用漏洞。

所以大家上传文件的时候还是要小心。
不要只看文件名后缀,要看内容,还要知道上传到哪里。
服务器会不会解析错误?其他人可以利用此漏洞吗?哎,想想就头疼。

Log4j2远程代码执行漏洞,数十万个项目中枪

说实话,这个Log4 j2 漏洞还是挺让人震惊的。
2 02 1 年1 1 月2 4 日,阿里云安全团队将此问题通报给Apache官方。
当时我们并不明白为什么这个漏洞会产生这么大的影响。

Log4 j2 本身就是一个日志库。
因此,某些函数总是存在递归解析漏洞的问题。
说白了,攻击者可以通过发送恶意请求并直接远程执行代码来对你的系统做坏事。
真的很可怕。
使用 Log4 j2 的 Java 应用程序无处不在,包括 ApacheStruts2 、ApacheSolr 和 Spring-boot-starter-log4 j2 无论您走到哪里,您都会发现它正在使用。
全球范围内的系统非常多,估计有数百万个系统在使用 Log4 j2 正确的?
收视率都是最高级别的,所以这是一个特别严重的级别。
攻击者可以做什么?在您的系统中添加随机代码将窃取您的所有数据,使您的系统崩溃,并完全控制您的服务器。
想想都觉得可怕。

有许多特定版本受到影响。
低于 2 .1 5 .0-rc2 的 Log4 j2 .x 版本存在问题。
后来发现2 .1 5 .0-rc1 版本仍然存在绕过漏洞,所以确实任何低于2 .1 5 .0-rc2 的版本都应该谨慎使用。

这个问题必须尽快解决。
直接去官网https://github.com/apache/logging-log4 j2 /releases/tag/log4 j-2 .1 5 .0-rc2 升级到最新版本。
不仅Log4 j2 本身要升级,spring-boot-starter-log4 j2 、ApacheStruts2 等相关组件也必须相应升级。

您还需要更改 JDK 版本。
旧版本的 JDK 容易受到攻击。
升级到 6 u2 1 1 、7 u2 01 、8 u1 9 1 、1 1 .0.1 或更高版本可阻止多种攻击方法。

您还应该执行安全审核。
您应该检查您的系统是否存在任何其他缺陷。
事实上,您应该制定应急响应计划,以避免在受到攻击时仓促行事。

提供了官方网站的链接。
官方 Log4 j2 存储库为 https://github.com/apache/logging-log4 j2 ,漏洞详细信息为 https://issues.apache.org/jira/projects/LOG4 J2 /issues/LOG4 J2 -3 2 01 ?filter=allissues。

总之,这个漏洞非常严重,任何使用Log4 j2 的人都应该快速升级。
安全问题不能拖延。