前言
参考:
https://forum.butian.net/share/2841
https://www.bilibili.com/video/BV1yP4y117Q2/?vd_source=6ce69e079d1dd642d7810fbf2e9c817e
https://www.freebuf.com/vuls/328801.html
https://evanli.github.io/blog/2019/01/26/advanced-google-search-engine-command/
Web 信息收集
此部分专注于对单个 web 站点进行信息收集
前端信息收集
基本都是 f12 能够直接开始收集的
优质工具:
- FindSomething: GitHub仓库 已停止更新,建议直接在 Chrome 扩展商店下载
- Phantom
html 信息收集
html 中的注释符 <!-- -->
:部分 web 框架可能会把框架名称,版本号甚至源码地址写在 html 注释中
带有链接的 html 标签:可从中获取一些 api 接口
<a href="http://example.com"></a>
<img src="https://www.example.com/images/dinosaur.jpg"
javascript 信息搜集
f12 查看源代码,即可查看页面加载的 javascript
接口泄露
https://developer.volcengine.com/articles/7381513265429348402
前端采用 vue ,webpack 会对前端资源打包生成静态文件,这些打包的文件往往会被加载
其中会有大量的接口信息,可以尝试构造完整 api 进行批量访问来测试未授权
数据包加密密钥泄露
部分网页前后端数据传输时会加密数据包导致难以篡改,但是前端可能会泄露加密方法与密钥
function checkForm(){
var key = "0000000372619038";
var iv = "ilove36dverymuch";
var pazzword = $("#pazzword").val(); pazzword = encrypt(pazzword,key,iv);
$("#pazzword").val(pazzword);
$("#loginForm").submit();
}
function encrypt(data,key,iv) { //key,iv:16位的字符串
var key1 = CryptoJS.enc.Latin1.parse(key);
var iv1 = CryptoJS.enc.Latin1.parse(iv);
return CryptoJS.AES.encrypt(data, key1,{
iv : iv1,
mode : CryptoJS.mode.CBC,
padding : CryptoJS.pad.ZeroPadding
}).toString();
}
CTF 前端小游戏
CTF 中,一些前端小游戏类型的题目会把 flag 藏在 javascript 里,可以尝试 ctrl+f 搜索一些可能产生输出的方法:console.log
,alert
;留意一些编码的字符串,如十六进制的特征 \x
、base64 的特征 ==
;或者寻找可能的通关逻辑与字符串,如 success,if,数值判断等。
参考题目:[HGAME 2023 week1]Classic Childhood Game
js 前台拦截
https://tree.moe/anti-debug-and-solution/
部分网站为了防止使用开发者工具会在 javascript 里添加限制代码,效果包括但不限于禁用右键、禁用 f12、debugger 循环阻止控制台调试等
屏蔽 f12:
$(document).keydown(function (event) {
if (event.keyCode == 123) {
if (event.preventDefault) {
event.preventDefault();
} else {
window.event.returnValue == false;
}
}
});
屏蔽 ctrl+shift+i:
$(document).keydown(function (event) {
if (event.ctrlKey && event.shiftKey && event.keyCode == 73) {
if (event.preventDefault) {
event.preventDefault();
} else {
window.event.returnValue == false;
}
}
});
通过添加自定义事件屏蔽鼠标右键:
$(document).ready(function () {
$(document).bind("contextmenu", function (e) {
return false;
});
});
debugger 反调试:
// 通过递归反复构造匿名函数利用debugger断点阻止调试
var check = function () {
function doCheck(a) {
if (('' + a / a)['length'] !== 1 || a % 20 === 0) {
(function () { }['constructor']('debugger')());
} else {
(function () { }['constructor']('debugger')());
}
doCheck(++a);
}
try {
doCheck(0);
} catch (err) { }
};
check();
// 同时利用定时器定期产生debugger断点
setInterval(function () {
check();
}, 2000);
时间差检验:
function consoleOpenCallback() {
alert('关闭调试窗');
window.location.reload();
}
var Anti_numtots = 0;
(function () {
window._windon_handler = setInterval( function() {
var before = new Date();
debugger;
var after = new Date();
if (after.getTime() - before.getTime() > 100) {
if (after.getTime() - before.getTime() > 2000) {
consoleOpenCallback();
clearInterval(_windon_handler);
}else{
Anti_numtots++;
if(Anti_numtots>=2){
consoleOpenCallback();
clearInterval(_windon_handler);
}
}
}else{
Anti_numtots = 0;
}
}, 1000)
})();
CTF 参考: GeekGame 2024 验证码 #web-copy
热加载替换 javascript
把 javascript 代码 dump 到本地,修改其中的反调试语句后使用 开发者工具-源代码-替换
进行替换
js 混淆
通过大量的操作混淆使 javascript 代码没有可读性
反混淆工具:https://github.com/kuizuo/js-deobfuscator
JSFUCK
javascript 特有的编码,CTF 过气 trick(
Cookie 泄露
查看 cookie,可能存在一些敏感字段可以用于识别指纹,如 Shiro 框架特有的 rememberMe
静态敏感文件信息收集
robots.txt泄露接口
robots.txt 文件:https://www.cloudflare.com/zh-cn/learning/bots/what-is-robots-txt/
指定了不允许爬虫爬取的页面,可能会泄露出一些 api,如百度的 robots.txt:
User-agent: Baiduspider
Disallow: /baidu
Disallow: /s?
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Googlebot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: MSNBot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Baiduspider-image
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: YoudaoBot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Sogou web spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Sogou inst spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Sogou spider2
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Sogou blog
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Sogou News Spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Sogou Orion spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: ChinasoSpider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Sosospider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: yisouspider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: EasouSpider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: *
Disallow: /
源码压缩包泄露
部分网站建站时会把网站源码放在可访问的路径下,常见的源码压缩包如 www.zip
版本控制泄露
有 .git泄露
和 .svn泄露
https://www.freebuf.com/articles/web/267597.html
以 git 为例,平常 github 用的比较多的话很容易理解,我们使用 git 的所有被追踪的操作和被操作的文件都会被记录,git 相关的文件会放在当前目录的 /.git/ 下,那么这个目录一旦可以访问,就可以尝试通过这个获取源码及其历史改动的记录
git 泄露的利用工具:GitHacker、Git_Extract
svn 泄露的利用工具:SvnExploit
phps源码泄露
/index.phps
/index.php.bak
vim临时文件泄露
vim是linux自带且常用的文件编辑器
vim在编辑时会生成一个隐藏的临时文件
当vim非正常关闭时这个文件就会被保留下来
以 index.php 为例,可尝试访问 index.php.swp 得到临时文件信息
恢复 swp 文件为源文件:
vim -r index.php.swp
sql备份源码泄露
访问backup.sql
探针信息泄露
一种用于诊断和监视PHP应用程序的工具,通常是作为第三方工具提供的,它通常是一个PHP脚本,可提供服务器环境变量、PHP配置选项、已加载的扩展、PHP版本信息、内存使用情况、CPU利用率、网络活动等信息
一般可以访问tz.php
mdb 文件泄露
mdb文件是早期asp+access构架的数据库文件
一般访问/db/db.mdb
DS_Store 信息泄露
mac 下经常拉的史(
苹果的操作系统会在每一个文件夹中产生这个文件记录这个文件夹中的相关信息。实际上,这一文件包含了文件夹中所有的文件名和子文件夹名。和 windows 相比,等同于 desktop.ini 和 Thumbs.db 两个文件。
一旦泄露可以获取网站相关的路径
社工方法
敏感信息
根据页面中存在的邮箱等敏感信息进行查找,如邮箱对应的qq号搜索
内部技术文档泄露
页面中存在技术文档信息
域名txt记录泄露
敏感信息公布
有时候网站上的公开信息,就会是管理员常用密码
例子:2024网鼎杯半决赛渗透
资产信息收集
这部分更多以某一公司下的所有资产信息进行收集,侧重攻防实战
流程上一般是:域名/单位信息收集->子域名收集->IP 端口扫描->URL 指纹识别
以米哈游的信息为例(
优质工具:
TscanPlus:https://github.com/TideSec/Tscanplus
域名信息
WHOIS
已知域名找关联内容
WHOIS是一个标准的互联网协议,可用于收集网络注册信息、注册域名﹑IP地址等信息。简单来说,WHOIS就是一个用于查询域名是否已被注册及注册域名详细信息的数据库(如域名所有人、域名注册商)。
在 WHOIS 查询中,得到注册人的姓名和邮箱信息通常对测试中小网站非常有用。我们可以通过搜索引擎和社交网络挖掘出域名所有人的很多信息,对中小网站而言,域名所有人往往就是管理员。
利用查询到网站管理员手机号码、姓名、邮箱通过 Whois 反查查询出网站管理员所注册过的域名,可以对注册的其他域名进行漏洞挖掘。
- 站长之家:https://whois.chinaz.com/、反查
- 爱站:https://whois.aizhan.com/
- 微步:https://x.threatbook.cn/
- Virustotal:https://www.virustotal.com/
- 阿里云:https://whois.aliyun.com/
- 腾讯:https://whois.cloud.tencent.com/
- 中国互联网信息中心:http://ipwhois.cnnic.net.cn/
- 国外的 whois:https://who.is/
ICP
已知单位找关联域名
ICP (Internet Content Provider)备案是指网站在信息产业部提交网站信息进行官方认可。对国内各大小网站(包括企业及个人站点)的严格审查工作,对于没有合法备案的非经营性网站或没有取得 ICP 许可证的经营性网站, 根据网站性质,将予以罚款,严重的关闭网站,以此规范网络安全,打击一切利用网络资源进行不法活动的犯罪行为。也就是说,只要是盈利为目的的网站,都要进行 ICP 备案,否则会受到相应的处罚。
拿到一个单位的名称后,就可以查询该单位备案的其它网站
ICP 查询网站:
- ICP 备案查询网(通过单位名称、域名、备案号查询):https://www.beianx.cn/
- 国家企业信用信息公示系统(通过企业名称、统一社会信用代码或注册号查询):https://www.gsxt.gov.cn/index.html
- 站长之家(通过网址、备案号查询):http://icp.chinaz.com/
天眼查:https://www.tianyancha.com/
根据前面获取的企业名称可以获取目标企业的微信公众号、微博、备案站点、APP、软件著作权等信息
SEO
SEO(Search Engine Optimization,搜索引擎优化),是指利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。目的是让其在行业内占据领先地位,获得品牌收益,将自己公司的排名前移,很大程度上是网站经营者的一种商业行为。通过SEO综合查询可以查到该网站在各大搜索引擎的信息,包括网站权重、预估流量、收录、反链及关键词排名等信息,十分有用。
可以根据域名来收集目标站点的备案信息、名称、注册人等信息
搜索引擎语法
- 收集特定的域名:
site:xxx.cn
- 收集特定资产的敏感信息:
- 找管理后台地址
site:xxx.com intext:管理|后台|登陆|用户名|密码|系统|账号
site:xxx.com inurl:login/admin/manage/manager/admin_login/system
site:xxx.com intitle:管理|后台|登陆
- 找上传类漏洞地址:
site:xxx.com inurl:file
site:xxx.com inurl:upload
- 找注入页面:
site:xxx.com inurl:php?id=
- 找编辑器页面:
site:xxx.com inurl:ewebeditor
- 找登录页面
site:xxx.com inurl:"/admin/login.php"
- 查找含有username或password的xls文件
filetype:xls "username | password"
- 找管理后台地址
搜索引擎一般用来收集信息泄露和隐藏较深的路由
子域名收集
有了前面的域名信息之后就可以考虑收集子域名,收集到的子域名可以获取到更多的 IP 地址,扩大资产范围
被动收集
信息泄露
搜索引擎:site:example.com
网络空间测绘引擎:domain=Your_domain
证书透明
当通过HTTPS访问web时,网站向浏览器提供数字证书,此证书用于识别网站的主机名,由证书颁发机构(CA,Certificate Authority)颁发。
第三方DNS服务
AS 号码查询
SAN 收集
使用公共数据集
主动收集
字典枚举:力大砖飞
置换扫描
域传送漏洞
DNSSEC
DNS缓存
IP 信息收集
CDN
首先要判断域名是否存在 CDN
内容分发网络(content delivery network或content distribution network,缩写作CDN)指一种通过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户,主要就是通过多个不同节点加快网站的访问速度。
判断的方法就是多地对该域名进行 ping,如果查询出的ip数量大于一个的话,则说明该ip地址不是真实的服务器地址
如果是2个或者3个,并且这几个地址是同一地区的不同运营商的话,则很有可能这几个地址是服务器的出口地址
如果是多个ip地址,并且这些ip地址分布在不同地区的话,则基本上可以断定就是采用了CDN了
- 多地 ping:https://ping.chinaz.com/
- nslookup:用了 cdn 的会返回多个地址
- IP 反查:反查有多个域名则不是
个体信息收集
搜索引擎语法
关键词之间用 OR
隔开,如 建设银行 OR 建行 OR xx省建行 + ccb
Github / Gitee
网站域名、网站JS路径、网站备案、网站下的技术支持这些都可以放进去 GitHub 搜
gitee 的搜索性能较差:「关键字」+「开发语言类型」+「项目收藏数(Watch)」+「项目克隆数(Fork)」+「项目更新时间」
APP信息
通过当前APP查询所属公司的所有APP
通过当前APP查询同开发者应用
反编译 apk,提取其中的 api 接口,工具:https://github.com/n0mi1k/apk2url
微信公众号、小程序
通过微信搜索公众号并去关注,然后进去点击文章之类的,下拉可以看到它的网页来源,大部分是微信提供的,所以需要去阅读原文,但是原文也可能是第三方提供的,所以还需要自己自行去判断,找到它的 url 后又可以去爆一波子域名了
公众号提供的功能也可以点一点抓包看看域名和接口
小程序的话通过抓包就可以看到背后的域名了,见微信小程序渗透
空间测绘
logo
搜图
favicon.ico
所谓favicon,便是其可以让浏览器的收藏夹中除显示相应的标题外,还以图标的方式区别不同的网站
获取hash进行查询即可
网盘信息收集
主要是看那些网盘爬虫/搜索引擎
文库信息收集
语雀:支持搜索全网公开文档,误差较大