渗透测试之信息收集:这些技巧决定了渗透成败
渗透测试之信息收集这些技巧决定了渗透成败作者浅木·先生前言做渗透测试久了你会越来越认同一个观点信息收集的质量直接决定渗透测试的成败。同样的目标URL不同人扫出来的结果完全不同——有人只能扫出后台登录页有人却能通过旁站拿下同服务器的其他项目。有人对着主站无可奈何有人通过子域名发现了测试环境直接弱口令进后台。这不是工具的差距而是信息收集思路和深度的差距。本文系统性地梳理渗透测试信息收集的全部技巧涵盖域名、端口、目录、指纹、社工等多个维度帮你做到打谁都有东西打。一、资产发现从目标域名开始1.1 域名基础信息收集拿到目标URL后第一步是查清楚这个域名的底细# whois查询注册人、注册邮箱、NS服务器、到期时间whois target.com# whois反查同一个注册人还注册了哪些域名扩大攻击面whois-hwhois.verisign.com$ domain target.com# 真实IP判断是否使用CDN/WAFnslookuptarget.comdigtarget.com 在线检测https://www.ipaddresscenter.com/# CDN检测# 如果多个地点ping出来的IP不同说明有CDN直接打CDN IP通常没意义实战技巧如果目标用了CDN可以尝试通过子域名查真实IPCDN一般只给主站配通过邮件Spoofing查真实IP通过国外DNS服务器查询dig 8.8.8.8 target.com1.2 子域名探测子域名是扩大攻击面的利器。主站防护再好测试站往往漏洞一堆。# 被动收集快不发请求到目标amass enum-passive-dtarget.com-osubdomains.txt subfinder-dtarget.com-osubdomains.txt# 主动爆破全需要自己搭建字典python3 sublist3r.py-dtarget.com-t10-osubdomains.txt# 或者使用oneforallpython3 oneforall.py--domaintarget.com run# 在线平台免搭建https://dnsgrep.cn/ https://www.virustotal.com/ https://crt.sh/真实案例某次给某大型企业做渗透测试主站是www.company.com扫描了几天没收获。后来通过子域名探测发现dev.company.com开发者测试平台用的是Django框架Debug模式没关通过报错信息直接找到了数据库密码和管理员后台。1.3 旁站与同IP查询# 查同IP网站旁站https://www.yougetsignal.com/ 输入IP查同服务器网站 http://www.bypass.cn/sameip?domaintarget.com# Bing查旁站bing search: ip:server_ip核心思路一个服务器经常托管多个项目旁站的安全投入往往比主站弱很多。拿下旁站 拿下同服务器主站的潜在入口。二、端口探测开放端口就是攻击面2.1 高危端口快速定位# nmap快速扫描常用高危端口nmap-T4-sV--open-p21,22,23,25,80,443,445,1433,1521,3306,3389,5432,6379,8080,8443,27017 target.com# 全端口扫描需要更长时间nmap-T4-sV-p1-65535--opentarget.com# SYN半连接扫描快隐蔽nmap-sS-T4-p1-65535 target.com2.2 常见高危端口与服务对应关系端口服务风险利用方式21FTP匿名访问、弱口令爆破/匿名登录文件读写22SSH弱口令爆破/密钥登录23Telnet明文传输中间人窃取密码445SMBMS17-010永恒之蓝直接RCE1433MSSQL弱口令爆破xp_cmdshell提权3306MySQL弱口令爆破直接读写文件3389RDP弱口令/CVE爆破CVE-2019-07085432PostgreSQL弱口令爆破UDF提权6379Redis未授权写Webshell/计划任务8080Tomcat/Glassfish弱口令/文件上传后台getshell9200Elasticsearch未授权任意命令执行27017MongoDB未授权直接连接读数据2.3 端口服务版本识别# 服务版本识别nmap-sV-sCtarget.com-p445,3389,8080# 漏洞脚本扫描根据版本匹配CVEnmap--scriptvuln target.com-p445三、Web指纹识别知己知彼3.1 中间件与CMS指纹# whatweb识别Web服务器、编程语言、CMS类型whatweb-a3https://target.com# Wappalyzer浏览器插件被动识别# 手工判断技巧# - 报错页面Tomcat / JBoss / Weblogic各有特色报错# - HTTP头X-Powered-By / Server / Via# - HTML源码注释WordPress会留wp-content路径# - URL路径特征/wp-admin/ /admin/ /manage/3.2 指纹识别结果的应用识别出中间件后对应关系如下中间件高危漏洞常用入口TomcatCVE-2020-1938AJP文件包含、弱口令后台/manager/htmlWeblogicCVE-2014-4210SSRF、CVE-2017-3506反序列化/consoleJBossCVE-2017-12149反序列化/invokerApache ShiroCVE-2016-4437反序列化Cookie rememberMeSpringCVE-2018-1273CVE-2022-22965/function executorStruts2S2-045/S2-057参数OGNL表达式四、敏感目录与文件探测4.1 目录扫描工具与使用# dirsearchPython主流python3 dirsearch.py-uhttps://target.com-ephp,html,js-t20-w/usr/share/wordlists/dirb/common.txt# feroxbusterRust快速支持递归feroxbuster-uhttps://target.com-xphp,html-t20# gobuster支持DNS子域名爆破gobusterdir-uhttps://target.com-w/usr/share/wordlists/dirb/common.txt-xphp,html# 御剑目录扫描Windows GUI适合新手4.2 敏感文件检查清单文件/目录风险等级说明/robots.txt中爬虫规则往往暴露敏感路径/crossdomain.xml低Flash跨域策略配置错误/sitemap.xml低网站结构信息泄露/.git/高Git源码泄露用git-dumper拉取/.svn/高SVN源码泄露/.DS_Store中Mac文件泄露目录结构/backup//bak/高备份文件可直接下载/uploads/高上传目录可能有webshell/phpmyadmin/高数据库管理入口弱口令/admin//manage/高后台管理入口/api//v1/中API文档可能有未授权接口/swagger//apidoc/中API文档泄露接口信息4.3 Git源码泄露利用# 使用git-dumper下载源码git-dumper https://target.com/.git/ /tmp/target_source# 如果Git目录可写可能直接通过git hooks拿shell# 找到.git/hooks目录写入后门五、社工信息收集人是最薄弱的环节5.1 邮箱与人员信息# hunter.io查公司邮箱格式和组织架构https://hunter.io/ 搜索公司名 → 得到邮箱命名规则first.lastcompany.com# 邮箱反查泄露密码# 在 https://haveibeenpwned.com/ 查邮箱是否在泄露库中# linkedin/脉脉查员工信息# 常用ID、社群、真实姓名 → 生成密码字典密码复用攻击统计显示超过60%的人在不同平台使用相同密码。拿到一个平台的密码很可能就是另一个平台的入口。5.2 密码字典构建社工字典是针对特定目标量身定制的密码字典# 使用cupp生成社工字典python3 cupp.py-i# 输入目标姓名、生日、手机、宠物名、公司名等信息# 自动生成针对性密码字典# 常用社工密码规则# 公司名年份company123# 姓名生日lisi19900101# 姓名手机号zhangwei138xxxx# 键盘走位1qazWSX5.3 钓鱼信息准备社工的另一层应用是钓鱼攻击邮件钓鱼通过hunter.io拿到邮箱格式后伪造内部邮件发钓鱼链接水坑攻击发现员工常访问的第三方网站在那里植入恶意代码短信钓鱼通过名字手机号定向发钓鱼短信注意社会工程学攻击在授权渗透测试中需要特别说明是否在测试范围内。六、自动化信息收集框架6.1 Oneforall集成化收集# OneForAll一站式资产收集python3 oneforall.py--targettarget.com run# 结果会保存在 results/target.com.csv# 包含子域名、端口、旁站、邮箱等所有信息6.2 Kunyu伏羲工具# 视图空间测绘平台自动化收集互联网资产python3 konrun.py-kcompany_name# 支持子域名、IP、端口、指纹、备案信息等6.3 手动信息收集检查清单完成信息收集后建议整理成如下表格类别收集内容域名信息真实IP、注册人、邮箱、到期时间子域名列表重点关注dev/test/staging环境旁站同IP网站评估服务器共用风险端口高危端口及对应服务版本指纹中间件、CMS、编程语言目录敏感文件.git、.svn、backup、admin社工邮箱格式、员工ID、密码规则七、信息收集后的利用思路7.1 根据指纹选择漏洞利用方向识别结果优先测试漏洞WordPress插件漏洞、主题漏洞、xmlrpc.phpThinkPHPRoute路径、RCE漏洞Struts2S2-045/S2-057Apache Shiro反序列化SpringCVE-2022-22965Tomcat弱口令后台、war包部署WeblogicSSRF 反序列化利用链7.2 根据端口选择横向方向端口开放情况可利用路径22开放SSH弱口令/密钥复用445开放MS17-010横向3389开放RDP爆破/CVE-2019-07083306开放MySQL弱口令写入文件getshell6379开放Redis未授权写计划任务/SSH密钥总结信息收集不是扫一扫那么简单它是一套系统化的目标侦察方法论资产发现域名 → 子域名 → 旁站 → 同IP → 扩大攻击面端口扫描高频端口 → 版本识别 → 漏洞匹配指纹识别中间件 → CMS → 已知漏洞对应目录探测敏感文件 → 源码泄露 → 后台入口社工收集邮箱 → 人员 → 密码规则 → 密码复用信息收集做得越细后续漏洞利用就越顺利。下篇文章我会讲漏洞探测和利用的系统化思路敬请期待。关于作者作者长期从事网络安全技术研究与实践主要涵盖Web安全、渗透测试、内网渗透等领域。如果你觉得这篇文章有帮助欢迎收藏。需要进一步交流的同学私信专栏会持续更新。同时也有付费版的知识星球可供直接下载工具与源码可以搜索 软件测试成长圈