渗透测试之信息收集


0x001 信息搜集阶段


  渗透测试者可以使用的信息收集方法包括公开来源信息查询、Google Hacking、社会工程学、网络踩点、扫描探测、被动监听、服务查点等。而对目标系统的情报探查能力是渗透测试者一项非常重要的技能,信息搜集是否充分在很大程度上决定了渗透测试的成败,因为如果你遗漏关键的情报信息,你将可能在后面的阶段里一无所获。

0x002 域名


1. Whois查询

Whois 是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商、域名注册日期和过期日期等)。通过域名Whois服务器查询,可以查询域名归属者联系方式,以及注册和到期时间。

2. 子域名爆破

2.1 域传送漏洞

方法一: 利用nmap检测域传送漏洞,如果存在漏洞将有大量域名信息显示。

nmap --script dns-zone-transfer --script-args dns-zone-transfer.domain=nwpu.edu.cn -p 53 -Pn dns.nwpu.edu.cn

参数:
–-script:表示加载nmap文件夹下的脚本
–-script-args: 向脚本传递参数
-p:设置扫描端口
-Pn:设置通过Ping发现主机是否存活

方法二: 利用Kail下面的工具Dnsenum检测该漏洞

dnsenum --enum domain.com

方法三: 利用nslookup检测域传送漏洞   

nslookup -type=ns  地址   查询dns服务器

更多详细操作,点击查看域传送漏洞

2.2 工具使用

dnsenum (kali)

dnsenum的目的是尽可能收集一个域的信息,它能够通过谷歌或者字典文件猜测可能存在的域名,以及对一个网段进行反向查询。它可以查询网站的主机地址信息、域名服务器、mx record(函件交换记录),在域名服务器上执行axfr请求,通过谷歌脚本得到扩展域名信息(google hacking),提取自域名并查询,计算C类地址并执行whois查询,执行反向查询,把地址段写入文件。

使用:dnsenum baidu.com -f /usr/share/dnsenum/dns.txt -dnsserver 8.8.8.8
参数:
-f 指定爆破字典
-dnsserver 指定要使用的dns;若不设置,则采用默认的dns

layer 子域名挖掘机

Layer子域名挖掘机是一款域名查询工具,可提供网站子域名查询服务;拥有简洁的界面、简单的操作模式,支持服务接口、暴力搜索、同服挖掘三种模式,支持打开网站、复制域名、复制IP、复制CDN、导出域名、导出IP、导出域名+IP、导出域名+IP+WEB服务器以及导出存活网站!

下载:https://pan.baidu.com/s/1_N8nHLOr_hkRRgjMLb0o2Q
提取码:bsvu

subDomainsBrute

SubDomainsBrute用于测试者的快速子域粗暴工具,本工具用于渗透测试目标域名收集。高并发DNS暴力枚举,发现其他工具无法探测到的域名,如Google,aizhan,fofa。

环境:pip install dnspython gevent  # python2.7
下载:https://www.freebuf.com/sectool/106625.html
使用:python subDomainsBrute.py -t 10 qq.com -o qq.com.txt
参数:
-t 线程数
-o 指定保存的文件名

wydomain

wydomain是猪猪侠开发的一款子域名信息搜集工具,因其枚举速度快,结果准确,成为不少白帽居家旅行的必备神器。

工具主要分为两个模块,dnsburte模块和wydomain模块:

  • dnsburte模块通过用户自定义字典发送dns查询,最后筛选出符合条件的域名。
  • wydomain模块则是通过调用多个第三方网站的公开api获取子域名数据。
下载:git clone https://github.com/ring04h/wydomain.git
使用:python dnsburte.py -d qq.com -t 10 -f wydomain.csv -o qq.com.txt
参数:
-d 指定目标域名
-f 指定的字典,默认是default.csv
-o 指定保存的文件名,若不指定,默认保存在./result/目录下
-t 指定线程数

在线子域名挖掘

3. 绕过CDN,找真实IP

3.1 判断是否CDN

使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一,则很有可能是使用了CDN ,相关查询网站有以下几个:

3.2 查询历史CDN记录

查看IP与域名绑定的历史记录,可能会存在使用CDN之前的记录,相关查询网站有以下几个:

3.3 查询子域名

毕竟CDN也是不便宜的,所以很多站长可能只会对主站或者流量大的子站点做了CDN,而很多小站子站点又跟主站在同一个服务器或者一个C段内,此时就可以通过查询子域名对应的IP来辅助查找网站的真实IP。

3.4 让服务器主动连接我们

目的是让服务器主动连接我们,可利用XSS盲打,命令反弹shell,SSRF等漏洞。或者是通过RSS邮件订阅,很多网站都自带sendmail功能,会发邮件给我们,此时查看邮件原文里的内容就会包含网站的真实IP了。

以QQ邮箱为例

首先打开一封邮箱,点击显示邮件原文

image

找到Received对应的内容,包含真实IP地址

image

3.5 使用国外主机解析域名

国内很多CDN厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的主机直接访问就有可能获取到真实IP,也可以使用在线的多地ping网站筛选出国外对该目标的解析地址是否唯一来判断真实IP。

3.6 目标敏感文件泄露

可能目标服务器上存在一些敏感文件的泄露会直接告诉我们真实IP,比如phpinfo之类的探针文件。

3.7 目标全网扫描

这种方法对小网站比较有效果,利用Zmap对目标进行全网扫描,大概一个多小时时间,扫描完成后会出现一些IP,甚至非常多个IP,将这些IP利用本地hosts文件进行一一绑定测试,如果能正常访问目标网站,则为真实IP。

3.8 SSL证书查询
  1. 查询地址:https://censys.io/
  2. search选择:Certificates
  3. 搜索语法:parsed.names:test.com and tags.raw:trusted
  4. 点开目标信息后,点击右边Explore按钮,点击IPv4 Hosts即可
3.9 CDN 工具
3.10 更多绕过CDN方法

0x003 搜索引擎


1. 常用引擎

  • google.com
  • bing.cn
  • sogou.com
  • baidu.com

2. theHarvester

TheHarvester能够收集电子邮件账号、用户名、主机名和子域名等信息。它通过Google、Bing、PGP、LinkedIn、Baidu、Yandex、People123、Jigsaw、Shodan等公开资源整理收集这些信息。这些信息将在后期的渗透测试阶段发挥巨大的作用。

环境:python3 -m pip3 install pipenv uvloop  # python3
下载1:https://github.com/laramies/theHarvester/tree/master
下载2:apt-get install theHarvester
例子:从百度搜索引擎中的前200项搜索结果中挖掘目标域里的电子邮件地址和主机名
使用1:python3 theHarvester.py -d qq.com -l 200 -b baidu
使用2:theharvester -d qq.com -l 200 -b baidu

3. Google Hacker语法

搜索敏感文件

site:xxx.com filetype:doc intext:pass
site:xxx.com filetype:xls intext:pass
site:xxx.com filetype:conf
site:xxx.com filetype:inc

搜索管理后台

site:xxx.com 管理
site:xxx.com admin
site:xxx.com login

搜索mail

site:xxx.com intext:@xxx.com
intext:@xxx.com

搜索敏感web路径

site:xxx.com intitle:mongod inurl:28017
site:xxx.com inurl:sql.php
site:xxx.com inurl:phpinfo()

更多内容,点击查看Google Hacker语法手册

3. 网络组件搜索

0x004 旁站和C段扫描


旁站: 同服务器下的不同网站。当网站A无法渗透时,可以通过旁站注入获取网站B或者其他网站的权限。如果权限足够,直接跨目录写webshell;权限不够的话,尝试webshell提权获取服务器权限,进而渗透网站A。

C段: 同网段下的不同服务器。通过获取同网段下的服务器站点进行渗透,再进行webshell提权获取服务器权限,再进行内网渗透攻击目标服务器

  • 服务器操作系统类型
  • 端口开放和服务识别
  • 目标网络结构

nmap工具使用

nmap -T4 -A -v 服务器IP

在线查询地址:

0x005 弱点端口扫描


1. nmap端口扫描

指定域名查询

nmap -T4 -Pn www.baidu.com

指定IP查询

nmap -T4 -Pn 192.168.0.166

查询局域网的所有主机和IP

nmap -T4 -Pn 192.168.0.0/24

查看主机端口(1024-65535)中开放的端口

nmap -p 1024-65535 192.168.1.7

2. hydra爆破端口

https://www.cnblogs.com/ECJTUACM-873284962/p/7805116.html

3. 常见弱点端口

这里常见的弱点端口已经单独整理了一篇文章,点击链接跳转查看

0x006 网站漏洞扫描


1. 网站CMS指纹识别

2. 服务器类型

操作系统: Windows和Linux

最简单就是通过ping来探测,Windows的TTL值都是一般是128,Linux则是64。所以大于100的肯定是Windows,而几十的肯定是Linux。而且Windows大小写不敏感,Linux大小写敏感。

判断目标网站服务器的具体的版本的话,可以采用 nmap 进行扫描, -O 和 -A 参数都能扫描出来

nmap -O 服务器IP
nmap -A 服务器IP

3. 网站搭建平台

判断网站用的web搭建平台类型:Apache、Nginx、Tomcat、IIS。知道了web服务器是哪种类型后,我们还要探测web服务器具体的版本。比如Ngnix版本< 0.83会有解析漏洞 ,IIS6.0会有文件名解析漏洞、IIS7.0会有畸形解析漏洞等。不同的web服务器版本,存在着不同漏洞。

可以在网页审查元素中,刷新网络的数据包的响应头中获取到这些信息,或者用nmap等其他工具来扫描。

4. 网站脚本类型

网站用的脚本类型:php 、Jsp 、Asp 、Aspx 。

  1. 可以根据网站URL来判断
  2. site:xxx.com filetype:php
  3. 可以根据Firefox的插件(wappalyzer)来判断

5. 数据库类型

网站用的是哪种类型的数据库:MySQL、Oracle、SqlServer、Access 。虽然这几种数据库的语法大体上相同,但是还是有区别的。所以我们还是要知道目标网站用的是哪种数据库,并且数据库是哪个版本的

从数据库的规模来看,Access是小型数据库,,MySQL 是中小型数据库,、SqlServer是中型数据库,Oracle是大型数据库。

Access和SqlServer只支持Windows系统,如果是Linux系统,可以直接排除这两个数据库类型。

常见搭配:

  • ASP 和 ASPX:ACCESS、SQL Server
  • PHP:MySQL、PostgreSQL
  • JSP:Oracle、MySQL

6. 网站敏感目录和文件

扫描网站目录结构,看看是否可以遍历目录,或者敏感文件泄漏

  • robots.txt:指定了网站中不想被robot访问的目录
  • 网站备份文件:网站源码、配置文件、数据库文件
  • 后台目录:弱口令,万能密码,爆破
  • 安装包:获取数据库信息,甚至是网站源码
  • 上传目录:截断、上传图片马等
  • mysql管理接口:弱口令、爆破,万能密码,然后脱裤,甚至是拿到shell
  • 安装页面 :可以二次安装进而绕过
  • phpinfo:会把目标配置的各种信息暴露出来
  • 编辑器:fck、ke、等
  • IIS短文件利用:条件比较苛刻 Windows、Apache等

探测目标网站后台目录可以通过字典扫描、目录爬行、开源程序、搜索引擎、二级域名、端口站点、备份文件等方式查找,相关工具有: IntelliTamper、wwwscan 、御剑 、weakfilescan、 dirbuster、dirb、QWASP、Google Hacking等

7. 网站漏洞扫描

网站漏洞扫描就是直接对网站进行漏洞探测了。例如:任意文件上传、文件包含、文件读取、编辑器漏洞(FCKEditor、ewebeditor、KindEditor…)、XXE、常见CMS识别getshell等等。

网站漏洞扫描也有很多工具。比如AWVS、AppScan、OWASP-ZAP、Nessuss、Netsparker、Safe3等等。但是需要注意的是,使用漏扫工具直接对网站进行扫描,因为一下子流量过大,有些网站可能会崩溃。所以一般最好不要使用漏洞扫描工具对网站进行扫描。并且如果未经授权就用漏扫对网站进行扫描还是违法的!

8. 物理路径探测

对目标写入webShell时需要用到真实物理路径。

8.1 探针文件

很多网站在搭建时会留下包含有网站信息的文件,说明等。常见的探针遗留文件名

Phpinfo.php
info.php
test.php
l.php
php.php
8.2 报错获得

多用于容错做的不是很好的网站。可以访问404页面、动态URL加特殊符号(英文单引号等)、错误的SQL语句等。

8.3 后台获得

如果可以登录到目标后台,一般后台首页会有一些说明,包括CMS版本、支持的组件、更新日期、数据库信息、物理路径、IP地址等。

8.4 IIS 高版本特性

IIS7-IIS8.5 如果配置不当,都有可能会存在这个问题,只有访问404的路径,就会爆出物理路径和IIS版本信息。

8.5 搜索引擎探测
site:xxx.com warning
site:xxx.com error
site:xxx.com mysql

9. Mail服务器

Mail服务器可能会有web漏洞:比如:XSS、SQL、XXE、心脏出血、破壳漏洞等等。mail弱口令爆破,mail钓鱼,mail可能是外网入口,因为传递VPN密码,服务器密码等等。

10. 网站WAF识别

工具简介

WAFW00F识别和指纹Web应用防火墙(WAF)产品。其工作原理是首先通过发送一个正常http请求,然后观察其返回有没有一些特征字符,若没有在通过发送一个恶意的请求触发waf拦截来获取其返回的特征来判断所使用的waf。

安装:python3环境

python setup.py install

使用:切换到 wafw00f 目录下,然后执行命令

E:\wafw00f-master\wafw00f>python main.py http://www.yanjian.com.cn

                ______
               /      \
              (  W00f! )
               \  ____/
               ,,    __            404 Hack Not Found
           |`-.__   / /                      __     __
           /"  _/  /_/                       \ \   / /
          *===*    /                          \ \_/ /  405 Not Allowed
         /     )__//                           \   /
    /|  /     /---`                        403 Forbidden
    \\/`   \ |                                 / _ \
    `\    /_\\_              502 Bad Gateway  / / \ \  500 Internal Error
      `_____``-`                             /_/   \_\

                        ~ WAFW00F : v2.1.0 ~
        The Web Application Firewall Fingerprinting Toolkit

[*] Checking http://www.yanjian.com.cn
[+] The site http://www.yanjian.com.cn is behind Safedog (SafeDog) WAF.
[~] Number of requests: 2

0x007 Github搜索语法


在渗透测试的信息收集阶段,可以去Github和码云上搜索与目标有关的信息,或者就有意想不到的收获。(有些开发人员将代码上传到代码库的时候,有可能连一些重要的配置信息也上传了)

原文链接:https://blog.csdn.net/qq_36119192/article/details/99690742

GitHub的搜索语法:

in:name test               #仓库标题搜索含有关键字 SpringCloud
in:descripton test         #仓库描述搜索含有关键字
in:readme test             #Readme文件搜素含有关键字
stars:>3000 test           #stars数量大于3000的搜索关键字
stars:1000..3000 test      #stars数量大于1000小于3000的搜索关键字
forks:>1000 test           #forks数量大于1000的搜索关键字
forks:1000..3000 test      #forks数量大于1000小于3000的搜索关键字
size:>=5000 test           #指定仓库大于5000k(5M)的搜索关键字
pushed:>2019-02-12 test    #发布时间大于2019-02-12的搜索关键字
created:>2019-02-12 test   #创建时间大于2019-02-12的搜索关键字
user:test                  #用户名搜素
license:apache-2.0 test    #明确仓库的 LICENSE 搜索关键字
language:java test         #在java语言的代码中搜索关键字
user:test in:name test     #组合搜索,用户名test的标题含有test的

邮件配置信息收集

很多网站及系统都会使用 pop3 和 smtp 发送来邮件,不少开发者由于安全意识不足会把相关的配置信息也放到Github上,所以如果这时候我们动用一下google搜索命令语句,构造一下关键字,就能把这些信息给找出来了。

site:Github.com smtp
site:Github.com smtp @qq.com
site:Github.com smtp @126.com
site:Github.com smtp @163.com
site:Github.com smtp @sina.com.cn
site:Github.com smtp password
site:Github.com String password smtp
……
 
我们也可以锁定域名搜索结合厂商域名 灵活运用例如搜百度的
 
site:Github.com smtp @baidu.com

数据库信息收集

site:Github.com sa password
site:Github.com root password
site:Github.com User ID='sa';Password
site:Github.com inurl:sql

SVN 信息收集

site:Github.com svn
site:Github.com svn username
site:Github.com svn password
site:Github.com svn username password

综合信息收集

site:Github.com password
site:Github.com ftp ftppassword
site:Github.com 密码
site:Github.com 内部

参考文章


文章作者: Luckysec
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Luckysec !
评论
  目录