信息收集
信息收集的分类
服务器的相关信息(真实ip,系统类型,版本,开放端口,WAF等)
网站指纹识别(包括,cms,cdn,证书等) dns记录
whois信息,姓名,备案,邮箱,电话反查(邮箱丢社工库,社工准备等)
子域名收集,旁站,C段等
google hacking针对化搜索,word/电子表格/pdf文件,中间件版本,弱口令扫描等
扫描网站目录结构,爆后台,网站banner,测试文件,备份等敏感文件泄漏等
传输协议,通用漏洞,exp,github源码等
常见方法
whois查询
域名在注册的时候 需要填入个人或者企业信息 如果没有设置隐藏属性可以查询出来 通过备案号 查询个人或者企业信息 也可以whois反查注册人 邮箱 电话 机构 反查更多得域名和需要得信息。
收集子域名
端口扫描
常见的端口是tcp 和udp两种类型(0~65535)
查找真实ip
企业的网站,为了提高访问速度,或者避免黑客攻击,用了cdn服务,用了cdn之后真实服务器ip会被隐藏。
探测旁站及C段
旁站:一个服务器上有多个网站 通过ip查询服务器上的网站
c段:查找同一个段 服务器上的网站。可以找到同样网站的类型和服务器,也可以获取同段服务器进行下一步渗透。
网络空间搜索引擎
通过这些引擎查找网站或者服务器的信息,进行下一步渗透。
扫描敏感目录/文件
通过扫描目录和文件,大致了解网站的结构,获取突破点,比如后台,文件备份,上传点。
指纹识别
获取网站的版本,属于那些cms管理系统,查找漏洞exp,下载cms进行代码审计。
whois查询
通过whois来对域名信息进行查询,可以查到注册商、注册人、邮箱、DNS解析服务器、注册人联系电话等,通过每个网站查询的信息可能会有差异。
whois 域名
收集子域名
查询目标域名信息常用方式
FOFA:title="公司名称"
百度:intitle=公司名称
Google:intitle=公司名称
钟馗之眼:site:"域名"
站长之家:直接搜索名称或者网站域名即可查看相关信息
检测CNAME记录
输入命令
nslookup -q=cname 域名
,查看返回的结果与设置的是否一致即可检测TXT记录
输入命令
nslookup -q=txt 域名
,查看返回的结果与设置的是否一致即可
收集子域名
子域名在线查询(暴力枚举)
censys(基于SSL证书查询)
dns侦测
FOFA搜索子域名
语法:domain="域名"
钟馗之眼搜索子域名
语法:site:"域名"
Hackertarget查询子域名
360测绘空间
语法:domain:"域名"
Layer子域名挖掘机(暴力枚举)
FuzzDomian(web界面,枚举)
OneForALL(功能较全)
https://github.com/shmilylty/OneForAll
pip3 install --user -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ //安装模块
python3 oneforall.py --target baidu.com run //运行SubDomainBrute(暴力枚举)
pip install aiodns //安装模块
subDomainsBrute.py freebuf.com //运行
subDomainsBrute.py freebuf.com --full -o result.txt //使用自带的subnames_full.txt字典进行枚举,并将结果保存到result.txtSublist3r
https://github.com/aboul3la/Sublist3r
git clone https://github.com/aboul3la/Sublist3r.git //下载项目
pip install -r requirements.txt //安装模块
python sublist3r.py -d baidu.com //默认参数扫描子域名
python sublist3r.py -b -d baidu.com //使用暴力枚举扫描子域名ksubdomain
无状态子域名爆破
端口扫描
nmap扫描
nmap -sV ip地址
常用参数
-sn:只做ping扫描,不做端口扫描(主机发现)
-Pn:跳过主机发现,视所有主机都在线
-PS/PA/PU:基于TCP(SYN、ACK)、UDP的指定端口的主机发现
-sS/sT:TCP扫描,半/全连接扫描
-sU:UDP扫描
-p:指定端口扫描范围
-sV:探测开放的端口的系统/服务信息
--script=<Lua scripts>:指定脚本名称
-iL:从文件中加载目标
-O:获取操作系统信息
-A:使能系统探测、版本检测、脚本扫描、路由追踪(探测端口指纹)
masscan扫描
msscan ip地址 -p 1-65535 --rate=1000 //rate值越大越快
御剑端口扫描
在线端口扫描
旁站与C段
旁站是和已知目标站点在同一服务器但不同端口的站点,建议先收集已有IP的旁站,再探测C段,确认C段目标后,再在C段的基础上再收集一次旁站
网络空间搜索引擎查询(如FOFA、钟馗之眼等)
同IP旁站:ip="192.168.0.1"
C段:ip="192.168.0.0/24"
在线c段查询
nmap扫描
nmap -p 80,443,8000,8080 -Pn 192.168.0.0/24
使用脚本探测C段
pip install requests //安装模块
#coding:utf-8
import requests
import json
def get_c(ip):
print("正在收集{}".format(ip))
url="http://api.webscan.cc/?action=query&ip={}".format(ip)
req=requests.get(url=url)
html=req.text
data=req.json()
if 'null' not in html:
with open("resulit.txt", 'a', encoding='utf-8') as f:
f.write(ip + '\n')
f.close()
for i in data:
with open("resulit.txt", 'a',encoding='utf-8') as f:
f.write("\t{} {}\n".format(i['domain'],i['title']))
print(" [+] {} {}[+]".format(i['domain'],i['title']))
f.close()
def get_ips(ip):
iplist=[]
ips_str = ip[:ip.rfind('.')]
for ips in range(1, 256):
ipadd=ips_str + '.' + str(ips)
iplist.append(ipadd)
return iplist
ip=input("请你输入要查询的ip:")
ips=get_ips(ip)
for p in ips:
get_c(p)
网站头信息收集
中间件
如apache、iis7、iis7.5、iis8、nginx、weblogic、tomcat等
网站组件
如jquery、vue等
界面框架
bootstrap
收集方式
通过浏览器获取
在线指纹识别
火狐插件 Wappalyzer
网络空间搜索
curl查询头信息
curl https://www.moonsec.com -i
端口扫描
nmap
nmap ip地址 #先利用ping检测主机是否存活,利用tcp扫描目标主机的常见端口的top1000
nmap -p U:53 ip地址 #扫描UDP端口参数:
-sn:只做ping扫描,不做端口扫描(主机发现)
-Pn:跳过主机发现,视所有主机都在线
-PS/PA/PU:基于TCP(SYN、ACK)、UDP的指定端口的主机发现
-sS/sT:TCP扫描,半/全连接扫描
-sU:UDP扫描
-p:指定端口扫描范围(-p-:全端口)
-sV:探测开放的端口的系统/服务信息
-sC:使用脚本扫描,调用默认脚本
-iL:从文件中加载目标
-O:获取操作系统信息
-A:使能系统探测、版本检测、脚本扫描、路由追踪(-O -sC -sV)
常用扫描方式:
//存活探测
nmap -sn 192.168.1.0/24 #扫描存活主机
nmap -Pn -p445 192.168.1.0/24 #忽略主机存活扫描445端口
nmap -PE 192.168.1.0/24 #利用ping icmp echo扫描(常用于内网扫描)
//扫描技巧
nmap -sS -p- 192.168.1.1 #半开放式扫描(仅发送syn+ack,目标不记录ip地址)
nmap -sA -p- 192.168.1.1 #tcp窗口扫描 (只发送ack,目标不记录ip地址)
nmap -sU -p- 192.168.1.1 #UDP扫描,速度快,发包数量小(常用于内网扫描)
//版本识别
nmap -sV -O -p- 192.168.1.1 #根据响应包中的banner提取服务的版本信息,并识别目标机器的操作系统版本
//脚本扫描
nmap -sC 192.168.1.1 #使用脚本扫描(可能有误报)
nmap --script=xxx 192.168.1.1 #指定脚本扫描目标机器,返回详细漏洞信息
//绕过防火墙和IDS检测
nmap -f --mtu=8 192.168.1.1 #指定使用分片(0-8)
nmap --data-length 1000 192.168.1.1 #填充随机数据使数据包长度达到NUM
nmap -e eth0 192.168.1.1 #指定网卡发送数据包
nmap --proxies http://x.x.x.x:7890 192.168.1.1 #指定代理
nmap --spoof-mac xx-xx-xx-xx-xx-xx #伪装mac
//输出文件
nmap 192.168.1.1 -oN result.txt #将标准输出保存到文件masscan
收集网站信息
CMS指纹识别
收集好网站信息之后,应该对网站进行指纹识别,通过识别指纹,确定目标的cms(内容管理系统)及版本,方便制定下一步的测试计划,利用公开的poc或自己累积的对应手法等进行正式的渗透测试
水泽信息收集工具
EHole棱动(棱角社区漏洞资产)
通过特殊文件或特殊目录识别
通过页面版权信息,poweredby关键字等
前端代码中的相关信息(特征js文件+特征html body+特征title)
robots.txt文件中的关键字(作用标记哪些文件目录可以被爬虫访问)
wapplazyer(根据响应包内容识别CMS)
whatweb
whatweb https://luoyunhao.com //kail
CMS漏洞利用
- 常规搜索引擎
- 乌云漏洞库
- exploit-db
- Cnvd
- Github
目录/敏感文件收集
常见的敏感文件如.git文件泄露,.svn文件泄露,phpinfo泄露等
御剑
7kbstorm
dirmap
https://github.com/H4ckForJob/dirmap
pip install -r requirement.txt //安装
python3 dirmap.py -i https://target.com -lcf //单个目标
python3 dirmap.py -iF urls.txt -lcf //多个目标dirsearch
git clone https://gitee.com/Abaomianguan/dirsearch.git
unzip dirsearch.zip
python3 dirsearch.py -u http://target.com -e * //运行扫描bbscan(信息泄露扫描)
https://github.com/lijiejie/BBScan
pip install -r requirements.txt //安装
python BBScan.py --host www.target.com //扫描单个web服务
python BBScan.py --host www.target.com --network 28 //扫描www.target.com/28网段下的所有主机
python BBScan.py -f ip.txt //扫描txt文件中的所有主机gobuster
apt-get install gobuster //安装
gobuster -u 网址 -w 字典 -c cookies -x 指定后缀 -t 线程数量 //基本用法
源代码审计
挖0day
全文通读——漏洞挖掘最全
敏感函数回溯--方便快捷挖掘漏洞
eval assert create function arrat map (代码执行) system passthru popen shell_exec exec ``(命令执行) move_uploaded_file(upload) include require(RFI) echo print print_r(XSS)
定向功能分析法--定向挖掘某块功能的漏洞
中间件信息收集
IIS Apache httpd Nginx weblogic tomcat jboss jekins websphere
网站脚本信息收集
php、jsp、asp、aspx
数据库信息收集
Access(没有端口)、SQL server(1433)、Mysql(3306)、Oracle(1521)
SSH/TLS证书查询
SSL/TLS证书通常包含域名、子域名和邮件地址等信息,结合证书中的信息,可以更快速地定位到目标资产,获取到更多目标资产的相关信息
查询网站:
查找部署CDN网站的真实IP
判断是否有CDN
查找真实ip方式
dns历史解析记录
通过以下这些网站可以访问dns的解析,有可能存在未有绑cdn之前的记录。
https://dnsdb.io/zh-cn/ DNS查询(需购买会员)
https://x.threatbook.cn/ 微步在线(需积分or工作认证)
子域名解析
https://securitytrails.com (也可查dns历史)
空间搜索ico图标
下载图标 放到fofa识别
网络空间直接搜索
https://search.censys.io censys
利用SSL证书找真实ip
使用Censys获取网站SSL证书的HASH,然后使用HASH进行搜索
获取Serial值,再放到网络空间引擎中查找
利用邮箱获取真实ip
获取后,真实性需要进一步确认
网站敏感文件
文件探针、phpinfo、网站源代码、GitHub信息泄露、js文件等
F5 LTM解码法
当服务器使用F5 LTM做负载均衡时,通过对set-cookie关键字的解码真实ip也可被获取
例如:Set-Cookie:BIGipServerpool_8.29_8030=487098378.24095.0000,先把第一小节的十进制数即487098378取出来,然后将其转为十六进制数1d08880a,接着从后至前,以此取四位数出来,也就是0a.88.08.1d,最后依次把他们转为十进制数10.136.8.29,也就是最后的真实ip
扫全网获取真实ip(不建议,容易被设黑名单) https://github.com/superfish9/hackcdn https://github.com/boy-hack/w8fuckcdn
Google Hacking
site
搜索带有相关域名的网站
site:.tw
inurl
搜索URL中带有相关内容的网页
inurl:".php?id="
静态/动态页面判断
动态页面是为实时更新的,时间会与当前时间相近
allinurl
可以指定URL中带有多个相关内容的网页
allinurl:admin.php login.php
intext
搜索正文中含有关键字的网页
intext:学号
allintext
搜索正文中含有多个关键字的网页
allintext:学号 用户名
intitle
搜索标题中含有关键字的网页
intitle:后台管理
allintitle
搜索正文中含有多个关键字的网页
allintitle:后台管理 login
filetype
指定文件类型
filetype:xls
符号配合
- 精确搜索:给关键词加上双引号实现精确匹配双引号内的字符
- 通配符:
*
必须在精确搜索符双引号内部使用。用通配符代替关键词或短语中无法确定的字词 - 点号匹配任意字符:点号
.
匹配的是匹配某个字符,不是字、短语等内容。 - 基本搜索符号约束:加号
+
用于强制搜索,即必须包含加号后的内容。一般与精确搜索符一起应用。关键词前加-
减号,要求搜索结果中包含关键词,但不包含减号后的关键词,用关于搜索结果的筛选 - 数字范围:用两个点号..表示一个数字范围。一般应用于日期、货币、尺寸、重量、高度等范围的搜索。如:手机2000..3000 元,注意“3000”与“元”之间必须有空格
- 布尔逻辑:符号
|
在多个关键字中,只要有一个关键字匹配上即可,符号&
所有的关键字都匹配上才可以
fofa相关语法
title="beijing" #从标题中搜索
header="jboss" #从http头中搜索
body="Hacked by" #从html正文中搜索
domain="qq.com" #搜索根域名为qq.com的资产
host=".gov.cn" #从ur1中搜索指定关键字
port="443" #查找相应端口的资产
ip="1.1.1.1" #搜索指定ip
ip="220.181.111.1/24" #查询C段资产
orotocol="https" #搜索指定协议类型
icon_hash="713581487" #指定网站图标搜索相关资产
city="Hangzhou" #搜索指定城市的资产
region="zhejiang" #搜索指定行政区的资产
country="CN" #搜索指定国家(编码)的资产
cert="google" #搜索证书(https或者imaps等)中带有google的资产
server=="Microsoft-IIS/7.5" #搜索IIS 7.5服务器
app="HIKVISION-视频监控" #搜索指定指纹资产(海康威视设备)
domain="xxx" && status_code="200" #搜索指定网站状态码为200的资产
cert="hzvtc.edu.cn" #搜索证书中包含指定关键字的资产
cert="62915681758986821938903689415000632430" #搜索证书序列号
查找log4j漏洞相关组件信息
app="APACHE-ActiveMQ"
app="Jenkins"
app="RabbitMQ"
app="Apache-log4j2-Web"
app="Jedis"
app="Apache_OFBiz"
app="APACHE-tika"
app="泛微-协同办公OA"
app="致远互联-FE"
app="jeewms"
app="APACHE-Skywalking"
app="Struts2"
app="APACHE-Shiro"
app="JEECMS"
app="JeeSite"
app="APACHE-dubbo"
app="OPENCms"
app="JEECG"
app="Jeeplus"
app="MyBatis"
app="vmware-SpringBoot-Framework"
app="APACHE-Solr"
app="Map/Reduce"
app="CLOUDERA-Hadoop-Hue"
app="splunk-日志分析"
app="vmware-vCenter"
app="APACHE-Storm"
app="APACHE-Druid"
app="JavaMelody"
app="openNMS-产品"
app="APACHE-Unomi"
app="ECLIPSE-jetty"
app="elastic-Elasticsearch"
app="RedHat-Jboss"
app="Openfire"
app="Oracle-BEA-WebLogic-Server"
app="Oracle-Weblogic_interface_7001"
app="Oracle-BI-Publisher-Enterprise"
app="vmware-vSphere-Web-Client"
app="RedHat-JBoss-AS"
..........
一些有趣的搜索语句
Shadow/soc/ks-Manager登录界面:
body="indeterminate" && body="MainController" && header="X-Powered-By: Express"
供暖监控系统:
body="s1v13.htm"
body="admin" server="tomcat"
获取免费的代理池:
body="get all proxy from proxy pool"
body="miner start"
一些蜜罐:
(header="uc-httpd 1.0.0" && server="JBoss-5.0") || server="Apache,Tomcat,Jboss,weblogic,phpstudy,struts"
阿里云某网段Webshell:
body="webshell -> http://{ip}:{port}/?cmd=ifconfig"
未授权访问摄像头:
app="webcamXP"
疫情监控防控系统:
title="疫情" &&(title="防控"||title="监控") && country="CN"
此语法可以查询到被挂黑的站点,紧张刺激:
body="hacked by"
GitHub域名接管:
title="Site not found · GitHub Pages" && server=="cloudflare"
这是一个批量上传的webshell,使用密码"r00ts"即可登录,这些目录中还会包含大量的批量上传的木马文件,可供大家进行研究分析:
body="x.aspx" && body="asp"
各种机场登录注册:
body="UA-111801619-3"
搜索邮件配置文件:
body="intitle:"index of" squirrelmail/"
批量上传的一句话后门,某些后门密码比较简单,并且密码都一样。这些服务器都有一定的漏洞,比如IIS上传等,并且以企业测试服务器居多,可能包含企业内部数据,并且可以成为跳板进入企业内部网络:
body="asp;.jpg"
能搜到很多html中明文显示的用户名密码的:
body="admin" && body="123456" && title="登录"
识别cobalt strike服务器,cobalt strike C/S架构的商业渗透软件,适合多人进行团队协作,可模拟APT做模拟对抗,进行内网渗透,是当前比较热门的一款C2软件,无论是红蓝对抗(HW),还是应急响应中,快速识别C2服务器是重要的工作之一:
header="HTTP/1.1 404 Not Found Content-Type: text/plain Date:"||protocol="cobaltstrike"||cert="Serial Number: 146473198"
app="Canon-网络摄像头"
密码文件:
(body="password.txt" || body="密码.txt") && title="index of"
ss机场框架:
body="SSPanel-Uim"
私服GM管理后台 一般都有默认密码,数据库弱口令,或者后门,注入:
title="GM管理后台" title="传奇后台" body="GM校验码"
xray扫描结果:
title="X-Ray Report" || body="Powered by xray"
vulscan 扫描框架:
title="vulscan"
body="选择区服" && body="充值" && body="后台"
机场【科学——上网】:
body="<a href= "staff">STAFF</a >" && body="<a href="tos">"
各种指挥系统的登录后台:
body="<a href= "staff">STAFF</a >" && body="<a href="tos">"
title="指挥" && title="登录"
查看看别人家搭建的蜜罐捕获攻击情况,红色的为攻击者,黄色的为蜜罐部署位置,看看哪个国家的肉鸡多~:
body="img/mhn_logo.png" && body="world-map"
社工库:
title=="社工库" || ((title="社工库" && title="系统") ||(title=="社工库查询" ))
该后台为逆苍穹游戏私服运营管理后台,如果存在/action/api_show.php该文件 则密码为value的一句话木马后门:
body="网站管理员登陆" && port="8090"
此语句搜索源代码等文件,可以修改rar部分,搜索自己需要的内容,也可根据文件类型进行筛选:
title="Index of" && body="rar"
未授权的摄像头:
title="webcam 7" && body="Live View"
另类查找九安监控:
port="600001" && body="login_chk_usr_pwd"
路由设备登陆界面:
title=="欢迎使用RippleOS"
该语法可直接访问到任意使用python3.6.3、3.6.8、3.7.X搭建的简易服务器,然后可以直接访问甚至下载其服务器所有展示内容(毕设Demo、内部测试Demo、源码测试、电影图片XX、相册...):
(server="SimpleHTTP/0.6 Python/3.6.3" || server="SimpleHTTP/0.6 Python/3.6.8" || server="SimpleHTTP/0.6 Python/3.7.0" || server="SimpleHTTP/0.6 Python/3.7.1" || server="SimpleHTTP/0.6 Python/3.7.2" || server="SimpleHTTP/0.6 Python/3.7.3" || server="SimpleHTTP/0.6 Python/3.7.4" || server="SimpleHTTP/0.6 Python/3.7.5" || server="SimpleHTTP/0.6 Python/3.7.6") && title="Directory listing for"
也许是用户量最大的xss系统:
body="tmp_downloadhelper_iframe" && body="mr_15"
关于情报中心的网站内容:
title="情报中心"
weblogic:
port="7001" && app="Weblogic_interface_7001"
不用FQ的Google:
body= "var c =Array.prototype.slice.call(arguments,1):return function() {var d=c.slice();"
未授权burp:
title="Burp Suite" && body="Proxy History"
文件上传接口:
body="method=\"post\" enctype=\"multipart/form-data\"" && body="<input type=\"file\""
多人运动:
protocol="beacon" || protocol="cobaltstrike"
thinkphp:
header="thinkphp"
开放的python服务:
server="SimpleHTTP" && title="Directory listing for"
vue组件:
body="<strong>We're sorry but mas-creator-admin doesn't work properly without JavaScript"
资产收集工具
Goby
ARL资产灯塔系统
使用docker进行部署
git clone https://github.com/TophantTechnology/ARL
cd ARL/docker/
docker volume create arl_db //创建数据卷(volume的目的是能够保存(持久化)数据以及共享容器间的数据)
docker-compose pull //拉取内容
docker-compose up -d //后台运行容器
移动端信息收集
ApplnfoScanner 移动端信息收集扫描工具(Android、iOS、WEB、H5、静态网站)