IIS作为一款流行的Web服务器,在当今互联网环境中占有很大的比重,绝大多数的asp、asp.net网站都运行在它上面。因此,也引来了无数 黑客们关注的目光。目前针对IIS的攻击技术已经非常成熟,而且相对技术门槛较低,所以很多初学者拿它来练手。许多网站因为网站管理员的安全意识不高或技 术上的疏忽而惨遭毒手。本文通过实例来谈谈针对IIS的攻击技术与安全加固措施。

攻击实例

IIS写权限漏洞利用

我们先通过一个攻击实例来演示如何利用IIS权限配置不当来快速攻陷一个网站,以此来提高广大读者对IIS安全性的重视。

目标网站IP:192.168.1.105

利用漏洞:IIS写权限漏洞

用到的工具:IIS PUT Scaner、桂林老兵写权限利用工具

1 检测目标网站是否存在写权限漏洞

打开IIS PUT Scanner,输入目标网站的IP、端口号(默认为80端口),然后点击“Scan”按钮开始扫描,很快就返回了结果,如图1所示:

图1

2 IIS写权限漏洞利用过程

根据扫描结果,我们可以确定目标网站存在IIS写权限漏洞。下面我们来看下如何利用这个漏洞,来得到一个WebShell。

我 们先将“<%eval request("cmd")%>”这段一句话木马代码保存成一个txt文档,名字随意。我这里命名为test.txt。接着打开桂林老兵写权限利 用工具,输入目标网站的IP或域名,在“数据包格式”处的下拉菜单中选择“PUT”数据包提交方式,最后点击“数据包提交”按钮,我们来看服务器返回的结 果。如图2所示:

图2

服务器返回了201响应码,这标志着我们成功上传了文件。

现 在我们需要将刚刚上传的txt文本修改为asp文件,否则服务器不会将它解析为asp文件。在“数据包格式”的下拉菜单中选择“MOVE”数据包提交方 式,在“Destination”处修改文件名称,默认为shell.asp,这里我修改为cmd.asp。然后点击“提交数据包”按钮,我们来看服务器 返回的信息。如图3所示:

图3

服务器同样返回了“201”响应码,说明我们成功将test.txt修改为cmd.asp了。

现在我们用一句话木马客户端来连接刚上传的一句话木马,可以成功访问。如图4所示:

图4

这样我们就得到了一个WebShell。从整个攻击过程来看,用的时间很短,而且技术门槛很低,一个普通人运用工具也可以很快拿下一个网站。但遗憾的是,在实际的渗透测试过程中,依然有不少站点存在这样的漏洞,希望通过这个实例能够引起广大网络管理员对安全的重视。

IIS6.0解析漏洞利用

a. 在WEB目录下,当文件名称为类似“a.asp;b.jpg”这种格式的时候,IIS会将它解析为asp文件,如图5所示。

图5

b. 在WEB目录下,IIS6.0会将以“x.asp”这种格式命名的文件夹下的所有文件都解析为asp文件,如图6所示。

图6

上面这两点属于IIS设计的缺陷,但可惜微软认为这是IIS的特性,一直没有推出相应的安全补丁。 在尝试绕过文件上传检测时,这两种方法有时非常有效,下面是在实际渗透测试过程中遇到的一个例子。

先登录网站后台,直接上传一个asp木马,提示非法文件,不允许上传。接下来将它的名称改为1.asp;2.jpg后再次上传,发现成功上传至网站目录,如图7所示。

图7

安全加固

这部分我们通过跟踪IIS从安装到配置的整个过程,分析其中可能面临的安全风险,并给出相应的加固措施。

IIS安装及版本的选择

在IIS安装过程中,根据具体的业务需求,只安装必要的组件,以避免安装其他一切不必要的组件带来的安全风险。如网站正常运行只需要ASP环境,那我们就没必要安装.net组件。

对于IIS版本,至少要在6.0以上,IIS5.0存在严重的安全漏洞,不过现在运行IIS5.0的服务器已经非常少了,对于这一点不用太过担心。

IIS配置

1 删除IIS默认站点

把IIS默认安装的站点删除或禁用掉。

2 禁用不必要的Web服务扩展

打开IIS 管理器,检查是否有不必要的“Web服务扩展”,如果有则禁用掉。如图8所示:

图8

3 IIS访问权限配置

如果IIS中有多个网站,建议为每个网站配置不同的匿名访问账户。

方法:

a. 新建一个账号,加入Guests组

b. “网站属性”--->“目录安全性”--->“身份验证和访问控制”,把“启用匿名访问”处,用刚新建的账户代替默认账户,如图9所示。

图9

4 网站目录权限配置

原则(如图10):

目录有写入权限,一定不要分配执行权限

目录有执行权限,一定不要分配写入权限

网站上传目录和数据库目录一般需要分配“写入”权限,但一定不要分配执行权限

其他目录一般只分配“读取”和“记录访问”权限即可

图10

5 只保留必要的应用程序扩展

根据网站的实际情况,只保留必要的应用程序扩展,其他的一律删除,尤其是像cer、asa这样极其危险的扩展,而且一般网站也不需要它,如图11。

图11

6 修改IIS日志文件配置

无论是什么服务器,日志都是应该高度重视的部分。当发生安全事件时,我们可以通过分析日志来还原攻击过程,否则将无从查起。有条件的话,可以将日志发送到专门的日志服务器保存。

先检查是否启用了日志记录,如未启用,则启用它。日志格式设置为W3C扩展日志格式,IIS中默认是启用日志记录的。

接着修改IIS日志文件保存路径,默认保存在“C:\WINDOWS\system32\LogFiles”目录下,这里修改为自定义路径。建议保存在非系统盘路径,并且IIS日志文件所在目录只允许Administrators组用户和SYSTEM用户访问,如图12。

图12

7 防止信息泄露

a. 禁止向客户端发送详细的ASP错误信息

“IIS管理器”--->“属性”--->“主目录”--->“配置”--->“调试”,选择“向客户端发送下列文本错误消息”项,自定义出错时返回的错误信息,如图13。

图13

b. 修改默认错误页面

“IIS管理器”--->“属性”--->“自定义错误”,用自定义的错误页面替换默认的默认页面。下面是我自定义的一个404错误页面,当网站发生404错误时,将向客户端返回这个页面,如图14。

图14

8 自定义IIS Banner信息

默认Banner信息会泄露服务器类型、版本等相关信息,我们需要对其进行修改,这样可以防止信息泄露,还可以骗过一些自动化扫描、攻击工具。

a. 修改默认HTTP头信息

在修改之前,我们先来看下默认的HTTP头信息是什么样的。我们向IIS服务器发一个请求,然后用抓包工具分析它返回的数据,就可以发现HTTP头信息,如图15所示:

图15

上图用红框标注的地方就是HTTP头信息,通过它我们就可以确定目标网站使用的是IIS服务器。

现 在我们来看下如何自定义HTTP头信息。首先,打开“IIS管理器”--->“属性”--->“HTTP头”,在“自定义HTTP头”选中默 认的HTTP头信息,进行编辑,或者删除掉默认的,自己添加一个新的HTTP头信息。图16中是我随便自定义的一个HTTP头。

图16

在修改完成后,我们再来抓包分析一下,如图17所示:

图17

从图上可以看到,现在IIS服务器返回的HTTP头已经是我们自定义了。

b. 修改默认IIS头信息

修改默认IIS头信息需要通过工具来完成。这里推荐使用ServerMask,它是一款专门用来隐藏或修改IIS服务器默认Banner信息,防止信息泄露的工具。下图18是该软件的界面:

图18

在修改之前,我们先来分析下IIS默认的头信息,如图19所示:

图19

根据服务器返回的信息,我们很容易判断出目标网站使用的服务器是IIS,版本是6.0,操作系统是Windows Server 2003,这些信息对攻击者确定下一步行动是非常有帮助的。

我们也可以使用扫描工具来完成刺探目标网站服务器相关信息的任务,这类工具非常多,而且使用非常简单,如图20。

图20

现在我们来把默认的IIS头信息隐藏或修改掉,首先打开软件,选中要保护的网站,在“Security Profile”处的下拉菜单中选择相应的策略,这里我自定义一个。

图21

如图21所示,我把IIS默认的头信息修改成了Apache服务器的信息。这样就可以迷惑攻击者,有效隐藏网站的真实信息。现在我们再来分析下修改后的IIS服务器返回的头信息,如图22:

图22

现在IIS服务器返回的头信息已经是我们自定义的了,这里伪装成了Apache服务器。

我们再用扫描工具扫描一下,看能否得到目标网站的真实服务器类型,结果如图23:

图23

根据上图,我们可以看到现在扫描器已经获取不到目标网站的服务器类型了。

对于一些自动化攻击工具来说,因为获取不到目标服务器的类型和版本相关信息,自然也就无法进行下一步攻击了。

总结

通过上面对IIS攻击和安全加固的实例,相信读者对IIS服务器的安全有了更加深入的认识。其实对于IIS的安全加固并不难,很多时候更重要的是管理员的安全意识,只要有足够的安全意识,加上上面介绍的安全加固方法,相信你一定可以打造一个安全的IIS服务器。

IIS攻击与安全加固实例分析的更多相关文章

  1. [转]Apache漏洞利用与安全加固实例分析

    1.2 Apache文件解析特性 Apache对于文件名的解析是从后往前解析的,直到遇见一个它认识的文件类型为止.因此,如果web目录下存在以类似webshell.php.test这样格式命名的文件, ...

  2. Apache漏洞利用与安全加固实例分析

    Apache 作为Web应用的载体,一旦出现安全问题,那么运行在其上的Web应用的安全也无法得到保障,所以,研究Apache的漏洞与安全性非常有意义.本文将结合实例来谈谈针对Apache的漏洞利用和安 ...

  3. Tomcat漏洞利用与安全加固实例分析

    Tomcat中间件经常遇到的漏洞: 1.Tomcat默认存在一个管理后台,默认的管理地址是http://IP或域名:端口号/manager/html 2.Axis2默认口令安全漏洞,默认的管理地址是h ...

  4. sql注入实例分析

    什么是SQL注入攻击?引用百度百科的解释: sql注入_百度百科: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具 ...

  5. Linux系统网络性能实例分析

    由于TCP/IP是使用最普遍的Internet协议,下面只集中讨论TCP/IP 栈和以太网(Ethernet).术语 LinuxTCP/IP栈和 Linux网络栈可互换使用,因为 TCP/IP栈是 L ...

  6. RPC原理及RPC实例分析

    在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示.这些程序的特点是服务消费方和服务提供方是本地调用关系. 1 2 3 4 5 6 public class ...

  7. java基础学习05(面向对象基础01--类实例分析)

    面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过set ...

  8. (转)实例分析:MySQL优化经验

    [IT专家网独家]同时在线访问量继续增大,对于1G内存的服务器明显感觉到吃力,严重时甚至每天都会死机,或者时不时的服务器卡一下,这个问题曾经困扰了我半个多月.MySQL使用是很具伸缩性的算法,因此你通 ...

  9. 实例分析ELF文件静态链接

    参考文献: <ELF V1.2> <程序员的自我修养---链接.装载与库>第4章 静态链接 开发平台: [thm@tanghuimin static_link]$ uname ...

随机推荐

  1. 【IntellJ IDEA】idea上所有代码都报错了

    可能会碰到蓝屏,内存溢出重启idea等特殊情况. 重新打开idea后发现原本的代码全都报错了 正确的解决方法: 方法很简单 执行idea工具栏上下面的菜单: File -> Invalidate ...

  2. CentOS,Fedora,Debian,Ubuntu,SuSE——我到底爱谁

    主观情绪上,一直都不是特别喜欢RedHat,虽然它是毋庸置疑的老大,其实我并不介意有人说我肤浅,说这话的理由简单,redhat.com发布RedHat 9(简写为RH9)后,不再开发RedHat 10 ...

  3. android RecyclerView (三):ItemAnimator 详解

    本文继上篇 ItemDecoration 之后,是深入理解 RecyclerView 系列的第二篇,关注于 ItemAnimator,主要是分析 RecyclerView Animators 这个库的 ...

  4. Latex作者单位的写法—AND 首页脚注

    IEEE会议的模板 以四个作者为例 正常: 作者单位如果名字较短,可以直接写在作者对应的下面,邮箱可以对应写在再接下来的下面. 一 如果邮箱较长,可以用\thanks{ }命令将其变为脚注.例如: ~ ...

  5. iOS开源项目:DYNavigationController

    DYNavigationController是一个实现了左右滑动导航的项目. https://github.com/dyang/DYNavigationController 首先用之前的跟视图初始化D ...

  6. 2016/4/14腾讯Android实习面试

    腾讯实习面试,面试官会先问你会什么,擅长什么.然后会依照这个问,问的也不是非常偏,问道你不会的就换下一个知识点. 主要问我的有这几个问题 图形学 1.Bizer曲线怎么绘制的.原理是什么 2.对栅格有 ...

  7. UVA 10123 No Tipping (物理+贪心+DFS剪枝)

    Problem A - No Tipping As Archimedes famously observed, if you put an object on a lever arm, it will ...

  8. JavaScript中的单引号和双引号解决

    在使用JavaScript显示消息或者传递字符数据的时候,经常会碰到数据中夹杂单引号(')或者双引号("),这种语句往往会造成JavaScript报错.对此一般采用/'或者/"的解 ...

  9. Android触控屏幕Gesture(GestureDetector和SimpleOnGestureListener的使用教程) 分类:Androidandroid实例

    1.当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等,我们知道View类有个View.OnTouchListener内部接口,通过重写他的onTouch(Vie ...

  10. hadoop文件系统与I/O流

    本文地址:http://www.cnblogs.com/archimedes/p/hadoop-filesystem-io.html,转载请注明源地址. hadoop借鉴了Linux虚拟文件系统的概念 ...