网页渗透测试前期信息收集 – 作者:凯信特安全团队

最近由于工作原因,要去了解某一个网站的基本信息,包括指纹识别、CDN、服务器操作系统等等信息。但苦于自己是一个刚入网络安全行业的萌新,好多东西都要上网去查,完全跟不上大佬的步伐,而且有些东西还记不住,查了一次第二次忘了还得再查一边的那种。于是,我干脆抽了点时间,简单整理了一下这些网站信息的获取方法。自己的操作不多,完全是从各位论坛大佬笔下学到的,我只是个搬运工,如有不足还请斧正。

域名及IP:

这个很简单,当我们得知了一个网站的域名后,直接CMD对它ping一下就知道了。如下图,ping www.baidu.com,得知百度的ip地址为220.181.38.150。

图片.png操作系统:

服务器操作系统常用的有Windows、Linux、Unix以及Mac OS X Server(苹果开发的Unix服务器操作系统)。当然市面上常见的还是Windows与Linux居多。那么如何判断它的操作系统?有一个简便的方法,还是ping www.baidu.com。

图片.png前面是ip,接着是数据包大小及传输时间,那么最后一项TTL是什么?TTL即Time To Live,翻译为生存时间值。他的存在意义是限制数据包在计算机网络中存在的时间,避免数据包在网络中的无限转发,节省网络资源。实际上,TTL是数据包在计算机网络中可以转发的最大跳数。IP数据包在到达目标IP之前,每经过一个路由器,TTL都会被修改一次,即-1,然后再由这个路由器将包转发出去。TTL值可以帮助我们识别操作系统类型。有这样一个规则:

UNIX 及类 UNIX 操作系统回显应答的 TTL 字段值为 255

LINUX操作系统回显应答的 TTL 字段值为 64

Windows NT/2K操作系统回显应答的 TTL 字段值为 128

Windows操作系统回显应答的 TTL 字段值为 32

我们得到的TTL值,可以把值与上面的规则作比较,大于这个数且最接近的即为目标的操作系统。例如上面获得的,ping www.baidu.com的TTL值为52,大于这个数且最接近的数为64。据此推断,中间数据包可能通过了64-52=12个路由,即百度的操作系统是Linux的。

但也有人说这个方法不靠谱,那就再说一个在线检测平台,https://www.netcraft.com/。两个方法搭配使用,双重保证。

图片.png这个平台可检测到的东西很多,有兴趣的可以详细了解一下,下面提到的内容有些他也可以检测出来。

开发语言:

一般防护较弱的网站,直接从URL中就可以看到他的开发语言,如URL末尾有.asp就说明他的开发语言为ASP,如果是.php就是PHP开发语言。下图从地址栏中就可以一眼看出他的开发语言是ASP.NET。

图片.png图片.png当然大部分网站都是有相关的防护措施,将后面的拓展名隐藏或修改成其他的。那么就要想其他办法了,还有一种方法就是在它传送的数据包中寻找蛛丝马迹。页面下按F12开启开发者工具,刷新当前页面或进入某一页面,在网络一栏中检查他传送的数据。有一栏X-Power-by会显示他的开发语言,如下图:

图片.png当然,查看数据包也可以用burp suite抓包检查,这里就不细谈了。这两种办法可以应用在多数防护较弱的网站,如果以上方法都不行,还有我所知的最后一招。依次在网站URL后面加域名:/index.php、/index.asp、/index.jsp、/index.apsx、/defualt.php、/defualt.asp、/default.jsp、/default.aspx,能正常打开该网站的就是用什么语言开发的。如下图进入www.xxx.com.cn与www.xxx.com.cn/index.php获得的页面是一样的,说明他的开发语言是PHP。

图片.png图片.png中间件:

多数网站的中间件可以从报错信息里可以看到,如下图就是很典型的例子:

图片.png图片.png如果报错页面设置了其他样式的话,那可能就需要查看它响应数据包有没有泄露信息了。有些网站在响应数据包中可是大大方方的写着Server:Tomcat/Apache呢。

CMS类型:

CMS是网站内容管理系统,种类繁多,如帝国、phpcms、织梦cms、pageadmin、Discuz!等等。有些网站最底部有版权信息,如织梦官网用的就是织梦CMS啦(废话!)。

图片.png不过许多网站下面可能都没有这行字,那么就尝试去访问这个网站的robots文件。在地址栏后输入/robots.txt回车,检查返回的信息。有些很直观的就写出来“#robots.txt for xxx”,如下图。而大部分没有这么直白,就需要复制到百度里查一下了。

如果还不行,我就只有最后一招了:扫描工具。不论是在线扫描还是程序,一般都是用泡字典的方式。常见的工具有御剑、cmsmaster等。

数据库类型:

数据库一般很难从页面内容获取。一般可以用在URL中键入敏感字符(如’)来让网页报错来判断数据库相关信息。如果他有数据库注入点的话可以尝试用注入工具(如sqlmap)跑一下,成功后会获得他的数据库版本信息。但是防护做的好的话就不太可能了,只能通过经验来猜测。一般小型的网站都是mysql居多,aspx就是sqlserver2005比较多。一般php用mysql,asp一般用access。大型的网站一般用oracle数据库。

WEB容器版本号:

web容器:JSP容器、SERVLET容器、ASP容器等。一般防护较弱的网站也是从响应数据包中或是报错页面可以获得。

是否使用WAF:

这个最简单的办法就是去攻击这个网站(当然别去深入攻击!),比如编一个XSS代码提交上去看它回应,如下图就是有电信的云防护。

图片.png上面的方法可能只有适用于有云防护的网页,如果想检测本地防火墙的话,我还是推荐用工具去测试,如wafw00f。

是否使用CDN:

CDN是网站的加速的一种方法,即内容分发网络,它可以使一个网站拥有多个IP,这也就成了我们测试它是否使用了CDN的方法。用nslookup指令去访问某个网站,如果他有多个IP的话就证明它使用了CDN,如下图:

图片.png内网or外网:

这个就比较简单了,一部手机就能搞定。如果你电脑正在访问某个内网页面,将你的手机WiFi关掉,用移动数据访问你电脑正在访问的页面。如果可以的话就证明该网页向外网开放,如果不能访问就证明电脑正在访问的是内网页面,只能在内网访问。

后言:

我相信WEB服务器、WEB容器和WEB中间件傻傻分不清楚的萌新应该不止我一个吧?网上大佬说WEB容器是中间件的一部分,就像货车可以拉货,但是不能直接拉水,需要一个杯子瓶子或是桶之类的容器。而且web中间件与web服务器是有重叠的,原因在于tomcat等web中间件也具备web服务器的功能。当然经验积累的足够多了,区分这些应该是易如反掌吧。

来源:freebuf.com 2019-07-23 10:16:09 by: 凯信特安全团队

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论