渗透测试-信息打点(1)(新手推荐)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

所谓知己知彼百战不殆,在渗透测试当中信息收集是渗透测试的第一部分,往往也是至关重要的一部分,做好前期的信息收集工作很多问题都会迎刃而解甚至不攻自破,在接下来的文章我将记录自己对信息收集的一些看法和方法。此外这里所讲的信息打点相关知识均主要围绕web安全展开,若有不对的地方请指正。

本文只讲解信息打点的思路以及我认为比较重要的知识,对工具使用讲解较少,有了思路自然就知道怎么做,工具在网上一找一大堆。

一、什么是信息搜集

信息搜集是指为了评估和维护网络安全而采取的一系列活动,旨在获取与目标系统、网络或应用程序相关的有关信息。(网上找的专业解释)
在笔者看来,渗透测试的根本就在于发现企业网络安全加固的薄弱点以防止入侵者比我们先发现薄弱点而进行一些列攻击,攻击的手段层出不穷,并且十分多样。因此信息搜集阶段要考虑方方面面,从方方面面去发现安全的薄弱之处。

二、资产信息

在具体讲解信息打点之前,对企业资产信息这一概念有所了解是十分必要的,在信息搜集时对我们收集的方向具有指导作用。

资产

web信息

我们知道,域名的经过DNS解析会指向一个IP,(我们暂且先不考虑这个IP是不是CDN或者反向代理服务器) 这个IP对应公网的一台服务器,然后基于运行的程序给我们提供服务。那么我们是不是会考虑一下,一个域名和服务器是一 一对应的关系吗?
其实服务器和域名的关系有很多,可能是一个域名会DNS轮询到多个服务器,也可能是多个域名指向一个服务器,甚至会是一个域名与其子域名被解析到不同服务器或者同一个服务器的不同程序,这些服务器可能在同一个物理机房,也可能会相隔十万八千里。
无论是这些服务器,还是域名,都属于企业的资产,所以需要提前掌握对方有哪些资产,才能更好的进行渗透测试。

服务器信息

目前主流的服务器是Linux操作系统,但也不排除部分企业使用Windows作为服务器的操作系统。不同的操作系统会使用不同版本的服务应用,因此存在的漏洞也可能不同所以需要分类考虑,甚至也会出现基于操作系统本身的漏洞。收集操作系统信息在后期的渗透当中会对部分决策起到指导作用。

番外

域名注册商
服务器商家
管理人员

咋眼一看这些信息好像并没有什么卵用,既不可能去攻击服务器商家,又不可能去把管理人员打一顿,其实不然,虽然动武不行,可以靠“骗”,收集以上信息可以让你在社工时更加具有说服力。

渗透障碍

什么是障碍?这里的障碍不仅仅指企业为了防止黑客攻击设立的安全屏障如主机防火墙,WAF防火墙等会对我们造成阻碍,也包括企业单纯为了提高企业服务效率而导致的障碍,其中就包括CDN,负载均衡,以及反向代理等。

三、信息打点

接下来我将详细讲解一下信息打点,即需要搜集什么信息,以及收集信息常用的工具和手段。

1.WEB信息收集

在渗透测试开始阶段,往往我们能直观看见的就只有企业的门户网站或者服务器程序(现在许多程序也是基于http协议进行数据传输的),所以web信息收集自然就是大头。
那么应该收集什么?不妨先从资产信息方面进行扩展思考。
我从域名,架构,源码三个方面分别讲解。

域名

1.注册查询

这里所指的基本信息包括网站的注册人信息,注册人联系方式,注册人邮箱,地址等个人信息。对于部分中小站点而言,注册人可能就是网站的管理者。我们可以基于这些信息提供不同的社交软件,引擎搜索深度挖掘,这对于社工将会有不小的帮助,也可以基于搜集到的信息尝试进行弱密码攻击。所以,网站注册信息的收集必不可少。

注册信息查询工具
在线站点查询:
爱站工具网(https://www.aizhan.com/)
站长之家(https://www.chinaz.com/)
天眼查(https://www.tianyancha.com/login#!)
工具查询:whois Maltego
Maltego是一个强大的信息收集工具,基于图形化操作界面,上手难度小,并且会搜集到域名,注册人信息,甚至是注册人社交账号等信息,读者感兴趣可以自行了解,这里不过多累述。

2.子域名信息

通常情况下主站点会作为"重点保护对象",因此在他上面的安全防护往往是重中之重,并且由于访问主站点的人群量大,因此CDN,负载均衡等配置也是我们的一大阻碍。在这种情况下我们往往考虑从子域名出发,因为子域名的安全防护往往容易被忽略,若子域名配置在同一个物理机房的不同服务器,那么我们如果成功拿下子域名服务器就能借此为跳板进行内网攻击,亦或者从子域名内/子域名服务器当中获取到主服务器相关的敏感信息,这些都使我们迂回的接近真正的目标。

子域名搜集

工具搜集:Matlego 、Sublist3r …
搜索引擎枚举:通过搜索引擎的语法限制来枚举子域名例如:“site:baidu.com”
在线收集网站:在线子域名爆破(http://z.zcjun.com/)…

子域名的搜集方式多种多样,并且上手难度也比较低,这里就不过多讲解如何收集,感兴趣的可以去网上自行查找。

2.敏感信息收集

敏感信息包含面很广,目录结构,源代码,配置信息…等能叫做敏感信息收集,在前期的收集阶段可以着重于目录结构的搜集以及源代码泄露的搜集。这里先具体讲解一下目录结构收集,源代码会在下面单独讲解。

目录结构

目录结构就是URL路径中的一部分,位于主域名之后,使用斜杠(/)分隔。例如,"example.com/blog"中的 “/blog” 是一个目录。
目录通常用于组织网站内部的内容,将不同的页面或资源存储在主域名下的不同路径中。这有助于维护和组织网站的内容结构。

为什么要收集目录结构?

收集目录结构一方面可以获取到部分敏感信息如数据库名称,管理人员账号…这些信息存在的位置千奇百怪,可能是某一个页面的注释,也可能是某一个单独的页面不小心被管理员放了出来,总之目录扫面可以获取信息。
再者就是后台爆破,这里的后台通常指web管理后台。当我们获取到后台地址,就可以尝试弱口令爆破,或者通过社工获取登录凭证从而进入网站后台。进入了网站后台我们就能进入下一步的渗透了,最简单的方式就是上传一个反弹shell木马,拿到服务器的权限再进行后面的提权,后门维持等操作。当然实际的渗透过程肯定比所诉的困难。

目录收集工具&&目录结构收集的原理。
收集原理

目录结构的获取通常不是直接得到目录结构的相关文件,如果都已经可以取得主机内的文件了很显然以及不在当前渗透阶段了。那么要怎么获取呢?
目前据我了解有两种方法。
一个是基于爬虫,一层一层的获取当前页面的url再一层一层的访问递归的获取url,这种方式的弊端很明显,就是获取到的页面都是网站上面所展示的无法取得隐藏的url
还有一个就是基于敏感目录的字典爆破,学习过http协议的不难知道回应报文的响应码,字典爆破的原理就是将字典的url路径拼接到当前域名,通过响应码来判断该目录是否存在

收集工具

工具收集:burpsuit 、dirb、wpscan、joomscan
burpsuit是web测试常用的工具,功能十分完善,包含了数据包代理,暴力破解,目录扫面等多种功能,推荐学习。
此外wpscan joomscan 是针对与word press和joomla两个内容管理系统而设计的工具具有较强的针对性。

3.架构信息收集

这里说指的架构信息不是内网当中的服务器架构指的是网站的架构,通常包含脚本语言,中间件,数据库,操作系统等信息

脚本语言

PHP JSP ASP…
判断方式:
根据网页的url判断,如url当中明显包含了脚本语言的名称
根据返回的数据包判断,如果管理人员没有屏蔽响应包关于脚本语言的内容就可以直接查看
基于目录爆破的目录查看
通过网页插件查看

中间件

APACHE NGINX

操作系统信息搜集

操作系统的信息收集除了获取操作系统还有开放端口,运行的服务等。
常用的主机扫描工具有推荐 nmap ,可以满足大多数的扫描需求

4.源代码泄露

这里的源代码指web程序开发的后台程序源代码。用于处理用户请求、管理数据库、进行身份验证和授权、执行业务逻辑等等

为什么要获取源代码

至于为什么要取得源代码我们不妨先思考渗透的捷径是什么?
在我看来网络渗透的捷径就是找到匹配的漏洞,然后再根据已知的利用方式,拿到想要的东西。这是渗透测试最为容易的方式,那么问题来了,这些漏洞利用的方式又是怎么来的呢?其实大多数漏洞的来源就是代码,当获取到源代码后,通过代码审计找到代码的薄弱点,再基于这个薄弱点进行进一步操作,至于进一步操作是什么,我也还没有学到,总之,取得源代码很重要

如何判断源代码类型

既然要讨论源代码的分类,那必然需要对源代码进行基本判断。首先我们从内容管理系统出发,判断了是什么管理系统然后再结合管理系统去收集信息,因为一般情况下自主研发的闭源代码不会使用现成的管理系统,因此通过管理系统开可以进行初步判断。再者结合UI界面和源代码市场去比较判断初步估计是否为售卖的闭源代码。剩下的就是自主开发的闭源代码。

源代码泄漏的原因&& 源代码的获取方式

既然要取得源代码,总得别人给你机会,这样的机会通常都是无意识的,再开发人员不知道的情况下泄露出来,以下是几种源代码泄露的原因,及对应的源代码获取方式。

开源代码

开源代码的获取是最简单,有些小型企业由于多方面的限制,不会自主开发,因此会去社区寻找开源的代码,稍加修改就拿来使用。
这种情况下我们只需要去下载对应的开源文件甚至直接去找对应的漏洞。

闭源售卖

对于闭源售卖的源码直接去网上购买或者找渠道下载也能获取。

自主研发闭源

自主研发是目前大型企业的大方向,外界很难直接获取全套的闭源代码,但是世界上没有完美的安全措施,尽管通过闭源的方式会让源代码的获取变的困难但也并非无孔可入。

composer.josn

Composer是PHP中的依赖管理工具,用于管理和自动加载项目所需的第三方库和包
因为还没有系统学习PHP对composer这个工具不是很了解,就大概讲解一下吧。
composer.josn 可以认为是php代码当中一个用来自动加载composer工具依赖包的一个josn文件。josn文件当中定义了加载的依赖包名称和版本,简化了开发步骤。
其中包含了大量的依赖项和配置的敏感信息,甚至包含了数据凭证以及密钥等。
如果开发人员将它泄露了出来可以直接通过访问/composer.json获取 存在即可尝试获取源码相关信息

git源码泄露

首先Git是一个什么东西?自行查阅。在初始化git.init(创建一个Git仓库)会在当前目录生成一个 .git 这样一个文件。
这个文件又会记录代码的变更等操作,所以它可以一定程度上恢复代码,如果开发者没有删除就上传到网站就会引起源代码泄露。

工具恢复

git手动恢复怎么恢复?咱也不会,但是有一个工具可以自动恢复,只需提供url地址,就能获取源代码。
githack
https://github.com/lijiejie/GitHack
这是工具的下载地址,以及使用教程。

SVN泄露

啥又是SVN呢?SVN是一个本地源代码管理软件,在使用这个软件的过程中会自动生成一个.svn这个东西(文件),关键是这东西呢是隐藏的,一般人一不小心就忽略了,至于为什么会有这个坑我也不知道,搞开发的大佬可以评论一下。
然后在项目完成之后,需要导出项目文件到服务器,有些开发者为了图方便就直接复制粘贴全部,当然就包含了这个隐藏的 .git ,一旦它被上传到网站就会引起代码泄露

上工具

svnExploit
https://github.com/admintony/svnExploit
老规矩自己看

.hg泄露

与.git类似,都是分布式仓库

上工具

https://github.com/kost/dvcs-ripper

github源码泄露

这个源码泄露就比较有意思,它不是由于工具原因导致,纯属是开发人员的习惯导致。
github是一个大型的开源代码仓库,你可以在上面找到许多你需要的代码,在部分内部开发当中程序员为了”偷懒“可能会直接ctr c+v上面的源代码,可能甚至连部分备注或者标志都没有来得及删除从而泄露到前端,这时我们只需要根据泄漏到标识到仓库去搜索,源代码不久手到擒来。

网站备份文件泄露

这个应该是一个比较常见的泄露情况,在网站升级的过程中需要对文件进行备份,而由于操作者的疏忽导致备份文件遗留在网站目录当中并且可以访问这时就能直接下载备份文件。
获取这些备份文件就回到了敏感目录扫描的过程。

其它泄露

对于我没有提及到的如.swp WEB-INF/web.xml泄露等大家可以自行查阅
源代码泄露不止这些,并且是多种多样的,需要我们大家从各个方面去考虑和积累。


总结

这里只是简单的归纳了web相关的信息收集,其它的还有小程序 APP等以及判断有无CDN等相关的知识,在后续会逐步更新。
如有不足请指正。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值