A12.WEB主机-信息搜集
WEB主机-信息搜集
常规的信息搜集包括:CDN、真实IP、域名、旁站、主机、端口、网站WAF、WEB等方面,在实验环境里,省略了前面的一些过程。如果想了解这些手段,可以使用关键词“渗透测试 信息收集”获取网络上的资料。
WEB站点信息的搜集,通常可以使用目录扫描,CMS指纹识别,查看网站结构、源代码人工分析等方法,找出网站特征信息,如果是使用公开的CMS程序构建的,就可以下载到相应的源代码,在有源代码的情况下,挖掘漏洞,这样就容易一些。
渗透测试前期,信息收集可以说是非常重要的。所谓,“知己知彼,百战不殆”,信息收集是渗透测试成功的保障,对目标主机信息掌握的越多,越有利于对后续的渗透测试。
扫描存活主机
扫描工具有很多,这里推荐使用Nmap扫描工具,选项丰富,功能强大。下载安装最新版本的Nmap,新版本的Nmap会自动加入环境变量PATH,因此在cmd下可以直接使用,本次使用命令nmap –sn 192.168.10.0/24进行扫描。
-sn选项(对应旧版本的-sP):告诉Nmap仅仅进行ping扫描(主机发现),然后列出对扫描做出响应的主机。使用-sn进行默认扫描时,会发送一个ICMP回显请求、到端口443的TCP SYN、到端口 80 的 TCP ACK请求,以及默认情况下的 ICMP 时间戳请求。-sn 选项可以与任何发现探测类型(-P*选项)结合使用,会获得更大的灵活性。当运行 Nmap 的源主机和目标网络之间有严格的防火墙时,建议使用这些高级技术。否则,当防火墙丢弃探测或响应时,主机可能会被错过。

注意:如果在VMware虚拟机里的NAT模式或者主机模式进行-sn扫描时,扫描结果因为VMware虚拟网络的问题会出现误报,这时可以尝试使用以下命令避免误报。
nmap -sn -PE -n 192.168.3.0/24
如果主机屏蔽了ping请求的情况下,可以使用-Pn选项(适用于物理环境,在VMware的主机模式和NAT模式下会误报)。
-Pn选项(旧版本的-P0或者-PN):如果主机屏蔽了ping请求,Nmap可能会认为该主机没有开机。这将使得Nmap无法进行进一步检测,比如端口扫描、服务版本识别和操作系统识别等探测工作。为了克服这一问题,就需要禁用Nmap的主机检测功能。在指定这个选项之后,Nmap会认为目标主机已经开机并会进行全套的检测工作。
扫描端口和服务
使用命令nmap -sV 192.168.10.130进行端口和服务探测。
-sV选项:启用版本探测,通过相应的端口探测对应的服务,根据服务的指纹识别出相应的版本。默认情况下,Nmap 版本检测会跳过 TCP 端口 9100。如果不排除任何端口,需要加上--allports选项。

扫描后发现有三个端口开放,分别是80、135、445和49154,操作系统是Windows 2008或2012。
实验环境使用的Windows 2008未打任何补丁。针对特定的端口,可以使用MS17-010等远程漏洞利用工具,直接获得管理权限,非常简单,但这并不是构建内网靶场的目的。
根据扫描结果,目标主机上开放了Web服务,接下来从Web服务入手进行安全测试。
网站目录扫描
目录扫描包含了目录和文件扫描。目录扫描的工具有很多,如DirBuster、Dirsearch、dirmap、dirb、御剑等等。扫描国内的网站时,建议使用国内开发的工具,这样内置的字典符合国内CMS目录的命名习惯。使用扫描工具时,一是看速度,二是看字典,一个好的字典是非常重要的。
下载御剑目录扫描专业版,使用自带的字典进行扫描。根据网站特点,选择ASP、BAK、DIR、MDB几个字典扫描即可,不需要选择所有字典。

内置的字典包含的目录数量太少,经过扫描,虽然获得了一些信息,但没有扫描到网站后台目录信息。
接下来需要搜索、下载一个数量比较多的目录字典,重新进行扫描。下载以后,按照软件的命名规则,把御剑原来的目录字典dic.txt(在files目录下),改名或者删除,把新的字典文件命名为dic.txt。重新打开软件,可以看到这个字典有38万多条目录,因为数据量太多,所以可以适当提高一下扫描的参数。在作者的实验环境中,将扫描的线程和速度都设置为最大时,扫描效率最高。平均每秒扫描2884个,不到3分钟扫描就完成了385138个URL。需要注意的是线程和速度并非越高越好,需要根据扫描电脑的性能和被扫描电脑的性能进行设置。

扫描软件挂上这个字典后,成功的扫出许多目录来。当然,其中最重要的是扫出了网站后台的目录Admin_aspcms。
问题:扫描软件使用的方法“高速HEAD”具体是指什么?
CMS指纹识别
CMS(内容管理系统)又称为整站系统,用户只需要下载对应的CMS程序,就能部署搭建一个网站。一般来说,不同的CMS都有其独特的结构命名规则和特定的文件内容,因此可以利用其特征来获取网站所使用的CMS程序及其版本。
识别CMS的目的在于,方便利用已公开的漏洞进行安全测试,还可以下载对应的CMS进行本地白盒代码审计,双管齐下,提高测试效率。
手工从源代码里寻找特征信息
打开网站首页,浏览器标题栏、Logo提示、底部的版权信息,显著的表明了这个网站使用的是程序是ASPCMS。等一下,有这么容易吗?这是由于我们是自己架设的ASPCMS,没有修改网站名称,网站Logo,版权信息导致的,企业在使用时,通常会修改掉这些信息。如果在实际的场合中,一般不会遇到这种情况。所以需要忽略掉这些信息,继续从其它地方寻找特征。
接下来,先查看网站首页的源代码,除了刚才提到的未更改的默认特征信息,在底部发现了包含特征的文件名AspCms_AdvJs.asp。

此外,在源代码中搜索AspCms,发现还有几个同样包含此前缀的文件名。(这里需要有一定的Web源代码分析经验,能够快速的过滤掉非关键信息:如list,content,jquery.form.js等)。通过搜索引擎搜索ASPCMS,可以得知ASPCMS确实是一套开源程序的名称。
CMS指纹工具自动识别
当有同样需求的人/次数足够多的时候,就会出现这方面的工具/产品。不过,这些产品带来的影响有好有坏,对于经验丰富的人来说,可以提高效率;对于新手来说,如果只会使用工具,不能透过工具,了解到其背后的运行机制,那就变成了坏事。
早期的测试人员都是手动挖掘特征信息。后来就出现了CMS指纹识别工具,有单机版的,也有在线的。经过搜索资料并分析,得知目前单机版的指纹识别工具规则库缺乏维护,很少更新,因此选择在线指纹识别。
但这样会遇到另一个问题。要测试的网站部署在内部网络中,在互联网上无法访问。这样就在线识别网站的“爬虫”无法连接到内网IP地址,也就无法识别。怎么办?
办法就是干脆找一些在互联网上使用ASPCMS搭建的网站。这样也符合实际情况。
利用刚才发现的ASPCMS文件名特征,使用语法:“inurl: AspCms_AdvJs.asp”,搜索在URL中包含AspCms_AdvJs.asp的网址。

搜索之后,获得了1000多条结果。可见尽管ASPCMS已经停止维护了多年了,但仍然有一些小的企业、单位在使用原版、或经第三方修改过的ASPCMS来搭建网站。选出3个已经将网站名称,网站Logo,版权信息都修改为公司信息的网站,一会准备进行指纹识别测试。
接下来需要寻找能够在线进行CMS指纹识别的网站。使用关键词“在线cms指纹识别”,找到了一些结果,从中选择了一个不用注册(需扫码)的网站,BugScaner: http://whatweb.bugscaner.com/look/进行测试。把选择的几个网址,进行在线识别,其中2个识别结果为ASPCMS,另一个识别结果为DBCMS或ASPCMS。

市场上很多从事网站开发的公司其产品都是在一些常见的开源CMS基础上修改的,修改后仍然会保留一些原CMS的特征,这里的识别结果出现了2种CMS,推测可能就是这个原因。
CMS漏洞信息搜集
接下来搜索ASPCMS的漏洞信息。在百度百科有ASPCMS的词条信息,在“版本更新”里,可以发现从2.2.4起,默认后台地址更改为Admin_Aspcms。

根据这一信息,访问一下后台。访问成功,根据网页下方的时间2012-2013,推测其是2012-2013年前的产品。结合百度百科版本时间,猜测版本号很可能位于2.2.4--2.2.9之间。
开始使用“ASPCMS V2 漏洞”进行搜索,发现搜索到的资料不理想。因此去掉版本号,直接使用关键词 “ASPCMS 漏洞”进行搜索。

经过一番搜索后,找到了以下资料,经过后期验证/Plug/Comment/Commentlist.Asp页面存在SQL注入漏洞,可以成功利用。

注意:在搜索的资料中,如果遇到的资料前面介绍了漏洞,但给出的后台地址仍然是Admin目录,那就说明版本是2.2.4以下的,这个漏洞就可能无法利用。

浙公网安备 33010602011771号