利用Elmah和Google体验一把入侵的快感

介绍

关于ELMAH,相信大家都不陌生了,最流行的错误日志记录组件,用过的人都知道其强大的威力,可以记录非常详细的错误信息供管理员和开发人员进行分析。Elmah配置起来也非常简单,但是同时也带来了一个问题:那就是如果配置不好的话,就会被入侵,而且入侵的方法非常非常简单,本文我讲演示一下,如何利用Elmah错误信息和Google搜索来入侵一个站点,同时本文也提供了正确的Elmah配置方法。

注1:本人目的是让大家正确配置ELMAH,不是教大家入侵哦,入侵有风险,实施需谨慎

注2:在这里,我要澄清一下,利用Elmah入侵站点,并不是说Elmah本身的问题,而是由于配置的问题导致的,所以大家不要对Elmah组件丧失信心,它依然很好用,并且依然是我的第一选择。

Elmah的强大功能

背景知识:ELMAH是Atif Aziz开发的一个错误日志记录组件,目前非常流行,其流行程度可以从NuGet上看出来,目前总排名是14。

我们先来看看他的几个特点:

  1. 你可以直接添加ELMAH组件,不用再次编译就可以直接使用,需要做的只是引用类库和简单配置一下设置就可以了。
  2. 日志的存储非常方便,你可以使用内存存储,也可以使用文件,Email,甚至各种数据库(Access、SqlServer、Oracle、Sqlite、VistaDB)来存储,一旦配置好,日志就会自动记录了。
  3. 上面提到的Email功能其实也可以做得非常强大,比如当页面出错的时候,你可以直接给该用户自动发邮件告诉他“你好,我看到你遇到问题了,我们会立即解决”,这样让用户看起来就非常激动,因为看起来你很在意他。
  4. 错误日志查看非常方便,直接通过/almah.axd就可以访问到了,不需要额外建立aspx文件。
  5. ELMAH记录的信息确实是非常非常详细,以便开发人员可以很快追踪到问题的来源,但同时也有了一个问题,那就是一旦被黑客看到了错误信息,那黑客就可以从这些详细的信息里搜寻到非常有利于入侵的信息,这也是写本篇文章的目的。

嗅探信息

让我们来看看到底能从ELMAH里获取什么样的有用信息。来看一个例子,如图:

通过图片可以看到,我们故意访问了一个/blah.aspx文件,然后ELMAH记录了这个文件未找到的404错误,点击进去我们可以查看到该错误的详细日志信息,如下图:

改图信息页包括了最详细的stack trace信息(包括.Net的内部实现细节),尽管你可以通过自定义错误信息页来引导用户跳转到这个页面,但是ELMAH依然会记录404这样的错误信息。让我们从这个信息页里寻找点什么东西吧,Oh yeah!发现了,看下图:

图片里红框标记的内容是我最感兴趣的,我来解释一下:

  1. AUTH_USER变量显示的是admin,这个是错误发生时候登陆该系统的认证用户名,换句话说,在那个错误发生的时候admin正好登陆到这个系统上了。
  2. .ASPXAUTH cookie,这是使用ASP.NET membership provider的时候系统生成的用于验证用户信息的特殊cookie值,用来存储一个用户的认证状态,也就是说包含你的安全验证信息,我们后面会验证。

查找目标

这时候大家看到本篇文章的关键点了吧,那就是没有把ELMAH日志的错误保护好,以至于所有人都能看到,那如果想入侵一个这样的站点的话,是非常简单的事情,只需要到Google上搜索一下这个关键字:inurl:elmah.axd ASPXAUTH 就行了,看看下图:

Oh, Man,多么可怕的事情了,有上万条包括验证(authentication)信息的记录,使用额外的ASPXAUTH关键字可以将这些符合条件的信息都排在最上面。虽然有些信息是同一个站点上的,但是这么多的信息足以值得我们关注。

在Google引擎里出现这种情况,其实行内人都称之为 Google Dork,这个词语的大概意思就是说这种信息虽然没有禁止Google收录,但是往往是安全或者致命的信息,比如phpMyAdmin初始化的时候,如果没有设置密码,或者管理员没有删除类似的初始化页面,默认页一般是初始化操作,比如Welcome to phpMyAdmin,然后让你创建一个数据库(Create new database),那你如果搜索"Welcome to phpMyAdmin" AND " Create new database"的话,Google会给你一大批记录,但是我觉得作为Google这样的搜索引擎,应该对这些比较有名的系统(比如Wordpress,
ELMAH, PhpMyAdmin)的默认的安全信息给予屏蔽,不屏蔽,就叫Google Dork了,或者你可以叫做傻逼Google,百度的信息好像不多哦?嘿嘿。

猎杀目标

到现在为止,其实我们只要有.ASPXAUTH信息基本上就OK了,如果你没有这些信息,那你可以通过一些花招来获取嘛,比如给这个网站的管理员发个信息,或者在他的微博上留个言啥的,让他点击自己网站的一个地址进去,那就有法子咯。

看到上面图里的留言了么,那个default和aspx直接不是逗号,是<,一般如果管理员不注意点进去了,肯定就写错误日志到ELMAH里了,很可能就留下他的cookie了,即便当时管理员没有登录,也可以伪造需要需要都登陆的地址让他点击。

不管怎么说,得到.ASPXAUTH的cookie值还是比较简单的,假如我们得到了如下一个字符串:

.ASPXAUTH=3C886BA2344099338361C921C846EAF4E02F2A88E5E7EDE6838705928F7BB7C6FF46
9D35FEB1532C44B81DB38F200DEE08B6ED0E6121B945C659E932D8CE8B69FFF09E7B59DBE48208
73DBD7891DD6B6BC4A486F35A2F99849017A6C72D9C6A44517D9AFDC731B3A3C55596E79732806

入侵的步骤,其实就很简单了,Chrome和Firefox都有相应的cookie扩展插件可以使用,修改或添加一个cookie就行了,name是.ASPXAUTH, value是上面的一大串字符串,域名就是要工具的网站。

修改以后,再刷新一下,看下图:

Oh yeah,成功了!成功了!这不是汤姆大叔的功劳,不是我一个人的功劳,这只是一个演示站点!

真正的入侵方式可能会有不同的站点少许有些变化,但是一般来说只要是用了ASP.NET Membership provider,并且你能获取这个.ASPXAUTH的话,都应该可以成功。入侵成功以后能做啥,我就不多说了,权限啊,超级账户啊,财务信息啊,点卡啊,积分啊啥的,发挥你的想象力吧。

更多可入侵的途径

ELMAH暴露的信息其实不仅仅是ASP.NET的Session(Cookie)那么简单,通过它有时候我们可以查到很多其它的丰富信息,比如利用大家熟知的SQL注入漏洞,所以如下你发现了如下图这样的信息,那就意味着这个站点可能就有问题了:

或者是SQL批处理语句产生的错误信息,也是很致命的:

或者你搜索和密码相关的关键字,也可以得出有用的信息哦:

甚至你可以搜索一个主流的开源组件名称(如果他又漏洞的话),来看看该网站有没有使用这个组件,有的话,那岂不爽了?

不过,最大的问题不是十分有这些问题,而是黑客可能使用各种各样的尝试,一般ELMAH生产各种各样的日志,然后从这些日志里分析各种有用的信息:物理地址,IP地址,其它的cookie值等等。ELMAH记录的错误信息太具体了!

预防方法

看到这么多利用ELMAH信息攻击的方法,是不是感到很担忧,其实预防的方法很简单,那就是最常用的限制URL访问,由于你使用了membership和role provider,配置web.config阶段禁用URL就非常简单了:

<location path="admin">
  <system.web>
    <httpHandlers>
      <add verb="POST,GET,HEAD" path="elmah.axd"
        type="Elmah.ErrorLogPageFactory, Elmah" />
    </httpHandlers>
    <authorization>
      <allow roles="Admin" />
      <deny users="*" />
    </authorization>
  </system.web>
  <system.webServer>
    <handlers>
      <add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD"
        type="Elmah.ErrorLogPageFactory, Elmah"
        preCondition="integratedMode" />
    </handlers>
  </system.webServer>
</location>

需要注意的是:需要把ELMAH handler放到admin path里面去,因为如果你不这样做的话,即便限制了admin/elmah.axd,那人家也可以从/foo/elmah.axd这样的任意目录进去,因为你配置的仅仅是elmah.axd。

检验工具

该文原文的作者开发了一个网站http://asafaweb.com/ 用来帮助ASP.NET开发者检测网站安全,你只需要输入互联网能访问的网站地址就可以帮助你检测了,如下图:

如果你的网站有问题的话,它会给出红色的提示,如果没问题会给出绿色的提示:

点击每个红色按钮的时候,会显示这个安全相关的信息以及如果消除这个安全隐患的建议行为:

入侵博客园

我们来检测一下博客园的漏洞信息:

由图可以看出没有这方面的漏洞,看来dudu还是很强大的,牛X! 那咱就只能放弃咯。

总结

一个ELMAH的配置不当导致了这么多问题,大家看完以后,知道有多严重了吧,所以在使用第三方组件的时候一定要详细了解配置情况和安全设置情况。

关于ASP.NET的安全问题,原文的作者写了OWASP Top 10的.net版,还是非常不错的,英文好的博友可以自行参阅以下,年后我会陆续放出中文翻译版,敬请关注。

版权声明:本文为博主http://www.zuiniusn.com原创文章,未经博主允许不得转载。

时间: 2024-10-03 18:02:19

利用Elmah和Google体验一把入侵的快感的相关文章

[Deepin 2014] 体验一把,还是2013好哇~

哈,不知道有没有人看到该标题之后对俺一顿吐槽呢~~欢迎吐槽. 昨天发现deepin 2014已经release出来了,本着2013蛮好用的2014应该更好的原则我下载了64位的镜像.于是欢天喜地,刻进U盘,开机把2013的分区让了出来给2014. 界面确实很漂亮,是iOS的风格,壁纸和iOS默认是一样的(咦,apple没意见吗?),刚进系统时出现的引导还小激动一把,心想这帮子人终于想通了在UI上下死功夫了.图标是iOS风格的扁图标,dock和MacOS很类似,但没有MacOS那么灵动的感觉.基本

体验一把苹果系统——在windows上安装Mac OS X

每当笔者看见同事在用苹果笔记本的时候就感觉很是羡慕,漂亮的界面,简洁的操作,总想体验一把,今天我就来带领大家体验一把,在Windows电脑上安装Mac OS. 实验目的: 在自己的普通PC机上安装Mac OS来尝一把苹果的美味 来几张截图,在空间.朋友圈装B一翻 当你测试网络环境.软件环境.虚拟桌面环境,却找不到机器?从此不求人 实验环境: 笔记本一台,配置如下: 操作系统:Windows7 64位操作系统(必须是64位操作系统) 内存:16GB内存(低一点也可以,建议16GB或16GB以上内存

体验一把做黑客的感觉-IPC$入侵之远程控制

前言 一看你就是看标题进来的,我可不是标题党啊,大家往下看吧,本文章主要介绍了利用IPC共享漏洞上传并执行木马. 基础知识 一.什么是IPC 进程间通信(IPC,Inter-Process Communication),指至少两个进程或线程间传送数据或信号的一些技术或方法.进程是计算机系统分配资源的最小单位(严格说来是线程).每个进程都有自己的一部分独立的系统资源,彼此是隔离的.为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信.举一个典型的例子,使用进程间通信的两个应用可以被分类为

利用Axis2默认口令安全漏洞入侵WebService网站

近期,在黑吧安全网上关注了几则利用Axis2默认口令进行渗透测试的案例,大家的渗透思路基本一致,利用的技术工具也大致相同,我在总结这几则案例的基础之上进行了技术思路的拓展.黑吧安全网Axis2默认口令安全弱点利用案例:航空安全之四川航空某系统漏洞导致Getshell(影响内网60多台主机安全\目测已被其他人渗透过)乐信通某服务器axis2服务存在弱口令可上传webshell(root权限)中国科学院网Web-services(axis2)系统任意代码执行工具准备:Axis2利用工具包: cat.

第6讲 | 理解区块链之前,先上手体验一把数字货币

初次接触到区块链的你,肯定是一头雾水:“区块链是什么,这玩意到底怎么回事”. 其实对于区块链的原理,你大可不必着急,咱们可以直接上手体验一下目前区块链的第一大应用:数字货币. 本篇的内容面向所有区块链的小白,我会教你如何使用数字货币,来帮你从另外一个维度理解区块链技术. 本篇内容包括但不限于:数字货币钱包介绍.下载安装.转账.数字货币交易所充币.提币等等. 首次接触数字货币 区块链其实是从生产者的角度讨论一个抽象出来的概念.如果把区块链比作车辆设计图纸,那么数字货币就是正在跑的汽车.所以理解区块

体验一把”透明计算&quot;——实验楼试玩

今天打开百度首页看到张教授的"透明计算"已经上了百度搜索风云榜,看到名人方舟子也来凑了个热闹,我也忍不住想来看看这个"透明计算"到底是个什么东西呢?记得人人网的那个博客有说过 实验楼 这个网站,就用了这个技术.那还等什么,果断进去瞧瞧! 1.炫酷狂拽屌的首页 原来这是一个在线教育的网站 进来才发现这是一个在线教育的网站,页面设计看起来还是不错的感觉. 2.注册一下,进来看看. 课程好丰富 这么多的课程啊,看得我眼花缭乱. 3.点一个课程试试 是要点开始实验吗? 都点

简单的WINFORM窗口,体验WINFORM带来的快感

当习惯成为一种自然,就不再喜欢那种条条框框的规则 using System; using System.Windows.Forms; namespace Window{ class Window{ static void Main(){ Form form = new Form(); form.Click += new EventHandler(form_Click);//注冊窗口单击事件 Application.Run(form); } static void form_Click(objec

[转] 检测常见 ASP.NET 配置安全漏洞

看到一篇国外 MVP Troy Hunt 的文章: 67% of ASP.NET websites have serious configuration related security vulnerabilities,大意是依据他搜集到的统计数字,约67%的 ASP.NET 网站因配置不当,存在安全风险. Troy Hunt 文章的分析数据来自他所开发的一个简易网站扫瞄服务--ASafaWeb, Automated Security Analyser for ASP.NET Websites.

如何安装win10和linux 双系统

如何安装win10和linux 双系统 很多入门的小伙伴都想体验一把LInux的快感,但是windows上面的数据又删除不得,无奈只好放弃. 小编通过网上的一些教程,稍微了整理了一下win10和linux双系统的安装教程. 注意事项:请先拉至底部,选择投票,然后观看,谢谢=~_~= 工具/原料 笔记本电脑lenovoG40 30 win10 linux ubuntu14.xxxx Ultraiso U盘X1[大于4G最好] 坚持不懈的毅力 方法/步骤 1 首先第0步,在磁盘的尾巴步压缩出一个大概