【漏洞利用】fail2ban - 远程代码执行

admin 2021年12月14日10:19:23评论190 views字数 3342阅读11分8秒阅读模式

点击上方蓝字“Ots安全”一起玩

Fail2Ban是一个入侵检测系统框架,它可以保护电脑服务器免受蛮力攻击。以Python程式设计语言编写,并能够在类Unix系统上运行,这些系统具有本地安装的封包控制系统或防火墙的界面,例如Iptables或TCP Wrapper。


这篇文章是关于最近发布的一个非常流行的软件——fail2ban ( CVE-2021-32749 )的安全公告。该漏洞可以被大规模利用并导致在多个盒子上执行根级代码,但是这个任务对于普通人来说是相当困难的。这一切都源于 mailutils 包,我在玩mail命令时完全意外地发现了它。 


fail2ban 分析日志(或其他数据源)以搜索暴力跟踪,以便根据 IP 地址阻止此类尝试。不同的服务(SSH、SMTP、HTTP 等)有很多规则。还有一些已定义的操作可以在阻止客户端后执行。这些操作之一是发送电子邮件。如果您在 Internet 上搜索以了解如何从命令行发送电子邮件,您通常会得到这样的解决方案:

$ echo "test e-mail" | mail -s "subject" [email protected]

这就是fail2ban操作之一如何配置发送有关客户端被阻止的电子邮件的确切方式(./config/action.d/mail-whois.conf):

actionban = printf %%b "Hi,n            The IP <ip> has just been banned by Fail2Ban after<failures> attempts against <name>.nn            Here is more information about <ip> :n            `%(_whois_command)s`n            Regards,n            Fail2Ban"|mail -s "[Fail2Ban] <name>: banned <ip> from <fq-hostname>" <dest>

上面没有任何可疑之处,直到知道可以在 mailutils手册中找到的特定内容。这是波浪号转义序列:


'~!' escape 执行指定的命令并使您返回邮件撰写模式而不更改您的邮件。当不带参数使用时,它会启动您的登录 shell。'~|' 转义通过给定的 shell 命令将到目前为止编写的消息管道化,并用命令产生的输出替换消息。如果该命令没有产生任何输出,则邮件会假定出现问题并保留消息的旧内容。


这是它在现实生活中的工作方式:

jz@fail2ban:~$ cat -n pwn.txt1  Next line will execute command :)2  ~! uname -a34  Best,5  JZjz@fail2ban:~$ cat pwn.txt | mail -s "whatever" [email protected]Linux fail2ban 4.19.0-16-cloud-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linuxjz@fail2ban:~$

如果您回到前面提到的 fail2ban 电子邮件操作,您会注意到电子邮件正文附加了whois输出。因此,如果我们可以在我们的 IP 地址的 whois 输出中添加一些波浪号转义序列 - 好吧,它应该以代码执行结束。作为根。


我们有哪些选择? 

作为攻击者,我们需要控制 whois 输出——如何实现?好吧,我想到的第一件事就是请我的 ISP 联系 RIPE 并为我的特定 IP 地址创建一个非常自定义的条目。不幸的是——它不是那样工作的。RIPE/ARIN/APNIC 和其他人将整个 IP 类别的条目放在最低限度,而不是针对特定的一个 IP 地址。此外,我非常确定以正式的方式实现它是非常困难的,加上将恶意负载作为 whois 条目的事实会让人提出问题。


有没有办法启动我自己的 whois 服务器?令人惊讶的是 - 有,而且您可以找到其中几个在 Internet 上运行。通过挖掘与 whois 相关的 RFC,您可以找到有关名为ReferralServer的属性的信息。如果您的 whois 客户端将在响应中找到这样的属性,它将查询在该值中设置的服务器以获取有关 IP 地址或域的更多信息。看看在获取 157.5.7.5 IP 地址的 whois 时会发生什么:

$ whois 157.5.7.5
## ARIN WHOIS data and services are subject to the Terms of Use# available at: https://www.arin.net/resources/registry/whois/tou/## If you see inaccuracies in the results, please report at# https://www.arin.net/resources/registry/whois/inaccuracy_reporting/## Copyright 1997-2021, American Registry for Internet Numbers, Ltd.#

NetRange: 157.1.0.0 - 157.14.255.255CIDR: 157.4.0.0/14, 157.14.0.0/16, 157.1.0.0/16, 157.12.0.0/15, 157.2.0.0/15, 157.8.0.0/14NetName: APNIC-ERX-157-1-0-0NetHandle: NET-157-1-0-0-1Parent: NET157 (NET-157-0-0-0-0)NetType: Early Registrations, Transferred to APNICOriginAS:Organization: Asia Pacific Network Information Centre (APNIC)
[… cut …]
ReferralServer: whois://whois.apnic.netResourceLink: http://wq.apnic.net/whois-search/static/search.html
OrgTechHandle: AWC12-ARINOrgTechName: APNIC Whois ContactOrgTechPhone: +61 7 3858 3188OrgTechEmail: [email protected]
[… cut …]
Found a referral to whois.apnic.net.
% [whois.apnic.net]% Whois data copyright terms http://www.apnic.net/db/dbcopyright.html
% Information related to '157.0.0.0 - 157.255.255.255'
% Abuse contact for '157.0.0.0 - 157.255.255.255' is '[email protected]'
inetnum: 157.0.0.0 - 157.255.255.255netname: ERX-NETBLOCKdescr: Early registration addresses
[… cut …]

理论上,虽然拥有相当大的网络,但您可能会要求您的区域互联网注册管理机构为您的网络使用 RWhois。 


另一方面 - 简单地想象黑帽黑客闯入运行 rwhois 的服务器,在那里放置恶意条目,然后开始攻击。公平地说,这种情况似乎比成为一家合法拥有自己的 whois 服务器的大公司要容易得多。 


如果您是政府机构并且您可以简单地控制网络流量 - 任务就简单多了。通过仔细查看 whois 协议,我们可以注意到以下几点: 

  • 它是很久以前设计的,

  • 它非常简单(您要求 IP 或域名并获得原始输出),

  • 它在网络级别未加密。

通过简单地对未加密的协议(whois)执行 MITM 攻击,攻击者只需放置波浪号转义序列并开始对多个主机进行攻击。 


值得记住的是,这里的根本问题是 mailutils,它在设计上就有这个缺陷。我相信很多人都不知道这样的功能,而且仍然有很多软件可以通过这种方式使用邮件命令。 


正如历史上多次注意到的那样 - 安全性既困难又复杂。有时,您永远不会怀疑是威胁的完全无害的功能可能会导致危险的漏洞。

【漏洞利用】fail2ban - 远程代码执行

本文始发于微信公众号(Ots安全):【漏洞利用】fail2ban - 远程代码执行

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月14日10:19:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞利用】fail2ban - 远程代码执行https://cn-sec.com/archives/440195.html

发表评论

匿名网友 填写信息