信息收集(Information Gathering),是指通过各种方式以及借助相关工具来尽可能多地获取目标站点的信息,是***测试过程中所需完成的第一步,也是非常重要的一步。在web***测试中,信息收集是必不可少的一个环节,信息收集的质量的好坏在很大程度了决定了后期的***测试的效果,充分的信息收集往往能起到事半功倍的作用,也可能是后期***中起关键作用的一个入口,本篇文章主要是根据***实战来介绍F12信息收集以及相关技巧!
F12 开发者工具是可帮助开发人员生成和调试网页的一套工具,主要包含elements、network、sources、timeliness、Profiles、resources、audits、console模块,如图1-1所示:
图1-1 图1-1 F12开发者工具页面
F12开发者***是我认为最基础的信息收集,也是最简单、最快捷的信息收集,通过F12我们可以收集到很多不在明面上面的信息,主要包括注释信息收集、hidden信息收集、相对路径信息收集、webserver信息收集以及JavaScript功能信息收集等。
1.1.1 注释信息收集
我们在前端访问的页面,在其页面源代码中往往会存在有注释信息,这些注释信息中往往会包含有很多敏感信息,可能是某个文件的下载链接,也可能是一些隐藏的功能模块,甚至更有可能是一些你意想不到的敏感信息。在F12的elements模块中我们可以逐级展开个节点来查看注释信息,但是这样效率实在是太低了,因为在这个模块我们是不能使用【Ctrl+F】搜索注释信息的,另外可以通过查看页面源代码来搜索注释信息,但是搜索出来的不是连续的,这样也不是很方便我们查看。
在F12中,我们可以点击右上角的show drawer标志()进行所有字符的搜索<!--,另外我们可以使用快捷键【Ctrl+shift+f】来快速进行搜索,即可把所有的注释信息搜索出来,如图1-2所示。通过这种方法我们就可以快速查看当前页面中的注释信息,通过本次我们可以获取到一张图片的路径<!-- <imgsrc="dvwa/p_w_picpaths/RandomStorm.png" /> -->,有些管理管理员可能在部署网站的时候忘记关闭目录浏览功能,我们就可以通过访问p_w_picpaths来看看是否开启了目录浏览,如果开启了目录浏览我们可以慢慢通过目录浏览来访问其他的很多敏感文件!如数据库文件、后台某些未授权页面已经某些备份文件等。
图1-2 图1-2 提取注释信息
玩过ctf的朋友都知道,在web项中刚开始学习的时候,第一题的flag多数都在页面源代码中的注释信息中,如图1-3,图1-4所示。
图1-3 图1-3 获取flag
图1-4 图1-4 获取flag
在实战中,我曾在注释信息中获取到文件下载的地址,进而获取了很多敏感信息,如姓名、×××、电话、邮箱等我们通过这个这些信息可以制作具有针对性的字典,从而对后台管理进行暴力破解;也曾在注释信息中获取到一个忘记密码功能的连接,刚好这个忘记密码这个地方存在SQL注入,通过注入将发送的验证码发到本人的手机号上面,然后对root账号进行重置,通过登录后在文件上传的地方可上传webshell,前端校验,因此很容易绕过!
对于注释信息类的信息泄露,一是尽量删除前端显示的注释信息,二是不用的功能模块直接删除,不可通过注释的手段来进行隐藏!
1.1.2 hidden信息收集
在查看源代码时,我们会发现有些控件的type的值是hidden,代表该控件在页面中是隐藏的,不显示的,有些参数虽然是hidden的,但是依旧会提交到服务器,这也给了我们利用的机会,我们使用上面的搜索方法搜索hidden,如图1-5所示,即可查看所有type值为hidden的控件。
图1-5 图1-5 搜索hidden相关内容
我们可以通过删除hidden即可在页面中显示该控件,如图1-6所示,并且可修改对应的value的值。
图1-6 图1-6 删除hidden
在实战中,我曾通过搜索hidden获取到重置别人的账号所发送的短信验证码,成功重置了该用户的密码,进而获取到该站点的登录访问权限,另外有一次由于hidden的这个参数依旧是提交到服务器的,而刚好这个参数是存在XSS漏洞,其余提交的显性参数是有了一定过滤的。
因此尽量不要使用hidden属性来隐藏敏感数据,如隐藏登录账户;发送的短信验证码禁止显示在页面源代码中。不管以何种方式,对于提交到服务器的参数切记都需要进行校验及过滤!
1.1.3 相对路径信息收集
相对路径信息收集,我主要是收集图片所在的相对路径,如图1-7所示,然后通过查找(locate或者find)对应图片的位置,结合收集的相对路径来进行获取我们想要的绝对路径,从而进行webshell的上传!
图1-7 图1-7 查看图片属性
另外我们还可以在Resource下的script中查看相关的js文件(如conf.js)来获取相对路径信息,可能某些链接就可以未授权访问,从而我们可进行进一步的利用,如图1-8所示!
图1-8 图1-8 查找其他页面
在实战中,我经常使用这种方法进行查找物理路径来进行上传webshell,尤其是结合一些命令执行工具来进行使用,可能你会问,都有命令执行了,干嘛还去上传webshell,其实这也是由于每个工具总会有一定的缺陷,导致不是所有命令都能执行,即使你是root权限,这时就需要上传一个功能强大的webshell进行利用,下载文件等!另外我曾遇到过,就是图片的这个路径逐级删除,就会直接获取到后台地址!
1.1.4 webserver信息收集
webserver信息收集主要是收集web服务器的一个部署情况,是使用什么框架搭建的,是Apache,还是Nginx,或是其他的,网站是什么脚本语言开发的,是asp,还是PHP等信息,这些信息我们可以使用F12进行简单的查看。
首先我们定位到F12的network模块,选择doc(文档,document)进行筛选,然后使用F5进行刷新获取数据,如图1-9所示:
图1-9 图1-9 选择network模块进行筛选
此时我们点击下面文档进行查看详细信息,可以查看到该网站是使用Apache搭建的,并且版本是2.4.23,使用的是windows系统,开放脚本是PHP,版本是5.4.45等信息,如图1-10所示,另外在这里也可以看到网站的cookie,如果在这里你发现cookie中含有admin=0,或者flag=0的这类标志,你就可以使用burpsuit进行抓包进行截断改包,将0改为1可能就可以直接进入到系统中了!
图1-10 图1-10 查看webserver信息
webserver信息对于***来说是很重要的,通过获取的版本即可查找对应的漏洞进行利用,从而提高***的效率!因此网站管理员在部署网站的时候,切记进行安全配置,隐藏此类信息,或者修改此类信息进行干扰***者!如在php.ini中设置expose_php = Off来隐藏PHP版本信息,将下面两行添加到Apache配置文件(vi /etc/apache2/apache2.conf)底部,最后一行,即可隐藏Apache banner信息!
ServerSignatureOffServerTokensProd
1.1.5 JavaScript功能信息收集
JavaScript信息收集主要是看看某些功能是不是前端js校验,如图1-11所示,如果是前端校验的我们可以通过禁用js或者直接使用burpsuit进行更改数据包进行相关绕过。另外还可以去资源模块(Resource)看看有没有可利用的js文件,比如conf.js,里面可能会涉及到一些暗藏的链接等敏感信息。
图1-11 图1-11 JavaScript信息查看
在***实战中,如果上传点是前端校验的,那么我们可以禁用js来进行webshell的上传,另外有时在登录页面你可以禁用js之后,然后使用任意账户密码登录即可成功进入到系统中,这个我也只遇到过一次!所以开发者做相关校验的时候,切记在前端的一切校验都是不安全的,尽量前端(客户端)和后端(服务器端)一起校验和过滤!
1.1.6 本文简单总结
本文主要是简单介绍了F12开发者工具,如相关功能模块和基本使用,以及使用F12进行信息收集的相关利用和在***实战中的个人的一些相关小技巧,通过F12信息收集我们可收集到很多隐藏起来的敏感信息,如注释信息、webserver信息,而这些敏感信息往往可对后期的***起一定的辅助作用。如果你还有更好的F12功能,烦请多多指教,谢谢!