之前企业微信更新版本,新增了一项“机器人”功能,它允许开发者可以通过http请求向机器人所在群组群发消息。很多同事把它用来发送应用告警。不过小编感觉用来划水好像也蛮不错。
目标是:把平时比较常看的科技媒体写个爬虫抓下来,实时推送到企业微信。
首先找个快速开发框架节省点开发时间。github上看了下,发现jeecg-boot还不错,star数9300多个,springboot项目,支持前后端分离,而且还集成了定时任务,满足要求。
直接clone下来,这个部署也很简单,按照要求配置好数据库直接启动就跑起来了,再启动前端,如图:
框架有了,现在分析下需要爬取的网站,打开目标网站:36氪,按F12,发现接口直接就返回json格式,而且没有校验,嗯,这种接口简直就是白送的资源,开发难度为0。
设计好数据库表结构:
可以开始写代码了!逻辑也很简单:解析json数据到对应表字段内存储,使用网站接口返回的id可以直接用于去重,每次只取最新的id推送即可。代码如下:
启动程序,差最后一步,把爬虫类添加到定时任务上去:
搞定!程序跑起来了。
小编把这个机器人命名为 “新闻直播喵”,拉进只有我一个人的群组里面,从此便可以光明正大划水!
刚好腾讯云双十一的时候搞活动买了台服务器,于是便把这只喵发到了腾讯云上去。不过部署数据库的时候,账号密码还是沿用本地环境的弱口令账号密码,并且为了方便导入数据还开启了外网访问权限,嗯。。
有了这只喵实时推送科技新闻,划水的生活美滋滋。就这样跑了2个月后,突然在前两天这只喵没动静了。。刚开始没多想,以为可能是ip被封了,忙着写代码也没空去看它。直到昨天有点空闲时间后上去看了下应用日志,结果发现应用报了个找不到数据库表的错误
不不, 这不可能,于是登陆数据库看了下,发现之前创建的表真的全没了。。只留下了一张我没见过的表
warning字段里面留下了这段话:
To recover your lost Database and avoid leaking it: Send us 0.06 Bitcoin (BTC) to our Bitcoin address 1BLYhUDmnmVPVjcTWgc6gFT6DCYwbVieUD and contact us by Email with your Server IP or Domain name and a Proof of Payment. If you are unsure if we have your data, contact us and we will send you a proof. Your Database is downloaded and backed up on our servers. Backups that we have right now: jeecg . If we dont receive your payment in the next 10 Days, we will make your database public or use them otherwise.
要恢复丢失的数据库并避免泄漏,请执行以下操作:向我们的比特币地址1BLYhUDmnmVPVjcTWgc6gFT6DCYwbVieUD发送0.06比特币(BTC),并通过电子邮件与我们联系,并提供服务器IP或域名以及付款证明。如果您不确定我们是否有您的数据,请与我们联系,我们将向您发送证明。 您的数据库已下载并备份到我们的服务器上。 我们现在拥有的备份:jeecg。 如果我们在接下来的10天之内未收到您的付款,我们将使您的数据库公开或以其他方式使用它们。
我擦。。这就是传说中的“拖库”“删库”吗。。。还想勒索小编比特币。
这时小编立马想到之前设置的数据库弱口令+外网权限,对方只需要简单的端口扫描,然后使用大量账号密码去撞库,才导致这次被拖库删库的悲剧。
只是这些数据并不值钱,而且我本地还有一份数据库脚本的备份,所以没啥损失,只需要改掉之前的账户密码,并且关闭外网端口权限即可。
不过小编还想知道,像小编这么麻痹大意的人是不是只有我自己。于是继续动手,写个简单的端口扫描+几个常见的弱口令尝试撞库一下。
首先是端口扫描。小编这里使用c#代码来写(本来想做成客户端),原理是先随机生成的IP,用socket连接下对方的mysql端口3306,能通的话代表端口打开,然后把ip放入到需要撞库的队列:
网上下载了1000多个常见的弱口令账户密码,然后尝试登陆需要撞库的ip数据库,结果还真找到一个:
登陆进这个悲剧数据库后,发现里面也没什么东西,估计这个网友也小编一样,只是用来写个demo玩玩之类的。
这次删库事件也第一次让小编亲身感受到了:网络上时时刻刻都有一批蠢蠢欲动的人,正在利用安全漏洞进行非法的数据破坏和敲诈勒索。所以各位it从业人员应该时刻警惕自己管理应用系统,防范这类安全漏洞给自己和公司带来损失,切莫像小编这样麻痹大意。