信息收集

基础信息收集

判断操作系统

1.通过修改url的大小写来判断操作系统:例如将www.baidu.com/index.php中的index.php修改为INdex.php,如果访问的结果不变,则说明该系统用的是widows系统,如果结果改变则说明使用的是Linux系统

2.使用ping命令中的TTL值来判断目标使用的是什么系统:Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows98系统的值为32,unix主机的TTL值为255,根据ping时TTL值距离上述数值中哪个最近来进行判断(不太准确)

3.通过文件名来判断目标使用的操作系统:我们访问一个网站不存在的文件,使网站报错,当报错信息为IIS6.0则说明是Windows2003系统,当报错信息为IIS7时则一般为Windows7或者Windows8,当报错信息为apache时则说明目标系统为Linux系统

4.使用nmap判断操作系统:nmap -O IP地址来判断使用的是什么操作系统

判断使用的数据库、中间件、语言等

判断数据库:

1.使用端口扫描来发现开放了什么端口,通过端口来确认开放了什么服务

    • mysql                  3306
    • mssql                  1433
    • oracle                 1521
    • redis                    6379
    • DB2                      5000
    • PostgreSQL       5432
    • memcached      11211
    • MongoDB           27017

2.访问网页,输入单引号让数据库进行报错,通过报错信息判断使用的是什么数据库(比较鸡肋,因为大部分网站都会屏蔽报错信息,若干存在数据库报错,则可以尝试报错注入等)

3.根据开发语言去判断使用的数据库,常见的搭配有:

    • ASP和.NET:Microsoft SQL Server
    • PHP:MySQL、PostgreSQL
    • Java:Oracle、MySQL

判断中间件

判断中间件的目的:有些中间件存在历史漏洞,可以直接进行利用

1.访问网站,通过响应头中的server字段来判断使用的是什么中间件

2.制造网站报错,通过网站报错信息来判断网站使用的是什么中间件,因为每个中间件的报错页面都不相同,而且都有其各自的特征。

3.使用fofa等工具对网站进行搜集时,有时候会显示出使用的中间件信息

当得到中间件的相关信息之后,可以查看中间件所存在的历史漏洞,如果其版本相符合,可以进行相关的测试,中间件漏洞集合:点击访问

判断开发语言

判断网站开完语言的目的:比如一些常规漏洞,如sql注入,在java写的网站中就很少会存在

1.对网站进行访问,查看网站的文件后缀即可判断出网站使用的是什么语言

2.如果后缀看不到,既可在文件后面添加php、jsp、py、asp等常见后缀来看看那个可以正常访问,能够正常访问则说明使用的是什么语言编写的

3.通过x-powered-by字段进行判断,但有些网站会对其进行隐藏

获取系统源码

系统源码获取可以进行白盒测试,其渗透测试会方便很多,获取系统源码一般分为三种

1.开源的CMS

可以使用云溪工具对网站进行CMS的识别,也可以通过网站的目录架构、标题图标等来进行区分,当获取到使用的CMS后即可在网上进行下载

2.售卖的源码

如果对网站检测无法识别出使用的CMS信息,那么就要考虑两个方面,既源码是自主研发还是闭源售卖,对闭源售卖的网站就需要对网站进行购买,或者通过人脉途径进行获取,如过网站为一些不正规网站,可以去“huzhanwang”进行查看是否有相似的源码进行售卖

3.自主研发的源码

自主研发的源码一般保密级别较高,网上很难找到相关的源码信息,只能寄希望于开放人员疏忽,给我们提供获取的可能,其利用途径有以下几点:

    1. composer.json(PHP特性):配置性或说明性文件,在网站后面加/compose.json即可检测
    2. git泄露:在网站后面加/.git,如果有文件或者显示403则可以用githack来获取源码。githuck项目地址:https://github.com/lijiejie/githack。
    3. svn源码泄露:在域名后面添加/.svn,如果存在页面则使用SvnHack来进行获取源码。SvnHack项目地址:https://github.com/callmefeifei/SvnHack。
    4. WEB-INF/web.xml泄露:使用这个漏洞需要的条件较为苛刻,需要网站存在文件下载漏洞,使用WEB-INF/web.xml文件来查看网站的结构,然后使用classes来下载文件。比如在web.xml中查看到了 com.wm.ctf.indexconrtoller文件,则将.变成/,然后在后面加.class(com/wm/ctf/indexconrtoller.class)
    5. DS_Store文件泄露:在网站后面加.DS_Store,存在这个文件则说明存在这个漏洞。利用工具地址:https://github.com/lijiejie/ds_store_exp
    6. Github泄露:在Github中搜集源码,其中需要使用到Github特定的搜索语法,使用教程网址:https://blog.csdn.net/m0_47418965/article/details/121556647

进一步信息收集

获取网络信息

1.获取资产的服务厂商:有些资产是架设在阿里云或腾讯云上的,这时可以将该信息的IP地址放在微步等平台上进行识别,如果是上述云平台架设,就会有相关信息进行告知

2.可以对该主机的端口进行扫描,从而得知该主机山所架设的服务有哪些,再根据特定的服务进行有针对性的攻击。但是这里有一点需要注意:有些IP在架设时是映射到外网IP上进行通信的,此时真正的服务器时隐藏在内网之中,当我们对主机进行扫描时,扫描的是代理服务器的端口,这就导致所扫描的信息并不能作为我们判断的有用信息,所以在扫描时需要分辨清楚。

获取阻碍信息

在我们信息收集时,除了对我们后续渗透测试有利的信息进行收集,还需要将相关的阻碍考虑进去,比如防火墙等设备就是资产管理方为防止恶意攻击所使用的常见手法,那在进行web打点时需要考虑的因素有哪些呢?

CDN

CDN是什么?换句通俗易懂的话来说,就是将服务器的信息分发到各地二级服务器(CDN),当其他地区需要访问服务器,指向较近CDN服务器,让CDN服务器进行处理,如果CDN服务器上没有相关服务的缓存来支持这次的请求,CDN服务器再向真实服务器进行请求,拿到处理信息后回给请求方,并记住这次请求,在后续的处理中直接调用缓存,而不需要再请求真实服务器。

通过上述的介绍,可以看出一个问题,就是当开启CDN服务后,用户的请求就无法达到真实服务器,这对后续的渗透测试就是一大阻碍,那如何检测和绕过呢?

检测CDN

使用超级ping来检测CDN,使用原理就是利用CDN的各地区请求所响应的CDN服务器不同,这时所返回的IP地址也不会相同,超级PING攻击就提供了一个接口,可以在全国各个省份对资产进行ping操作,如果返回多个IP地址,则说明该服务开启了CDN。

绕过CDN

1.漏洞&遗留文件:查看phpinfo文件,查看_SERVER[‘SERVER_ADDR’]的IP地址,利用ssrf漏洞获取真实IP,在自己主机上搭建一个Python服务,使用ssrf漏洞ping自己主机的服务,得到的就是真实的地址

2.子域名查询操作:有些网站为了经济考虑,只会让几个关键的域名使用CDN服务,其他的子域名没有使用,所以但我们多地ping这些子域名能得到真实IP

3.全球ping:有些网站只给国内使用了CDN,未给国外使用CDN服务,所以当我们使用国外的主机进行访问时,返回的是真实IP,全球ping网站”tools.ipip.net/cdn.php”

4.主动邮箱:一般的邮箱是不配备CDN的,所以我们可以使邮箱服务器主动的给我们发送一封邮箱,这时可以查看原始文件的Received字段的IP地址,为了确认IP的真实性,可以查看网站的备案信息和IP地址的属地,如果相符合则大概率就是真实IP。让服务器主动发送邮箱的方法有很多,比如密码找回等

5.当我们找到真实的IP之后,我们需要绕过CDN,就需要修改本机的host文件来修改DNS的解析。host文件的位置:

windows:C:\Windows\System32\dribers\etc\host

Linux:/etc/host

6.查看DNS历史,看看以前还没使用CDN服务时的IP

WAF

waf其实就是web端的防火墙,他会对我们针对web端攻击的数据进行拦截,在后期进行渗透时是一大阻碍,我们需要使用各种手段进行绕过,绕过则需要查看使用的是哪家的什么版本的WAF,这对后期的绕过有很大的帮助,识别waf的方法:

1.通过网站的拦截返回信息特征进行识别,每个厂家的WAF所返回的信息是不同的,https://www.cnblogs.com/tomyyyyy/p/15195701.html这里面有大部分waf的返回信息,与这些进行匹配就能识别一些waf

2.使用wafw00f工具来进行识别

3.使用nmap+脚本来进行识别

还有一个影响的点就是负载均衡,这个也是使用一些手段来检测是否使用了负载君合

增加攻击面

增加攻击面的有很多种,C段,旁注,子域名等。

C段:对同网段下的不同服务区IP下的WEB应用进行攻击,再使用这个服务器来当跳板进行攻击,可以使用masscan来进行扫描

旁注:同服务器下的不同web服务,从其他的web界面拿到服务器权限

子域名:对子域名进行扫描,攻击他的子域名模块,从而达到拿下服务器。子域名扫描的工具有很多,我使用的是subDomainsBrute、oneforall。不单单是子域名,还可以查看域名相似网站,如将www.baidu.com改成www.baidu8.com,www.baidu.com改成www.baidu.top等手法

 

还有一些集成化的工具

网络空间:

fofa  360Quake  shadan  zoomeye

自动化项目工具:

灯塔  水泽   kunyu

posted @ 2023-06-27 13:30  街头巷尾1  阅读(138)  评论(0编辑  收藏  举报