章节1:信息收集
1 信息收集概览
01 为什么要做信息收集?
渗透测试的流程
确定目标
信息收集
漏洞扫描
漏洞利用
形成报告
信息收集包括的内容
域名信息、IP段、开放的端口、网站架构、文件目录结构、软件版本、WAF、旁站、C段…
分类
- 域名相关信息
- IP相关信息
- 端口服务相关信息
- 指纹识别
- Google Hacking
- 目录信息
- Git Hack
学习框架
- 这种信息是什么?
- 怎么收集这种信息?
- 收集这种信息有什么用?
2 域名信息收集-上
01 域名(Domian Name)是什么?
IP
域名的分类
国际域名:.com(商业公司);.net(网络服务);.org(组织协会等);.gov(政府部门);.edu(教育机构);.mil(军事领域);.int(国际组织)
国别域名:.CN代表中国,.UK代表英国,.US代表美国
新顶级域名:biz, info, name, pro, aero, coop, museum…
域名与IP(DNS Domain Name Server)
域名联系人信息
所属人、邮箱、电话、地址…
02 whois查询
whois
.com由域名运营商VeriSign管理
cn域名由CNNIC管理
https://wanwang.aliyun.com/
https://whois.chinaz.com/
http://whoissoft.com/
https://webwhois.cnnic.cn/WelcomeServlet
whois工具
https://whois.chinaz.com
http://whoissoft.com
https://whois.cnnic.cn/WelcomeServlet
kali whois命令
域名反查
http://whois.chinaz.com/reverse
https://mwhois.chinaz.com/
03 ICP备案查询
备案信息
备案流程
https://help.aliyun.com/document_detail/61819.html
https://beian.miit.gov.cn/#/Integrated/index
https://icp.chinaz.com/
https://www.beian88.com/
https://www.tianyancha.com/
域名:联系人:姓名、邮箱、手机号
反查:更多的域名
主要的产品、主站:安全级别最高
3 域名信息收集-下
04 子域名信息
子域名的作用?
百度搜索 www.baidu.com
百度新闻(news.baidu.com)、百度地图、百度贴吧、百度文库
怎么查询子域名?
- 字典猜解
- 枚举
https://phpinfo.me/domain/
https://github.com/lijiejie/subDomainsBrute(在kali中运行)
05 域名解析信息
域名解析信息
https://www.dnspod.com/
https://www.dnspod.cn/
@:代表所有的地址
www:代表特殊的子域名
在上图中,IP是有用信息,邮箱服务器可能会在渗透测试中用到。
记录类型
A A记录是最常用类型,将域名指向一个 IPv4 地址,如 8.8.8.8
CNAME 将域名指向另一个域名地址,与其保持相同解析,如 https://www/dnspod.cn
z.cn跳转到amazon.cn
g.cn跳转到www.google.cn
MX 用于邮件服务器,相关参数一般由邮件注册商提供
腾讯企业邮箱
企业邮箱 wuya@xxxx.com
校园邮箱
TXT 可填写附加文本信息,常用于域名验证
NS 域名服务器记录,可将指定域名交由其他 DNS 服务商解析管理
AAAA 将域名指向一个 IPv6 地址,如ff06:0:0:0:0:0:0:c3
http://dbcha.com/
https://sitereport.netcraft.com/
http://www.jsons.cn/nslookup/
(不推荐使用)
4 IP信息
01 DNS服务器的类型
DNS解析流程
https://console.dnspod.cn/dns/
02 ping / nslookup
Ping
Packet Internet Groper
因特网包探索器
nslookup
nslookup -type=“MX” baidu.com
03 IP归属
IP归属
https://ipwhois.cnnic.net.cn/
https://www.ip138.com/
04 如何获取CDN背后的真实IP
CDN
Content Delivery Network
内容分发网络
没有CDN
使用CDN服务
常见CDN服务商(简单了解)
CloudFlare/CloudFront…
帝联/蓝讯/网宿/七牛云/腾讯/百度/阿里云(市场占有率最高)…
实现流程(阿里云为例)
https://www.zhihu.com/question/36514327/answer/1604554133
- 当终端用户(北京)向www.a.com下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。
- LDNS检查缓存中是否有www.a.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。
- 当授权DNS解析www.a.com时,返回域名CNAME www.a.tbcdn.com对应IP地址。
- 域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。
- LDNS获取DNS返回的解析IP地址。
- 用户获取解析IP地址。
- 用户向获取的IP地址发起对该资源的访问请求。
如何找出真实IP
如何获取CDN背后的真实IP
-
超级ping
https://ping.chinaz.com/
-
历史DNS
https://dnshistory.org/
https://sitereport.netcraft.com/
https://tools.ipip.net/cdn.php
-
通过子域名查询IP
-
国外主机解析
https://www.host-tracker.com/en
https://www.webpagetest.org/
https://dnscheck.pingdom.com/
-
其他,比如邮件、SSL证书、手机APP抓包、网络空间搜索引擎等
邮件
国外访问
https://www.host-tracker.com/en
https://www.webpagetest.org/
https://dnscheck.pingdom.com/
5 端口服务信息
01 端口扫描思路和代码实现
查看本机端口信息
Windows
netstat -ano|findstr 3306
Linux
netstat -an|grep 3306
远程机器端口
telnet ip 80
wget ip 80
nc -vz ip 445(或一个端口范围)
-z:只是去扫描一个侦听守护的进程,而不会实际向他们发送数据。
# wscan.py
import socket, threading
def TCP_connect(ip, port_number, delay, output):
TCPsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
TCPsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
TCPsock.settimeout(delay)
try:
TCPsock.connect((ip, port_number))
output[port_number] = 'Listening'
except:
output[port_number] = ''
def scan_ports(host_ip, delay):
threads = [] # To run TCP_connect concurrently
output = {} # For print purposes
# Spawning threads to scan ports
# 先扫描10000个端口
for i in range(10000):
t = threading.Thread(target=TCP_connect, args=(host_ip, i, delay, output))
threads.append(t)
# Starting threads
for i in range(10000):
threads[i].start()
# Locking the script until all threads complete
for i in range(10000):
threads[i].join()
# Printing listening ports from small to large
for i in range(10000):
if output[i] == 'Listening':
print(str(i) + ': ' + output[i])
def main():
host_ip = input("Please enter host IP: ")
# 超时抛出异常
delay = int(input("How many seconds the socket is going to wait until timeout: "))
scan_ports(host_ip, delay)
input("Press Any Key to Exit")
if __name__ == "__main__":
main()
02 常见端口及漏洞
常见端口
https://nsrc.org/workshops/2009/summer/presentations/day3/common-ports.pdf
分类
- 文件共享服务
- 远程连接服务
- Web应用服务
- 数据库服务
- 邮件服务
- 网络常见协议
- 其他服务端口
文件共享服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
21/22/69 | FTP/SFTP文件传输协议 | 允许匿名上传、下载、爆破和嗅探操作 |
2049 | NFS服务(Network File System) | 配置不当 |
139 | Samba服务 | 爆破、未授权访问、远程代码和执行 |
389 | LDAP目录访问协议 | 注入、允许匿名访问、弱口令 |
远程连接服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
22 | SSH远程连接 | 爆破、SSH隧道及内网代理转发、文件传输 |
23 | Telnet远程连接 | 爆破、嗅探、弱口令 |
3389 | RDP远程桌面连接 | Shift后门(Windows Server2003以下的系统)、爆破 |
5900 | VNC | 弱口令爆破 |
5632 | PcAnywhere远程控制服务 | 抓密码、代码执行 |
web应用服务端口(漏洞较多)
端口号 | 端口说明 | 攻击方向 |
---|---|---|
80/443/8080 | 常见的web服务端口(80:默认的http端口号;443:https协议的端口号;8080:Tomcat默认的端口号) | Web攻击、爆破、对应服务器版本漏洞 |
7001/7002 | Weblogic控制台 | Java反序列化、弱口令 |
8080/8089 | Jboss/resin/jetty/Jenkins | 反序列化、控制台弱口令 |
9090 | Websphere控制台 | Java反序列化、弱口令 |
4848 | Glassfish控制台 | 弱口令 |
1352 | Lotus domino邮件服务 | 弱口令、信息泄露、、爆破 |
10000 | Webmin-web控制面板 | 弱口令 |
数据库服务端口
端口号 | 端口说明 | 攻击方向 |
---|---|---|
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 | Linux Rexec服务 | 爆破、rlogin登录 |
873 | Rsync服务 | 匿名访问、文件上传 |
3690 | SVN服务 | SVN泄露、未授权访问 |
50000 | SAP Management Console | 远程执行 |
03 端口扫描工具
Nmap
Nmap(Network Mapper)
https://nmap.org/
1)扫描主机(Host Discovery)
2)扫描端口(Port Scanning)
3)探测操作系统、软件版本(Operating System Detection、Version Detection)
参数类型
namp --help
- TARGET SPECIFICATION:目标,对什么进行扫描,比如是域名、IP或者网络
- HOST DISCOVERY:主机发现,怎么对主机进行扫描,比如简单扫描,还是全部扫一遍,或者用相应的协议扫
- SCAN TECHNIQUES:扫描技术,协议的设置
- PORT SPECIFICATION AND SCAN ORDER:端口和扫描顺序设置
- SERVICE/VERSION Detection:服务和版本识别
- SCRIPT SCAN:使用脚本,namp本身内置了大量的lua版本,而且还可以自己编写脚本
- OS Detection:操作系统识别
- TIMING AND PERFORMANCE:时间和性能设置,比如扫描频率、重试次数等等
- FIREWALL/IDS EVASION AND SPOOFING:防火墙绕过和欺骗,比如使用代理,假IP等
- OUTPUT:把扫描接出输出到文件
- MISC:启用IPv6等等配置
脚本
nmap本身内置了大量的lua版本,而且还可以自己编写脚本
ls /usr/share/namp/scripts/ | wc -l
全部清单:https://nmap.org/nsedoc/index.html
例如:
nmap ip --script http-enum 列举HTTP服务
nmap --script=auth 绕过鉴权
nmap --script=brute 暴力破解
nmap --script=vuln 扫描漏洞
安装metasploitable2 Linux靶机
导入VM
默认用户名密码
msfadmin/msfadmin
修改root密码:
sudo passwd root
使用示例
nmap ip # metasploitable2 Linux
nmap testfire.net # IBM的一个靶场
http://testfire.net/
常用参数
简单扫描
nmap -sP ip
指定端口或范围扫描:
nmap -p0-65535 ip
探测操作系统:
nmap -O ip
只进行主机发现,不进行端口扫描
nmap -sn ip/24
IP后面的 /24是什么意思?
掩码的位数。
子网掩码8位,11111111.00000000.00000000.00000000 代表:
255.0.0.0(A类IP地址)
子网掩码16位,
11111111.11111111.00000000.00000000 代表:
255.255.0.0(B类IP地址)
子网掩码24位,
11111111.11111111.11111111.00000000 代表:
255.255.255.0(C类IP地址)
旁站:和目标网站在同一台服务器但端口不同的其他网站。
C段:和目标服务器IP在同一个C段的其他服务器。
Zenmap
第一种:Intense scan
第二种:Intense scan plus UDP
第三种:Intense scan,all TCP ports
第四种:Intense scan,no ping
第五种:Ping scan
第六种:Quick scan
第七种:Quick scan plus
第八种:Quick traceroute
第九种:Regular scan
第十种:Slow comprehensive scan
其他扫描工具
在线扫描
http://coolaf.com/tool/port
masscan、nbtscan…
6 CMS指纹识别
01 什么是指纹识别?
什么是指纹识别?
通过关键特征,识别出目标的CMS系统、服务器、开发语言、操作系统、CDN、WAF的类别版本等等
识别对象
- CMS信息:比如Discuz、织梦、帝国CMS、PHPCMS、ESshop等;
- 前端技术:比如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,如cloudfare、帝联、蓝讯、网宿、七牛云、阿里云等;
- WAF信息:是否使用WAF,如D盾、云锁、宝塔、安全狗、360等
02 CMS指纹识别
CMS怎么来的?
内容管理系统
Content Management System
如果你要建一个论坛……
CMS包括什么?
博客(比如CSDN、博客园)、微博、团购网站、导航网站(hao123)、信息分类(58)、问答网站(知乎)、商城、百科……
企业官网、学校官网、医院官网……
主流(开源)CMS
各类网站开源CMS
-
企业建站系统:MetInfo(米拓)、蝉知、SiteServer CMS等;
-
B2C商城系统:商派Shopex、ECshop、HiShop、Xpshop等;
-
门户建站系统:DedeCMS(织梦)、帝国CMS、PHPCMS、动易、CmsTop等;
-
博客系统:WordPress、Z-Blog等;
-
论坛社区:Discuz、PHPwind、WeCenter等;
-
问答系统:Tipask、whatsns等;
-
知识百科系统:HDwiki;
https://zh.moegirl.org.cn/Mainpage
-
B2B门户系统:Destoon、B2Bbuilder、友邻B2B等;
-
人才招聘网站系统:骑士CMS、PHP云人才管理系统;
-
房产网站系统:FangCms等;
-
在线教育建站系统:Kesion、EduSoho;
-
电影网站系统:苹果CMS、ctcms、movcms等;
-
小说文学建站系统:杰奇CMS;
03 CMS识别思路
CMS指纹识别思路
版权信息(大部分会去掉)
特定文件MD5值
(对上图的小图标判断MD5值是否等于原开源建站网站)
https://github.com/Lucifer1993/cmsprint
查看网页源代码
通过特定文件分析
……
04 CMS识别工具
kali自带工具
whatweb
浏览器插件
Wappalyzer:https://www.wappalyzer.com
whatruns:https://www.whatruns.com/
在线网站
http://whatweb.bugscaner.com
http://finger.tidesec.com/
离线工具
御剑指纹扫描器(需要.NET Framework)
Test404轻量CMS指纹识别 v2.1
其他开源程序
https://github.com/Tuhinshubhra/CMSeeK
7 CDN指纹识别
01 CDN指纹识别思路
如何获取CDN背后的真实IP
-
超级ping
-
历史DNS
-
通过子域名查询IP
-
国外主机解析
-
其他
CDN如何配置?
https://help.aliyun.com/document_detail/27144.html
通过DNS解析记录的CNAME解析到CDN服务器
02 CDN指纹识别工具
常规
ping
nslookup
超级ping
https://ping.chinaz.com/
ldb(load balance detector)
专用工具
国内:
http://cdn.chinaz.com/
国外:
https://www.cdnplanet.com/tools/cdnfinder/
脚本:
https://github.com/boy-hack/w8fuckcdn/
https://github.com/3xp10it/xcdn
8 WAF指纹识别
01 什么是WAF
什么是WAF
Web Application Firewall
Web 应用防火墙
过滤HTTP/HTTPS的请求
WAF的作用
http://modsecurity.cn/
- SQL Injection (SQLi):阻止SQL注入
- Cross Site Scripting (XSS):阻止跨站脚本攻击
- Local File Inclusion (LFI):阻止利用本地文件包含漏洞进行攻击
- Remote File Inclusione(RFI):阻止利用远程文件包含漏洞进行攻击
- Remote Code Execution (RCE):阻止利用远程命令执行漏洞进行攻击
- PHP Code Injectiod:阻止PHP代码注入
- HTTP Protocol Violations:阻止违反HTTP协议的恶意访问
- HTTPoxy:阻止利用远程代理感染漏洞进行攻击
- Sshllshock:阻止利用Shellshock漏洞进行攻击
- Session Fixation:阻止利用Session会话ID不变的漏洞进行攻击
- Scanner Detection:阻止黑客扫描网站
- Metadata/Error Leakages:阻止源代码/错误信息泄露
- Project Honey Pot Blacklist:蜜罐项目黑名单
- GeoIP Country Blocking:根据判断IP地址归属地来进行IP阻断
WAF分类
- 硬件型WAF(产商安装)
- 云WAF(阿里云、腾讯云、华为云……)
- 软件型WAF(部署在Apache、Nginx等HTTP Server中)
02 常见WAF产商
WAF产商
各种云:阿里云、腾讯云、华为云、百度云……
安全狗、宝塔、360、知道创宇、长亭、安恒……
宝塔
安全狗
腾讯云
阿里云
03 WAF指纹识别思路
识别思路
额外的cookie;
任何响应或请求的附加标头;
响应内容(如果被阻止请求);
响应代码(如果被阻止请求);
IP地址(云WAF);
JS客户端模块(客户端WAF)
https://github.com/0xInfection/Awesome-WAF
如何触发拦截?
xsstring = '<script>alert("XSS");</script>'
sqlistring = "UNION SELECT ALL FROM information_schema AND 'or' SLEEP(5) or '"
lfistring = '../../../etc/passwd'
rcestring = 'bin/cat /etc/passwd; ping 127.0.0.1; curl google.com'
xxestring = '<!ENTITY xxe STSTEM "file:///etc/shadow">]><pwn>$hack;</pwn>'
指纹库
https://github.com/CSecGroup/wafid/blob/master/finger.xml
04 WAF指纹识别工具
工具
Kali自带:
https://github.com/EnableSecurity/wafw00f
用法:wafw00f https://www.12306.cn
nmap www.12306.cn --script=http-waf-detect.nse
sqlmap -u “xxx.com?id=1” --identify-waf
其他:
https://github.com/0xInfection/Awesome-WAF
9 搜索引擎收集信息
搜索引擎
01 Google Hacking
来源
2002年
Johnny Long
https://www.google.com.hk/advanced_search?q=burp+suite&sxsrf=AJOqlzWGfmoREu3NjJmGlN2RlbMFIFrM3w:1674560029591&hl=zh-CN
语法数据库
https://www.exploit-db.com/google-hacking-database(没必要去记,用时找即可)
https://github.com/BullsEye0/google_dork_list
工具
https://github.com/m3n0sd0n4ld/uDork
10 网络空间搜索引擎-上
11 网络空间搜索引擎-中
02 Shodan
Shodan
“When people don’t see stuff on Google, they think no one can find it. That’s not true."
——Jonh Matherly (Schodar创始人:约翰·玛瑟利)
https://www.shodan.io/dashboard
tomcat coutry: “CN”
apache city: “Changsha”
server: gws hostname: “google”
Server: Hikvision-Webs country: “CN”
12 网络空间搜索引擎-下
03 Censys
https://search.censys.io/
https://www.zoomeye.org/
https://en.fofa.info/
13 目录扫描-上
01 什么是目录扫描
14 目录扫描-中
03 常见敏感目录和文件
https://github.com/lijiejie/ds_store_exp
https://github.com/BlackFan/WEB-INF-dict/blob/master/web-inf.txt
15 目录扫描-下
04 文件扫描思路
16 Git信息收集-上
01 什么是版本控制系统
17 Git信息收集-中
02 Git工作区划分
18 Git信息收集-下
04 Git信息泄露利用方式
经本人实验,命令中的python应该为python2。
19 信息收集总结
笔记见https://download.csdn.net/download/weixin_43909650/87806486