子域名劫持是一种严重的安全漏洞,攻击者通过利用 DNS 设置中的错误配置来接管子域名。这类攻击可能导致钓鱼攻击、数据泄露或恶意跳转,对目标组织的声誉和安全性造成重大影响。对于渗透测试人员和漏洞赏金猎人而言,子域名劫持是一项高价值的技能。本文将通过实用技术、多样工具和真实案例,带你一步步了解如何识别与利用子域名劫持漏洞。
什么是子域名劫持?
子域名劫持发生在子域名指向外部服务(如 GitHub Pages、AWS S3、Heroku 等)时,但外部服务未正确配置。尽管 DNS 记录仍然存在,但其所指向的资源已被删除或未被占用,从而使子域名暴露在被劫持的风险中。
为什么子域名劫持很危险?
-
钓鱼攻击:攻击者可以冒充可信域名,诱骗用户泄露敏感信息。 -
网页篡改:攻击者可在受害子域名上托管恶意内容,损害组织声誉。 -
子域名信任劫持:由于子域名属于可信域名的一部分,可能绕过安全过滤机制,增加攻击的可信度。
子域名劫持的完整操作指南
第一步:枚举子域名
发现目标的子域名是劫持的第一步。子域名枚举可以帮助我们收集潜在易受攻击的子域名列表。
工具与命令:
-
Subfinder
subfinder -d target.com -o subdomains.txt
Subfinder 是一款优秀的被动子域名枚举工具,从公开数据源中提取子域名。
-
Amass
amass enum -d target.com -o subdomains_amass.txt
Amass 支持主动与被动枚举,能够生成全面的子域名列表。
解析:
Subfinder 和 Amass 能快速收集子域名,特别是那些指向第三方服务的子域名,为漏洞评估提供良好的起点。
第二步:识别易受攻击的子域名
收集子域名后,下一步是检查是否存在可被劫持的子域名。通常,这些子域名指向的云服务(如 AWS、GitHub Pages、Heroku 等)已被删除或未被认领。
工具与命令:
-
HTTP 探测(httprobe)
cat subdomains.txt | httprobe > live_subdomains.txt
检查哪些子域名返回有效的 HTTP 响应,过滤出活跃的子域名。
-
查询 CNAME 记录(dig)
dig CNAME subdomain.target.com
CNAME 记录可帮助识别子域名是否指向第三方服务,如 GitHub、AWS 或 Heroku。
判断依据:
如果 CNAME 记录指向某服务(例如 github.io
),但访问子域名时返回 404 或默认错误页面,则该子域名可能存在劫持风险。
第三步:利用漏洞
一旦确认子域名易受攻击,下一步就是认领资源并进行利用。
常见易受攻击的服务及操作:
-
GitHub Pages
如果子域名指向 GitHub Pages(如username.github.io
),但对应的仓库不存在,可以创建一个同名仓库并接管该子域名:
git init
git remote add origin https://github.com/username/target-repo.git
echo"Subdomain takeover!" > index.html
git add .
git commit -m "Initial commit"
git push origin master
-
AWS S3 存储桶
如果子域名指向 S3 存储桶(如bucket-name.s3.amazonaws.com
),但存储桶未被占用,可以创建一个同名存储桶:
aws s3 mb s3://bucket-name
aws s3 cp takeover.html s3://bucket-name --acl public-read
-
Heroku
如果子域名指向 Heroku(如herokuapp.com
),但应用已被删除,可以创建一个同名应用:
heroku create app-name
git push heroku master
通过占用被丢弃或未认领的资源,你可以成功接管目标子域名,并控制其内容。
自动化检测:使用 Subjack 和 Nuclei
为了加速发现和利用子域名劫持漏洞,可以使用自动化工具,如 Subjack 和 Nuclei。
-
Subjack
subjack -w subdomains.txt -t 100 -ssl -o takeovers.txt
Subjack 可自动检测主流云服务中的 DNS 配置错误,发现潜在的子域名劫持漏洞。 2. Nuclei
nuclei -l live_subdomains.txt -t takeover-templates/ -o takeovers_report.txt
Nuclei 是一款漏洞扫描工具,支持使用模板检测子域名劫持漏洞。
优势:
这些工具大幅提高了检测效率,尤其是在漏洞赏金项目中,可实现大规模测试。
常见易受攻击的服务
以下是一些常见的易受子域名劫持影响的服务:
-
GitHub Pages:如 username.github.io
-
AWS S3 存储桶:如 bucket-name.s3.amazonaws.com
-
Heroku:如 herokuapp.com
-
Shopify:如 shops.myshopify.com
-
Azure Blob Storage:如 accountname.blob.core.windows.net
当这些服务配置错误或被遗弃时,子域名很容易被劫持。了解如何检测这些服务的特定漏洞,将帮助你更高效地发现和利用它们。
总结
子域名劫持是网络安全中一个高风险的漏洞类型,它的危险性在于可以直接影响组织的信任和安全性。通过本文的逐步指南,你可以学习如何枚举子域名、识别漏洞以及利用这些漏洞,同时也可以使用自动化工具提高效率。
注意:本文的所有内容仅供教育目的使用,请勿将其用于非法活动。子域名劫持的最佳解决方案是主动检查并修复 DNS 配置,确保所有子域名的资源都在正常使用中。
原文始发于微信公众号(HW安全之路):子域名劫持漏洞高阶利用:从发现到利用完整攻略
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论