信息收集
一、域名信息收集
1.1、域名介绍
域名【Domain Name】一串用点分隔的名字组成的internet上某一台计算机/计算机组的名称,在数据传输时标识计算机电子方位。
如:www.baidu.com、www.51cto.com等
关于edu.51cto.com以及www.51cto.com是该域名下对应的子域名,前面的[edu]、[www]都是对应的主机头
PC端访问站点的过程:【TCP/IP传输协议的过程】
①PC端--浏览器发送一条所访问站点的域名请求到DNS服务器
②DNS服务器检索并返回其域名对应IP地址给PC
③PC端获得域名对应IP地址进行对端WEB服务器进行访问请求
④对端WEB服务器收到请求进行回应
1.2、whois介绍
查询域名IP以及所有者等信息的传输协议。
查询域名是否已经被注册,以及注册域名的详细信息数据库[域名所有人、域名注册商等]
【不同域名后缀的whois信息】需向不同的【whois数据库】查询----如【.com】和【.edu】的数据库就不同
各域名/IP的whois信息由对应的管理机构保存
【.com】whois信息===>运营商VerSign管理
【.cn】中国国家顶级域名===>CNNIC【中国互联网网络信息中心】管理
whois协议
向服务器TCP端口43建立连接,发送查询关键字---接收服务器的查询结果
1.3、whois查询
查询重要性:
通过whois查询可以获得域名注册者邮箱地址等信息。
【一般的中小型】域名注册者==网站管理员
whois查询方法:
①WEB接口查询:
【https://www.whois365.com/cn/】
以阿里云查询[baidu.com]为例:
②通过whois命令行查询
在kali linux下自带whois查询工具,通过命令whois域名进行查询
同样以whois baidu.com为例
1.4、备案信息查询
ICP备案介绍:【Internet Content Provider】网络内容提供商
《互联网信息服务管理办法》指出互联网信息分为【经营性】和【非经营性】
经营性互联网信息服务----国家实行许可制度
非经营性互联网信息服务----国家实行备案制度
未取得/未履行备案手续==>不得从事互联网信息服务
未经国家机关单位许可备案,不可在中国境内从事非经营性互联网信息服务
备案的好处:防止网上从事非法网站经营活动,打击不良互联网信息传播
不备案可能会被关停
ICP备案查询方法:【仅中国境内有ICP】
二、子域名信息收集
2.1、子域名介绍
①顶级域名:【.com】【.net】【.org】【.cn】
②子域名[Subdomain Name]----顶级域名前的前缀都是该顶级域名的子域名
子域名---二级子域名、三级子域名、多级子域名
国内顶级域名后的二级子域名:6个
【.ac[科研机构]】【.com[工商金融]】【.edu[教育机构]】
【.gov[政府机构]】【.net[互联网信息中心和运行中心]】【.org[非盈利组织]】
如:
www.zstu.edu.cn【浙江理工大学】
2.2、挖掘子域名重要性
子域名=某个主域的二级/多级域名,在防御措施严密的情况下无法直接拿下主域=方式:迂回战术拿下子域名,然后无限靠近主域
例如:
【www.xxxxx.com】主域名不存在bug,并且防护措施严密
但是二级域名【edu.xxxxx.com】存在bug,并且防护措施松散
可以通过获取二级域名再进行一系列手段拿下主域名
2.3、挖掘子域名重要性
2.3.1、子域名挖掘工具:
【Maltego CE】【wydomain】【subDomainBrute】
【dnsmaper 】【layer子挖掘机】
以[Maltego]为例:
kali当中如果没有maltego,安装代码为:
sudo apt install maltego
打开maltego
拖拽一个domain图标,命名所要信息收集的域名
左下角【Machines】找到【Footprint L1】进行对域名的信息收集
以wydomain为例
【kali linux】下载【可能ls需要访问外部网络】
git clone https://github.com/ring04h/wydomain.git
cd wydomain
chmod +x dnsburte.py
chmod +x wydomain.py
需要明确自身kali环境是pip2+python2还是pip3+python3还是多版本环境再去选择性的去执行语句
使用【python2】执行【./dnsburte.py】代码
使用【dnspod.csv】字典查询子域名【baidu.com】
并将输出结果保存在【baidu.txt】当中
python2 ./dnsburte.py -d baidu.com -f dnspod.csv -o baidu.txt
python2 ./wydomain.py -d baidu.com -o baidu.log
使用【python2】执行【./wydomain.py】代码
查询【baidu.com】的子域名,并将结果输出在【baidu.log】当中
2.3.2、搜索引擎挖掘
在goole/baidu当中输入[site:sina.com]检索新浪微博的子域名
2.3.3、使用第三方网站进行子域名查询
【https://tool.chinaz.com/subdomain】[站长之家-子域名查询]、【https://dnsdumpster.com/】
2.3.4、证书透明度公开日志枚举
【https://crt.sh】、【https://censys.io】
2.3.5、其他在线子域名爆破
网上寻找在线子域名爆破网站进行子域名爆破
2.4、刷洞思路
针对某个具体SRC进行挖洞,直接针对主域进行shentou测试难达挖掘效果,则可通过搜集对应子域名,批量探测bug,再将bug提交对应SRC获取奖金
针对补天刷洞思路:
对应没有指定厂商的刷洞,根据某些具体bug,通过URL采集获取目标,编写探测脚本批量探测,高效刷bug
TIP:时刻保持警惕,不触及不该触及的内容,不影响公司业务,只做bug探测内容,确定存在bug即可,点到为止
挖洞高峰:互联网曝出新bug--大量该bug提交到bug平台获取奖金
三、web站点信息收集
3.1、CMS指识别
CMS(内容管理系统)
又称整站系统/文章系统。用于网站内容管理。
通过下载对应CMS软件包可以简单高效部署搭建。
各种CMS都有独特的结构命名规则和特定的文件内容,可以利用这些内容来获取CMS站点具体CMS软件与版本号
常见CMS:
【dedecms】织梦、【Discuz】、【Phpcms】等
CMS识别工具:
①在线工具:
【https://www.wappalyzer.com/】、【https://builtwith.com/】
②本地工具[whatweb]
御剑web指纹识别程序【御剑WEB指纹识别系统教程,图文教程(超详细)-CSDN博客】
大禹CMS识别程序【https://github.com/Ms0x0/Dayu】
3.2、针对CMS的bug查询
对于查询到的CMS可以利用【https://bugs.shuimugan.com】网站查询指定CMS的bug
对于一些能够从bug库当中查询到的bug进行一个利用和安全性检测
3.3、敏感目录信息
针对目标WEB目录结构和敏感隐藏文件探测非常重要。
在探测过程中可能会探测出后台页面、上传页面、数据库文件、甚至是网站源代码文件压缩包等
探测工具
①御剑后台扫描工具
②wwwscan命令行工具
③dirb命令行工具
dirb https://edu.51cto.com
④dirbuster扫描工具
3.4、wordpress测试
wordpress是使用PHP语言开发的博客平台,用户可以在支持PHP和MYSQL数据库服务器上架设属于自己的网站
也可以将wordpress当作一个内容管理系统(CMS)来使用
针对wordpress测试,可以使用wpscan工具进行对应的安全测试
通过wpscan来进行对网站信息的收集
wpscan --url https://cn.wordpress.com
可以得到域名等各式信息【服务器,版本,插件等】
四、端口信息收集
4.1、端口介绍
IP地址=房子,端口=出入房子的门。
一个IP地址可以有65536个端口[216]端口用端口号标记,只有整数个[216-1]
如:计算机80端口,21端口,23端口等
一个端口==一个服务。
windows命令行中使用
netstat -anbo #显示开放端口,建立的连接
netstat -h #显示命令帮助
4.2、端口信息收集
对于目标机器端口状态,使用工具测试
【原理】使用TCP/UDP等协议向目标端口发送指定标志位等的数据包,等待目标返回数据包,以此判断端口状态
①使用[nmap]探测
nmap -A -v -T4 目标
②使用[masscan]探测
masscan -p80 192.168.1.1/24 --rate=10000
探测目标地址是否开放80端口
③使用在线网站探测[http://tool.chinaz.com/port/]缺陷:无法探测本地网络的端口信息
4.3、端口attack
针对不同的端口有不同的attack方法
【针对远程连接服务端口】
端口 | 端口说明 | attack方法 |
22 | SSH远程连接 | 爆破、SSH隧道及内网代理转发、文件传输 |
23 | Telnet远程连接 | 爆破、嗅探、弱口令 |
3389 | rdp远程桌面 | Shift厚门、爆破 |
5900 | VNC远程连接 | 弱口令、RCE |
5632 | PcAnywhere远程连接 | 嗅探、代码执行 |
对于扫描到的端口可以在搜索引擎当作查找对应的attack方式进行测试
4.4、防御措施
端口attack----只要端口开放并且可以连通,就可以利用对应方式进行attack测试
【防御措施】
①关闭不必要的端口
②对重要业务的服务端口设置防火墙
③加强员工信息安全意识,经常性更换用户密码
④经常更新软件,打补丁(patch)
五、敏感信息收集
5.1、敏感信息收集重要性
针对某些安全措施较好的目标,直接通过技术层面无法完成氵参透测试。
利用搜索引擎搜索目标暴露在互联网上的关联信息。
【数据库文件、SQL氵主入、服务器配置信息】
【通过Github找到站点泄露源代码、Redis等未授权访问、robots.txt等敏感信息】
【某些情况】
收集信息对后期测试起到帮助作用,通过收集信息直接获得目标系统的数据库访问权限---氵参透测试任务结束一大半了
在技术层面情况下的测试之前,先进行更多的信息收集
5.2、Google Hacking语法
使用Google等搜索引擎对某些特定网络主机bug (服务器上的脚本bug)进行搜索,以达到快速找到bug主机/特定主机bug目的
关键字 | 含义 |
site | 指定搜索域名 【site:baidu.com】 |
inurl | 指定URL中是否存在某些关键字 【inurl:.php?id=】 |
intext | 指定网页中是否存在某些关键字 【intext:网站管理】 |
filetype | 指定搜索文件类型 【filetype:txt】 |
intitle | 指定网页标题是否存在某些关键字 【intitle:后台管理】 |
link | 指定网页链接 【link:baidu.com】 指定与百度做了外链的站点 |
info | 指定搜索网页信息 【info:baidu.com】 |
Google hacking数据库:【https://www.exploit-db.com/google-hacking-database/】
查询access数据:filetype:mdb "standad jet" (password | username | user | pass)
5.3、HTTP响应收集Server信息
http/https与目标站点通信时,目标响应的报文中Server透和X-Powered-By头回暴露服务器和使用的编程语言信息,通过这些信息可以有针对的利用bug尝试
【获取HTTP响应的方法】
①利用工具:【浏览器审计工具】【Burpsuite】等代理截断工具
进入一个页面,键入【F12】进行代码审计,收集信息(服务器等各类信息)
②编写Python脚本 requests库
参考链接:【https://www.python-requests.org/en/master/】
import requests
r =request.get("https://edu.51cto.com")
r.headers
后续通过得到的服务器类型,去【exploit-db库】当中进行bug寻找
searchsploit 【服务器类型】
5.4、Github信息泄露
github--分布式版本控制系统,开发者用户数量达140+。一些敏感信息的泄露是用户自身无意中造成,使得小疏忽成为安全隐患。
Github邮件配置信息泄露:
site:Github.com stp
site:Github.com smtp @qq.coom
Github数据库信息泄露:
site:Github.com sa password
site:Github.com root password
site:Github.com User ID=' sa' ;Password
Github的SVN信息泄露:
site:Github.com svn
site:Github.com svn username
GitHub综合信息泄露:
site:Github.com password
site:Github.com ftp ftppassword
site:Github.com 密码
site:Github.com 内部
六、真实IP地址收集
6.1、CDN介绍
【Content Delivery Network】内容分发网络
不同地域有不同的缓存服务器来接受用户的数据,请求。只有需要交互时才能请求真实的服务器
6.2、判断CDN存在
通过ping判断是否存在CDN
设置代理/利用在线ping网站来使用不通过地区的ping服务器来测试目标
【http://ping.chinaz.com】
6.3、绕过CDN
目标没有使用CDN--直接利用PING获得IP地址。【http://www.ip138.com】
目标使用CDN--绕过CDN获取真实地址:
①内部邮箱源,收集到内部邮箱服务器IP地址
②网站phpinfo文件,phpinfo.php
③分站IP地址,查询子域名,CDN很贵,很有可能分站就不再使用CDN
④国外访问【https://asm.ca.com/en/ping.php】暂时无法进入进行ping操作
⑤查询域名解析记录【https://viewdns.info/】需要【science 上网】
区分哪些是CDN的IP地址,哪些是服务器的IP地址
6.4、验证IP地址
利用IP地址对WEB站点进行访问,如果正常,表名是真实IP地址。
通过国外访问获得的ping地址和域名解析的地址进行比对,确定真实地址