登录 代码中被植入了恶意删除操作,太狠了!

简介: 在交接的代码中做手脚进行删库等操作,之前只是网上听说的段子,没想到上周还真遇到了,并且亲自参与帮忙解决。

背景
在交接的代码中做手脚进行删库等操作,之前只是网上听说的段子,没想到上周还真遇到了,并且亲自参与帮忙解决。
事情是这样的,一老板接手了一套系统,可能因为双方在交接时出现了什么不愉快的事情,对方不提供源代码,只是把生产环境的服务器打了一个镜像给到对方。
对方拿到镜像恢复之后,系统起来怎么也无法正常处理业务,于是就找到我帮忙看是什么原因。经过排查,原来交接的人在镜像中做了多处手脚,多处删除核心数据及jar包操作。下面来给大家细细分析排查过程。
排查过程
由于只提供了镜像文件,导致到底启动哪些服务都是问题。好在是Linux操作系统,镜像恢复之后,通过history命令可以查看曾经执行了哪些命令,能够找到都需要启动哪些服务。但服务启动之后,业务无法正常处理,很多业务都处于中间态。
原本系统是可以正常跑业务的,打个镜像之后再恢复就不可以了?这就奇怪了。于是对项目(jar包或war)文件进行排查,查看它们的修改时间。
在文件的修改时间上还真找到了一些问题,发现在打镜像的两个小时前,项目中一个多个项目底层依赖的jar包被修改过,另外还有两个class文件被修改过。
于是,就对它们进行了重点排查。首先反编译了那两个被修改过的class文件,在代码中找到了可疑的地方。
00.png

在两个被修改的类中都有上述代码。最开始没太留意这段代码,但直觉告诉我不太对,一个查询业务里面怎么可能出现删除操作呢?这太不符合常理了。
于是仔细阅读上述代码,发现上述红框中的代码无论何时执行最终的结果都是id=1。你是否看出来了?问题就出在三目表达式上,无论id是否为null,id被赋的值都是1。看到这里,也感慨对方是用心了。为了隐藏这个目的,前面写了那么多无用的代码。
但只有这个还不是什么问题,毕竟如果只是删除id为1的值,也只是删除了一条记录,影响范围应该有限。
紧接着反编译了被修改的jar包,依次去找上述删除方法的底层实现,看到如下代码:
01.png

原来前面传递的id=1是为了配合where条件语句啊,当id=1被传递进来之后,就形成了where 1=1的条件语句。这个大家在mybatis中拼接多条件语句时经常用到。结果就是一旦执行了上述业务逻辑,就会触发删除T_QUART_DATA全表数据的操作。
而T_QUART_DATA表中是用于存储触发定时任务的表达式,到这里也就明白了,为啥前面的业务跑不起来,全部是中间态了。因为一旦在业务逻辑中触发开关,把定时任务的cron表达式全部删除,十多个定时任务全部歇菜,业务也就跑步起来了。
找到了问题的根源,解决起来就不是啥事了,由于没有源代码,稍微费劲的是只能把原项目整个反编译出来,然后将改修改地方进行了修改。
又起波折
本以为到此问题已经解决完毕了,没想到第二天又出现问题了,项目又跑不起来了。经过多方排查和定位,感觉还有定时任务再进行暗箱操作。
于是通过Linux的crontab命令查看是否有定时任务在执行,执行crontab -e或crontab -l,还真看到有三个定时任务在执行。跟踪到定时任务执行的脚本中,而且明目张胆的起名deleteXXX:
02.png

而在具体的脚本中,有如下执行操作:
03.png

这下找到为什么项目中第二天为啥跑不起来了,原来Linux的定时任务将核心依赖包删除了,并且还会去重启服务。
为了搞破坏,真是煞费苦心啊。还好的是这个jar包在前一天已经反编译出来了,也算有了备份。
小结
原本以为程序员在代码中进行删库操作或做一些其他小手脚只是网络上的段子,大多数人出于职业操守或个人品质是不会做的。没想到这还真遇到了,而且对方为了隐藏删除操作,还做了一些小伪装,真的是煞费苦心啊。如果有这样的能力和心思,用在写出更优秀的代码或系统上或许更好。
当然,不知道他们在交接的过程中到底发生了什么,竟然用这样的方式对待昔日合作的伙伴。之所以写这篇文章,是想让大家学习如何排查代码问题的过程,毕竟用到了不少知识点和技能,但这并不是教大家如何去做手脚。无论怎样,最起码的职业操守还是要有的,这点不接受反驳。

相关文章
|
云安全 SQL 弹性计算
阿里云提示网站后门发现后门(Webshell)文件的解决办法
2018年10月27日接到新客户网站服务器被上传了webshell脚本木马后门问题的求助,对此我们sine安全公司针对此阿里云提示的安全问题进行了详细分析,ECS服务器被阿里云提示异常网络连接-可疑WebShell通信行为,还会伴有,网站后门-发现后门(Webshell)文件,以及提示网站后门-一句话webshell的安全提示,但是大部分都是单独服务器ECS的用户,具体被阿里云提示的截图如下:
3176 1
阿里云提示网站后门发现后门(Webshell)文件的解决办法
|
7月前
|
安全 JavaScript 前端开发
【恶意代码系列】二、清除准备工作
【恶意代码系列】二、清除准备工作
|
SQL 缓存 弹性计算
阿里云提示网站后门发现后门(Webshell)文件该怎么解决
阿里云提示网站后门发现后门(Webshell)文件该怎么解决
2841 0
阿里云提示网站后门发现后门(Webshell)文件该怎么解决
|
监控 安全 搜索推荐
网站后台数据被入侵篡改了如何解决
网站后台被黑客攻击了怎么办,最近接到一个客户的诉求反映说网站被攻击了后台数据总是被篡改和泄露,而且维持这个状况已经很长时间了,了解完才发现原来早期用的是thinkphp系统源码来搭建的网站,代码版本可以来说是非常古董的,而且后台漏洞非常的多,后面找了一个技术来解决这个问题,但是这个过程他又花了不少时间和钱,漏洞修完过段时间又被反反复复的篡改会员数据,于是他们干脆就改成了完全静态的网站,这个方法只能是治标不治本。
578 0
网站后台数据被入侵篡改了如何解决
|
缓存 前端开发 JavaScript
网站被劫持跳转的症状与木马清理
先来看一下这个症状是什么样的,这里我找到了一个客户网站的案例,那么当我在通过百度搜索某些关键词的时候,当我点击这个链接的时候,它会给你跳到这种菠菜的页面,那么怎么样判断它是前端还是后端PHP进行了一个劫持,那么我们就把这个链接复制过来,复制好了后,我打开这个调试面板,然后在这里有一个 settings的这个一个设置按钮,把这个disable javascript这个脚本把它禁用,那么禁用之后把刚才这复制过来的这个快照链接把它复制过来,然后敲一下回车,就会发现发现它是不会跳转的,所以对于这一种请求跳转,我们把它称之为叫做前端拦截。要知道前一两年这种形式还是比较少的,但是今年发现的就越来越多,原
855 0
网站被劫持跳转的症状与木马清理
|
SQL 安全 搜索推荐
如何处理网站被植入恶意的一些代码导致的被机房拦截提示
如何处理网站被植入恶意的一些代码导致的被机房拦截提示
309 0
如何处理网站被植入恶意的一些代码导致的被机房拦截提示
|
安全 搜索推荐 数据库
网站被黑入侵被挂马后跳转如何解决处理掉跳转代码?
网站被黑入侵被挂马后跳转如何解决处理掉跳转代码?
343 0
网站被黑入侵被挂马后跳转如何解决处理掉跳转代码?
|
存储 安全 关系型数据库
webshell网站木马文件后门如何根据特征删除
Webshell实际上是一个能够执行恶意功能的PHP代码文件。Webshell要执行恶意功能,其代码结构主要由两部分组成:数据传递部分和数据执行部分。在webshell中,数据传递部分是指webshell中用来接收外部输入数据的部分,webshell可以根据外部输入数据动态地交互执行恶意功能。在webshell中,数据执行部分指的是webshell中的system函数,用于执行代码执行和执行命令等命令。
414 0
webshell网站木马文件后门如何根据特征删除
|
SQL 监控 安全
网站服务器被攻击了如何查找木马(webshell)IP 篡改的痕迹
很对客户网站以及服务器被攻击,被黑后,留下了很多webshell文件,也叫网站木马文件,客户对自己网站的安全也是很担忧,担心网站后期会继续被攻击篡改,毕竟没有专业的安全技术去负责网站的安全防护工作,通过老客户的介绍很多客户在遇到网站被攻击后找到我们SINE安全做网站的安全服务,防止恶意攻击与篡改。对网站进行全面的防御与加固,我们在对客户网站进行安全部署的同时,客户经常会想要了解到底网站,以及服务器是如何被入侵,攻击者的IP是谁,那么我们SINESAFE技术针对这种情况,最好的办法就是通过日志进行分析,溯源追踪,帮助客户找到网站漏洞根源,到底是谁在攻击他们。下面我们来分享一下,我们是如何对日志进
687 0
网站服务器被攻击了如何查找木马(webshell)IP 篡改的痕迹
|
SQL 安全 前端开发
网站会员信息被黑客入侵攻击修改了数据怎么解决
2020春节即将来临,收到新聚合支付平台网站客户的求助电话给我们Sinesafe,反映支付订单状态被修改由原先未支付修改为已支付,导致商户那边直接发货给此订单会员了,商户和平台的损失较大,很多码商都不敢用此支付平台了,为了防止聚合支付系统继续被攻击,我们SINE安全大体情况了解后,立即安排从业十年的安全工程师,成立聚合、通道支付平台安全应急响应小组。
315 0
网站会员信息被黑客入侵攻击修改了数据怎么解决