本文记录一次黑客利用sql注入漏洞攻击应用系统的全过程。
由于涉及到隐私,所以就不能上图了,尽量把过程描述的详细一下,希望能够给开发人员提个醒,有些漏洞,其实修补很简单。好在现在有了chatGPT,把你的代码交给它校验一下,会很容易发现逻辑漏洞的。
目录
系统背景
攻击过程
修复过程
小小总结
系统背景
开发框架:.net MVC
数据库:MS SQL Server
前端框架:Jquery
由于是10年前开发的系统,所以在安全和框架方面,都是欠缺的。好在中间进行了一次前后台拆分,在前端做了很多控制。所以这么多年下来,基本正常使用,相安无事。但这次问题偏偏出在了后端的ashx文件上。
ASHX文件可以执行以下任务:
-
处理表单提交:通过读取请求参数,您可以在ASHX文件中处理表单提交,并根据需要对数据进行处理。
-
生成动态内容:ASHX文件可以基于请求参数和条件生成动态内容,并将其包装在HTTP响应中返回给客户端。
-
提供文件下载:ASHX文件可以用于生成和提供文件下载。例如,您可以从数据库中检索文件内容,并将其作为响应返回给客户端,以便用户下载。
-
实现自定义HTTP处理:ASHX文件允许您实现自定义的HTTP处理逻辑。您可以根据需要处理HTTP头、状态码等,并生成相应的HTTP响应。
攻击过程
简单记录这次黑客攻击的过程,如下:
1、3月份开始攻击 ,但没有成功,此后就被黑客惦记,日志就不贴了,以免引起不必要的麻烦;
2、5月底的时候,通过在登录页的ashx文件,使用sql注入漏洞得到数据库权限,同一天的时间里(黑客的效率很高,生怕你发现),利用了xp_cmdshell进行了提权和文件操作;有漏洞的代码片段如下,是不是很低级?
string loginuser = context.Request["login-user"].ToString();
此漏洞是先发现upload文件没有校验以后,逐步查IIS的日志查出来的。可见黑客对与IIS并不熟悉,没有删除其利用sql注入漏洞的日志。
3、文件并不是通过远程软件拷贝的,而是通过安装百度云的方式先上传到百度云管家的服务器上,然后又删除了百度云管家的程序。结果手脚不干净,还是留下了一个加密的日志,将来不知道能不能解密这个日志,通过百度网盘找到这个账号,就可以锁定黑客了。
修复过程
在上面的代码上放一个判断就可以解决问题,方法有很多,最简单的就是字符长度,一旦超出正常值,就抛错
string loginname = context.Request["login-name"].ToString();
if (loginname.Length > 10)
return;
当然还有其他的方法,有些之前已经有了:
1、之前有IP地址白名单的,这样就避免黑客利用已有用户进行攻击,但是后来由于用户的IP地址经常变,人工维护很麻烦,后来就取消了,这次加上了,效果立马就显现出来了。
2、假如之前有WAF防火墙,是可以过滤掉这些注入漏洞的,可惜机房的人并没有考虑,只知道推卸责任,TMD;
小小总结
之前如果小心的话,其实是有些异常的,只是当时没有牢记“事出反常必有妖”这句话,大意
1、4月份的时候,发现两次正常批量业务过不去,当时还优化了批量业务的代码,重启了服务器才正常执行,其实都是与黑客入侵占用了服务器资源有关系的。
2、之前用远程工具,发现长时间连不上去,也是黑客已经在服务器上,点击了拒绝连接的原因,但机房的人也没有去查日志,仅仅是以“多试试”的理由糖塞过去。
3、幸运的是,5月底的时候,上述现象再次出现,立马又重启了服务器,没想到惊动了黑客,让他们以为是被发现了,停止了攻击。所以进入6月份以后,就没有发现有攻击的痕迹。
4、由于之前没有备机,今天的渗透都是在生产机上进行的,造成查找时间很长,都要靠眼睛去找。今后一定要考虑备机,那怕是冷备机。这样今后就可以用工具进行渗透测试。
5、最后,一定要找一个靠谱的运维,这次如果能够本着“事出反常必有妖”的原则,运维认真查一下日志的话,黑客的攻击是不会成功的。