信息收集
引言
渗透测试的第一步是最大程度地收集目标系统的信息,这同样也是渗透测试的关键性步骤。信息的收集和分析伴随着渗透测试的每一个步骤。实现信息收集有很多种方法,例如:使用搜索引擎、扫描器或发送特殊构造的HTTP请求等,这些手段都可以使服务器端的应用程序返回一些错误信息或系统运行环境的信息,通过分析这些信息,可以为后期的渗透测试工作提供很大帮助,如:
- 减小了测试的范围,加强了针对性;
- 工作简洁高效,避免做无关测试;
- 提高测试效率,减少不必要的麻烦。
信息收集工作包括5类:Web服务器和应用程序指纹探测、后台应用程序发掘、爬网和Googling、错误代码挖掘、应用程序配置管理测试。
接下来,我将使用站长之家工具网站进行淘宝网的信息收集。
网站基本信息
渗透测试第一步就是搜集网站基本信息,如IP地址等。这里使用站长之家作为搜集信息的工具。
站长之家的使用
如图,点击其中的站长工具(目前我们只用到该功能)。然后弹出如下的界面,将网址输入进去(本例中使用的是淘宝),点击查询,稍等片刻就能够得到返回数据了。
等到返回数据后,下面紧接着的就是网站的基本信息。
如图,我们能够看到域名地址、备案信息、百度收录等信息。网页不要关闭,后面接着使用。
WEB服务器软件探测
服务器软件(请参考上一部分内容)的探测是通过分析对服务器发送的各种请求的返回信息,我们可以了解到Web服务器的版本等若干信息,这些信息可以为后期渗透测试过程中选择何种测试方法和攻击手段提供重要的参考数据,为判断目标系统可能存在的某种脆弱性提供帮助,做到对症下药。比如IIS6.0的解析漏洞。
将站长工具网页往下拉就能看到服务器信息一栏。
重点注意服务器类型,从图中可以看出淘宝使用的服务器软件是:Tengine。下面引用Tengine官网的介绍:
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
从中可以看出,Tengine是以Nginx为基础进行开发的一款服务器软件。一般有经验的人可以通过服务器软件和其他信息找到服务器所用的操作系统版本。例如:IIS6.0一般都是使用Windows Server 2003。
网页程序指纹探测
这里主要分为两步,第一步是探测出网页使用的脚本语言类别(PHP、JSP等);第二步是对服务器使用的编程框架(后面进行解释)进行探测。
脚本语言探测
欲通过网页界面进行入侵,必须与服务器进行交互。如果服务器上的所有网页都是静态HTML,没有使用任何脚本、数据库,我们是无法达到入侵的效果的。服务器脚本语言探测的技巧很多,比如在官网随意点击一个链接,就能看到网页的后缀。
如图,可以看到网页后缀为.PHP
,意味着淘宝的网页使用的是PHP的脚本。这里网页的RUL后的?
代表的是GET请求传递的参数,其中参数名为spm
,参数值为1.7274553.1997517385.d12.D6zPWN
。当有多个参数值存在时使用&
号连接。例如.php?username=maomao&password=123456
。
当然,有很多网页是无法通过该方法查找到使用的是什么语言,要怎么做,就仁者见仁智者见智了。
框架探测
框架(CMS系统) -- 来自百科定义:
内容管理系统是企业信息化建设和电子政务的新宠,也是一个相对较新的市场,对于内容管理,业界还没有一个统一的定义,不同的机构有不同的理解:
简单的理解就是一个方便站长建站的网页基本框架。各种CMS参差不齐,也是网页安全问题的主要来源,不过随着用户的增多,安全性也有所提高。一般在对使用某款带有漏洞的框架的网页进行渗透的时候,直接找到对应框架的的EXP(会在下一部分介绍)直接爆破即可。这也是我们为何探测框架的原因。
爬网站目录结构、Google hacking和管理程序的入口
目录结构
Web网站同你使用的文件系统一样,会按照内容或功能分出一些子目录。有些目录是希望被来访者看到的,而有些则可能存储了一些不希望被所有人查看的内容,比如一些存储了私人文件的目录,以及管理后台目录等。一些程序员喜欢将后台管理目录命名为一些常见的名字,如admin、login、cms等。在对网站进行分析时,可以手工测试一下这些常见的目录名,说不定就会有收获哦。
如果管理员允许,Web服务器会将没有默认页面的目录以文件列表的方式显示出来。而这些开放了浏览功能的网站目录往往会透露一些网站可供浏览的页面之外的信息,运气好的话,甚至能够在这些目录中发现网站源代码甚至后端数据库的连接口令,因此一定要仔细分析这些目录中的文件。
一些网站还会在其根目录下放置一个名字为robots.txt的文件,它告诉搜索引擎的爬虫在抓取网站页面应当遵循的规则,比如哪些目录和文件不应当被抓取等,然而robots.txt中指出的文件与目录却经常是渗透测试者最关注的攻击目标,如果在目标网站上发现了这个文件,应当对它给予足够的关注。
为了尽可能的获取更多的信息,我们便需要对目标网站进行目录结构爬取。一般的方法是通过URL构造相应的目录结构请求并发送给服务器,通过判断服务器返回数据包(不懂请看上一部分HTTP请求部分)判断目录或文件是否存在。比如我们判断淘宝网站根目录下有没有index.php和admin.php文件,我们在浏览器的地址栏分别输入:
http://www.taobao.com/index.php
http://www.taobao.com/admin.php
服务器分别返回:
由上可以看出服务器根目录下存在index.php文件,不存在admin.php文件。当然,手动输入判断费力不讨好,通常情况下测试者都是用相应辅助工具进行爬取(工具将在下一部分介绍)。
Google Hacking
Google Hacking 内容也很多,我就偷一下懒使用别人写好的。红黑联盟和FreeBuf。
管理程序的入口
一般称之为网站后台,是站长管理网页的工具。这里引用百度百科 - 网站后台。
通常渗透是无法直接利用网站前台页面就达到GetShell(即网页的控制权,将在下一部分介绍)的目的的。而网站的后台大多数具有写入文件,改变网页配置等功能,所以我们要拿下后台的控制权。在这之前,我们得找到网站的后台。
多数情况下,直接在网址后面加上admin. + 网页后缀,如PHP
就能够得到网站后台,但是随着站长安全意识的提高,很多人将后台入口文件的名称改了。这种情况下就得自己动手找了,我一般手工试几个常用的后台地址,不行就放工具扫描了,原理和爬网站目录一样。
旁注和C段
有的时候,会遇到目标网站的安全性极高或者我们技术不够,无法搞定的情况,这时候我们就会使用旁注和C段。这里对旁注和C段进行一个简单的介绍,会在以后的渗透中使用到。
旁注
在字面上解释就是-"从旁注入",利用同一主机上面不同网站的漏洞得到webshell,从而利用主机上的程序或者是服务所暴露的用户所在的物理路径进行入侵。这时候就用到站长工具:
在网页基本信息中有同IP网站个数,点进去就能看到如下的界面:
可以看到和淘宝同IP的网站。现在我们就一个一个的查找所有网页中的漏洞,只需要其中某一个网页存在漏洞,就可能导致整个服务器沦陷。
C段
C段指的是IP地址的C段 如192.168.0.1-255
,一般都是同局域网下的主机。如果旁注时发现服务器上所有的网站的安全性都非常之高,搞不定时,便从C段入手。我想了想C段的概念比较多,放到后面提权的部分再讲。
后记
关于信息收的这一部分就先码这点字,日后有需要的再进行补充。