信息收集内容
在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透人员需要使用各种公开资源尽可能地获取测试目标的相关信息。他们搜集信息的互联网渠道主要有:论坛/公告板/新闻组/媒体文章/博客/社交网络/github/其他商业或非商业性的网站。此外,他们也可以借助各种搜索引擎中获取相关数据,如谷歌、雅虎、MSN必应、百度等。收集的信息主要包括:
(1)收集目标网站服务器信息:域名、子域名、CNAME、cdn、真实IP、系统类型、版本等;
(2)识别并收集目标网站指纹信息:CMS、中间件、网页编程语言等及其通用漏洞调查收集;
(3)扫描并收集目标网站目录结构:一些文件可以访问获得信息、后台管理页面位置、日志位置等;
(4)网站的敏感信息:
whois信息、姓名、备案、邮箱、电话反查(邮箱丢社工库,社工准备等);
弱口令扫描、密码爆破等(如针对系统管理员、网站后台管理员、数据库管理员等);
网站源码是否泄露等,如github源码。
(5)收集目标服务器主机端口信息:不同端口提供不同的攻击思路和方向;
(6)网络防护信息:网络边界设备或网络节点设备,如有没有防火墙,有没有IPS、IDS或WAF,网络行为管理,全流量分析。
收集的信息越多,渗透测试成功的概率越高。
在信息收集中,最主要的就是收集服务器的配置信息和网站的敏感信息,其中包括域名及子域名信息、目标网站系统、CMS指纹、目标网站真实IP 、开放的端口等。换句话说,只要是与目标网站相关的信息,我们都应该去尽量搜集。
域名相关信息
知道目标的域名之后,我们要做的第一件事就是获取域名的注册信息,注意关注该域名的注册商和注册人的联系方式(电话和邮箱)等信息。
域名分类
国际域名:.com(商业公司);:net(网络服务):.org(组织协会等);.gov(政府部门);.edu(教育机构);.mil(军事领域);.int(国际组织)
国别域名:.CN代表中国,.UK代表英国,.US代表美国
新顶级域名:biz,info,name,pro, aero, coop, museum…
域名信息查询方式
whois查询
Whois是一个标准的互联网协议, 可用于收集域名注册信息,注册的域名、IP地址等信息。简单来说, Whois就是一个用于查询域名是否
己被注册以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。
在Whois查询中,得到注册人的姓名和邮箱信息通常对测试个人站点非常有用,因为我们可以通过搜索引擎和社交网络挖掘出域名所有人
的很多信息。对中小站点而言,域名所有人往往就是管理员。
- Kali系统:在Kali系统中, Whois 己经默认安装,只需输入要查询的域名即可,代码为
whois+域名(一般域名不包含主机名,如
·baidu.com)。注意,Kali系统需连接真实网络,能上网。
反查
备案信息查询
子域名信息查询方式
子域名也就是二级域名, 是指顶级域名下的域名。假设我们的目标网络规模比较大,直接从主域入手显然是很不理智的, 因为对于这种
规模的目标, 一般其主域都是重点防护区域,所以不如先进入目标的某个子域,然后再想办法迂回接近真正的目标,这无疑是个比较好
的选择。
Google语法 site:xxx.com
IP相关信息
端口服务相关信息
查看本机端口
Windows:netstat -aon|findstr 3306
Linux: netstat -an|grep 3306
远程机器端口
telnet 192.168.142.137 80
wget 192.168.142.137 80
nc -vz 192.168.142.137 445
常见端口及漏洞
文件共享服务
| 端口号 | 端口说明 | 攻击方向 |
|---|---|---|
| 21/22/69 | FTP/SFTP文件传输协议 | 允许匿名上传、下载、爆破和嗅探操作 |
| 2049 | NFS服务(NetworkFileSystem) | 配置不当 |
| 139 | Samba服务 | 爆破、未授权访问、远程代码和执行 |
| 389 | LDAP目录访问协议 | 注入、允许匿名访问、弱口令 |
远程连接服务端口
| 端口号 | 端口说明 | 攻击方向 |
|---|---|---|
| 22 | SSH远程连接 | 爆破、SSH隧道及内网代理转发 文件传输 |
| 23 | Telnet远程连接 | 爆破、嗅探、弱口令 |
| 3389 | RDP远程桌面连接 | Shift后门(WindowsServer2003以下的系统)、爆破 |
| 5900 | VNC | 弱口令爆破 |
| 5632 | PcAnywhere远程控制服务 | 抓密码、代码执行 |
数据库服务端口
| 端口号 | 端口说明 | 攻击方向 |
|---|---|---|
| 3306 | MySQL | 注入、提权、爆破 |
| 1433 | MSSQL数据库 | 注入、提权、SA弱口令 |
| 1521 | Oracle数据库 | TNS爆破、注入、反弹shell |
| 5432 | PostgreSQL数据库 | 爆破、注入、弱口令 |
| 27017/27018 | MongoDB | 爆破、未授权访问 |
| 6379 | Redis数据库 | 可尝试未授权访问、弱口令爆破 |
| 5000 | Sysbase/DB2数据库 | 爆破、注入 |
邮件服务端口
| 端口号 | 端口说明 | 攻击方向 |
|---|---|---|
| 25 | SMTP邮件服务 | 邮件伪造 |
| 110 | POP3协议 | 爆破、嗅探 |
| 143 | IMAP协议 | 爆破 |
网络常见协议端口
| 端口号 | 端口说明 | 攻击方向 |
|---|---|---|
| 53 | DNS域名系统 | 允许区域传送、DNS劫持 缓存投毒、欺骗 |
| 67/68 | DHCP服务 | 劫持、欺骗 |
| 161 | SNMP协议 | 爆破、搜集目标内网信息 |
特殊服务端口
| 端口号 | 端口说明 | 攻击方向 |
|---|---|---|
| 2181 | Zookeeper服务 | 未授权访问 |
| 8069 | Zabbix服务 | 远程执行、SQL注入 |
| 9200/9300 | Elasticsearch服务 | 远程执行 |
| 11211 | Memcached服务 | 未授权访问 |
| 512/513/514 | LinuxRexec服务 | 爆破、rlogin登录 |
| 873 | Rsync服务 | 匿名访问、文件上传 |
| 3690 | SVN服务 | SVN泄露、未授权访问 |
| 50000 | SAPManagementConsole | 远程执行 |
Nmap
Nmap (Network Mapper https://nmap.org/
1)扫描主机(HostiDiscovery)
2)扫描端口(Port Scanning)
3)探测操作系统、软件版本(Operating System Detection、Version Detection)
参数类型
nmap–help
TARGETSPECIFICATIOM:自标,对什么进行扫描,比如是域名、TP或者网络
HOSTDISCOVERY:主机发现,怎么对主机进行扫描,比如简单扫描,还是全部,扫一遍,或者用相应的协议扫
SCANTECHNIOQUES:扫描技术,协议日勺设置
PORTSPECIFICATIONANDSCANORDER:端口和扫描顺序设置 SERVICEVERSIONDETECTION:服务和版本识别
SCRIPT SCAN:使用脚本,nmap本身内置了大量的lua脚本,而且还可以自己编写脚本
OS DETECTION:操作系统识别
TIMING AND PERFORMANCE:时间和性能设置,比如扫描频率、重试次数等等 FIREWALL/IDS EVASION AND SPOOFING:防火墙绕过和欺骗,比如使用代理假IP等
OUTPUT:把扫描接出输出到文件 MISC:启用IPv6等等配置
nmap本身内置了大量的lua脚本,而且还可以自己已编写脚本
Is /usr/share/nmap/scripts/ I wc -1
例如:
nmap 192.168.142.137 –script http-enum 列举HTTP服务
nmap–script=auth绕过鉴权
nmap–script=brute 暴力破解 nmap –script=vuln 扫描漏洞
指纹识别
识别对象
- CMS信息:比如Discuz、织梦、帝国CMS、PHPCMS、ECshop等
- 前端技术:比如HTML5、jquery、bootstrap、Vue、ace等;
- 开发语言:比如PHP、Java、Ruby、Python、C#等;
- Web服务器:比如Apache、 Nginx、IIS、lighttpd等;
- 应用服务器:比如Tomcat、Jboss、Weblogic、Websphere等;
- 操作系统信息:比如Linux、win2k8、win7、Kali、Centos等;
- CDN信息:是否使用CDN,如cloudflare、帝联、蓝讯、网宿、七牛云、阿里云等;
- WAF信息:是否使用WAF,如D盾、云锁、宝塔、安全狗、360等
CMS指纹识别
内容管理系统
Content Management System
通过关键特征器、开发语言、版本等等
识别出月标的CMS系统、服务操作系统、CDN、WAF的类别
常见的CMS
博客(比如CSDN、博客园)、微博、站、导航网站(hao123)、信息分类(知乎)、商城、百科….
问答网站、企业官网、学校官网、医院官网、团购网(58)

各类网站开源CMS
- 企业建站系统:Metlnfo(米拓)、蝉知、SiteServer CMS等;
- B2C商城系统:商派Shopex、ECshop、HiShop、XpShop等
- 门户建站系统:DedeCMS(织梦)、帝国CMS、PHPCMS、动易CmsTop等;
- 博客系统:WordPress、Z-Blog等
- 论坛社区:Discuz、PHPwind、WeCenter等
- 问答系统:Tipask、whatsns等
- 知识百科系统:HDwiki;
- B2B门户系统:Destoon、B2Bbuilder、友邻B2B等
- 人才招聘网站系统:骑士CMS、PHP云人才管理系统
- 房产网站系统:FangCms等;
- 在线教育建站系统:Kesion、EduSoho;
- 电影网站系统:苹果cMS、ctcms、movcms等
- 小说文学建站系统:杰奇CMS
CMS指纹识别思路
版权信息、特定文件MD5值、查看网页源代码、通过特定文件分析
CMS识别工具
- whatweb(kali)
- 浏览器插件
- 在线网站
- 离线网站
- 御剑指纹扫描器(需要.NET Framework)
- Test404轻量CMS指纹识别v2.1
- CMSeek
CDN指纹识别
- (超级)ping
- nslookup
- ldb(load balance detector Kali)
- 国内:
- 国外:
- 脚本:
WAF指纹识别
Web. Application Firewall Web 应用防火墙
过滤HTTP/HTTPS的请求
WAF的作用
SQL Injection (SQLi):阻止SQL注入
Cross Site Scripting (XSS):阻止跨站脚本攻击
Local File Inclusion (LFI): 阻正止利用本地文件包含漏洞进行攻击
Remote File Inclusione(RFl):阻止利用远程文件包含漏洞进行攻击
Remote Code Execution(RCE):阻正止利用远程命令执行漏洞进行攻击 PHP Code Injectiod:阻正止PHP代码注入
HTTP Protocol Violations:阻止违反HTTP协议的恶意访问
HTTPoXy:阻止利用远程代理感染漏洞进行攻击 Sshllshock:阻止利用Shellshock漏洞进行攻击
Session Fixation: 阻止利用Session会话iD不变的漏洞进行攻击 ScannerDetection:阻止黑客扫描网站
Metadata/ErrorLeakages:阻止源代码/错误信息泄露 Project Honey Pot Blacklist:蜜罐项目黑名单
GeolP Country Blocking:根据判断IP地址归属地来进行IP阻断
WAF分类
硬件型WAF厂商安装)
云WAF(阿里云、腾讯云、华为云.. )
软件型 WAF(部署在 Apache、Nginx 等 HTTPServer中)
常见WAF厂商
各种云:阿里云、腾讯云、华为云、百度云
安全狗、宝塔、360、知道创宇、长亭、安恒、
WAF识别思路
额外的cookie;
任何响应或请求的附加标头;
响应内容(如果被阻止请求)
响应代码(如果被阻止请求)
IP地址(云WAF);
JS客户端模块(客户端WAF)
WAF触发拦截方式
xsstring = '<script>alert("Xss");</script>
sqlistring = "UNION SELECT ALL FROM information schema AND ' or SLEEP(5) or '"
Ifistring = "../.././../etc/passwd
rcestring = '/bin/cat /etc/passwd; ping 127.0.0.1; curl google.com'
xxestring = '<!ENTITY xxe SYSTEM "file:///etc/shadow">]><pwn>&hack;</pwn>"
WAF识别工具
Kali自带:
wafw00f https://www.12306.cn
nmap www.12306.cn –script=http-waf-detect.nse
sqlmap -u “xxx.com?id=1” –identify-waf
其他:
搜索引擎(Google语法)
查找正文含有关键字的网页
intext
intext:后台登陆 只返回正文包含“后台登陆”的网页
intitle
intitle:后台登陆 只返回标题中包含“后台登录”的网页
allintitle:后台登陆 管理员 可以指定多个词
inurl
inurl:login
inurl:/admin/login.php 查找管理员登陆页面
inurl:/phpmyadmin/index.php 查找后台数据库管理员页面
allinurl: 可以指定多个词
site
site:baidu.com inurl:login 只在baidu.com 中查找url中含有 Login的网页
filetype
指定访问的文件类型
site:xcu.edu.cn filetype:pdf
link
指定连接的网页
link:www.baidu.com
related
相似类型的网页
related:www.xcu.edu.cn
cache:
返回浏览器对网站的缓存
cache:www.xcu.edu.cn
info:
返回站点的指定信息
define:
返回某个词语的定义
phonebook:
电话簿查询美国街道地址和电话号码信息
查找网站后台
- site:xx.com intext:管理
- site:xx.com inurl:login
- site:xx.com intitle:后台
查看服务器使用的程序
- site:xx.com filetype:asp
- site:xx.com filetype:php
- site:xx.com filetype:jsp
- site:xx.com filetype:aspx
查看上传漏洞
- site:xx.com inurl:file
- site:xx.com inurl:load
index of
利用 Index of 语法去发现允许目录浏览的web网站,就像在本地的普通目录一样
index of /admin
index of /passwd
index of /password
index of /mail
"index of /" +passwd
"index of /" +password.txt
"index of /".htaccess
"index of /root"
"index of/cgi-bin"
"index of/logs"
"index of /config"
inurl
而上面这些命令中用的最多的就是 inurl: 了,利用这个命令,可以查到很多意想不到的东西
利用 allinurl:winnt/system32/ 查询:列出的服务器上本来应该受限制的诸如“system32” 等目录,如果你运气足够好,你会发现“system32” 目录里的“cmd.exe” 文件,并能执行他,接下来就是提升权限并攻克了。
查询 allinurl:wwwboard/passwd.txt 将列出所有有“WWWBoard Password vulnerability”漏洞的服务器
查询 inurl:.bash_history 将列出互联网上可以看见 “inurl:.bash_history” 文件的服务器。这是一个命令历史文件,这个文件包含了管理员执行的命令,有时会包含一些敏感信息比如管理员键入的密码。
查询 inurl:config.txt 将看见网上暴露了“inurl:config.txt”文件的服务器,这个文件包含了经过哈希编码的管理员的密码和数据库存取的关键信息。
还有一些其他一些使用“inurl:”和“allinurl:”查询组合的例子
inurl:admin filetype:txt
inurl:admin filetype:db
inurl:admin filetype:cfg
inurl:mysql filetype:cfg
inurl:passwd filetype:txt
inurl:”wwwroot/*.”
inurl:adpassword.txt
inurl:webeditor.php
inurl:file_upload.php
inurl:gov filetype:xls “restricted”
index of ftp +.mdb allinurl:/cgi-bin/ +mailto
语法数据库&工具
[Google Dork List](https://github.com/BullsEye0/google_dork_
list)
网络空间搜索引擎
shodan
shodan网络搜索引擎偏向网络设备以及服务器的搜索
网络类
port 端口
product 所使用的软件或产品
os 操作系统类型
version: 搜索指定的软件版本,例如 version:"1.3.2"
net: 搜索指定的IP地址或子网,例如 net:"110.43.140.0/24"
应用类
html.title 网页标题
http.html 网页内容
http.server http请求返回中server的类型
http.status http请求返回响应码的状态
hostname 主机类型
http.favicon.hash icon对应hash
vuln CVE漏洞编号,例如:vuln:CVE-2014-0723
地理位置类
country: 搜索指定的国家,例如 country:"CN"
city: 搜索指定的城市,例如 city:"Beijing"
org: 搜索指定的组织或公司,例如 org:"google"
isp: 搜索指定的ISP供应商,例如 isp:"China Telecom"
其他
如果需要多个词同时搜索时,只需要在每个关键字间加空格分割就行,比如:country:“CN” city:“Beijing”
当不需要某个词时,可以用”-”加上关键词来进行去除。比如:”-port:80”(排除80端口搜索结果)
My-Shodan-Scripts
censys
- 23.0.0.0/8 or 8.8.8.0/24 可以使用and or not
- 80.http.get.status_code: 200 指定状态
- 80.http.get.status_code:[200 TO 300] 200-300之间的状态码
- location.country_code: DE 国家
- protocols: (“23/telnet” or “21/ftp”) 协议
- tags: scada 标签
- 80.http.get.headers.server:nginx 服务器类型版本
- autonomous_system.description: University 系统描述
- 正则
钟馗之眼ZoomEye
钟馗之眼搜索引擎偏向web应用层面的搜索。
- app:nginx 组件名
- ver:1.0 版本
- os:windows 操作系统
- country:”China” 国家
- city:”hangzhou” 城市
- port:80 端口
- hostname:google 主机名
- site:thief.one 网站域名
- desc:nmask 描述
- keywords:nmask’blog 关键词
- service:ftp 服务类型
- ip:8.8.8.8 ip地址
- cidr:8.8.8.8/24 ip地址段
FoFa
FoFa搜索引擎偏向资产搜索。
搜索语法
- title=”abc” 从标题中搜索abc。例:标题中有北京的网站。
- header=”abc” 从http头中搜索abc。例:jboss服务器。
- body=”abc” 从html正文中搜索abc。例:正文包含Hacked by。
- domain=”qq.com” 搜索根域名带有qq.com的网站。例: 根域名是qq.com的网站。
- host=”.gov.cn” 从url中搜索.gov.cn,注意搜索要用host作为名称。
- port=”443” 查找对应443端口的资产。例: 查找对应443端口的资产。
- ip=”1.1.1.1” 从ip中搜索包含1.1.1.1的网站,注意搜索要用ip作为名称。
- protocol=”https” 搜索制定协议类型(在开启端口扫描的情况下有效)。例: 查询https协议资产。
- city=”Beijing” 搜索指定城市的资产。例: 搜索指定城市的资产。
- region=”Zhejiang” 搜索指定行政区的资产。例: 搜索指定行政区的资产。
- country=”CN” 搜索指定国家(编码)的资产。例: 搜索指定国家(编码)的资产。
- cert=”google.com” 搜索证书(https或者imaps等)中带有google.com的资产。
高级搜索:
- title=”powered by” && title!=discuz
- title!=”powered by” && body=discuz
- ( body=”content=\”WordPress” || (header=”X-Pingback” && header=”/xmlrpc.php” && body=”/wp-includes/“) ) && host=”gov.cn”
Dnsdb搜索引擎
dnsdb搜索引擎是一款针对dbs解析的查询平台。
搜索语法
DnsDB查询语法结构为条件1 条件2 条件3 …., 每个条件以空格间隔, DnsDB 会把满足所有查询条件的结果返回给用户.
域名查询条件
域名查询是指查询顶级私有域名所有的DNS记录, 查询语法为domain:.
例如查询google.com 的所有DNS记录: domain:google.com.
域名查询可以省略domain:.
主机查询条件
查询语法:host:
例如查询主机地址为mp3.example.com的DNS记录: host:map3.example.com
主机查询条件与域名查询查询条件的区别在于, 主机查询匹配的是DNS记录的Host值
按DNS记录类型查询
查询语法: type:.
例如只查询A记录: type:a
使用条件:必须存在domain:或者host:条件,才可以使用type:查询语法
按IP限制
查询语法: ip:
查询指定IP: ip:8.8.8.8, 该查询与直接输入8.8.8.8进行查询等效
查询指定IP范围: ip:8.8.8.8-8.8.255.255
CIDR: ip:8.8.0.0/24
IP最大范围限制65536个
条件组合查询的例子
查询google.com的所有A记录: google.com type:a