-
hakrawler— 简单、快速的网络爬虫,旨在轻松、快速地发现网络应用程序中的端点和资产 -
crawley— 用 Golang 编写的快速、功能丰富的 unix 方式网络抓取工具/爬虫。 -
katana — 下一代爬行和爬取框架
-
LinkFinder——一个在 JavaScript 文件中查找端点的 Python 脚本
-
JS-Scan— 一个用 php 构建的 .js 扫描器,用于抓取 URL 和其他信息 -
LinksDumper— 从响应中提取(链接/可能的端点)并通过解码/排序对其进行过滤 -
GoLinkFinder — 一个快速且极简的 JS 端点提取器 -
BurpJSLinkFinder— Burp 扩展,用于被动扫描端点链接的 JS 文件。 -
urlgrab—一个 golang 实用程序,用于在网站上搜索其他链接。 -
waybackurls— 获取 Wayback Machine 所知道的某个域名的所有 URL -
gau— 从 AlienVault 的 Open Threat Exchange、Wayback Machine 和 Common Crawl 获取已知 URL。 -
getJS— 快速获取所有 javascript 源/文件的工具 -
linx — 揭示 JavaScript 文件中的隐形链接 -
waymore— 从 Wayback Machine 中查找更多! -
xnLinkFinder— 用于发现端点、潜在参数以及给定目标的特定单词列表的 Python 工具
但是我们获取到的文件与其他用户一样,产生了重复的结果。
最初的发现如下:
subfinder -d domain.com | httpx -mc 200 | tee subdomains.txt && cat subdomains.txt | waybackurls | httpx -mc 200 | grep .js | tee js.tx
但是如果我们在目标域或你正在寻找的任何目标上强行破解这些单词会怎样呢?
以下是我为测试而收集的基本单词列表(一些JS文件名):
dialogs540f334e628dbce748a8js navigation_secondary55dfd8fe215f8edecd48js dialogsb18150a252f68f70f0c9js navigation_secondary147987372ed67d94de50js buttons147987372ed67d94de50js npmangular-animate8f9be52ce8a521f715a3js mainb18150a252f68f70f0c9js navigation7b5ba7de4b5e5fb011c7js dialogs147987372ed67d94de50js appmain7b5ba7de4b5e5fb011c7js main147987372ed67d94de50js buttons7b5ba7de4b5e5fb011c7js npmangaly-focus-store9327d7778ee0d85c3500js mainfb562f3396222d196abfjs breeze7b5ba7de4b5e5fb011c7js breezeb18150a252f68f70f0c9js breeze30886581e43164d9d721js breeze147987372ed67d94de50js navigationb18150a252f68f70f0c9js appmain147987372ed67d94de50js breezeee32c0b1526644e9b562js main7b5ba7de4b5e5fb011c7js dialogs7b5ba7de4b5e5fb011c7js navigationba64bbac173b1d655721js navigation147987372ed67d94de50js navigation_secondaryb18150a252f68f70f0c9js buttonscf9c75fee1de19837ae7js appmainb18150a252f68f70f0c9js navigation_secondary7b5ba7de4b5e5fb011c7js modalsb0f4a82ac6f25a46dc71js npmangular-ui-calendar423a597b943dc586730djs npmapollo-angular-link-httpe7a942f9925da8411a4ejs npmangular-ui-switch90766204ecd17b03ca76js appmainaf9ea97e6139d8cd52c2js npmapollo-angular-link-http-common87eff82eb4bc194887bfjs npmapollo-angular22f1de8a666515c86242js npmapollo-cache53668769616dc1466d8djs npmapollo-cache-inmemorydaeb4f1b88a15680fd12js buttonsb18150a252f68f70f0c9js npmangular-ui-bootstrapcd3d849d20f1a4f7dfacjs configjs npmattr-accept81d56f5e133bac14feb5js npmapollo-clientf1fffac92f44507c8f3ajs npmbase64-js61d2367f7816d6fec60fjs npmapollo-utilities9e092209349bda108468js npmaxiosb02cc1c0e336b6ce9d09js app147987372ed67d94de50js npmauth0b681a646eef51d083006js npmbraintree24d4f13fb9a355dadc24js npmbabel5fd8b43fabbd6864e9a2js npmcall-bind0f09a0bd48e4dac9d679js npmbreeze-client-labs03a64fb13d406c33bbc8js appaf9ea97e6139d8cd52c2js npmavailable-typed-arrays558d90654f4d4fc2aa04js npmcharacter-entities-legacy7f4022465f0c9c4a6fabjs npmblueimp-load-image3d0d2393c631d92c5a1ejs npmchartjs-color-stringbd3a54729bf6f60404afjs npmapollo-linka5d82a3252db6d3e8d15js npmaria-hiddena316c352eb617c047815js npmckeditorfde05d6a29366eaf2c71js npmcollapse-white-spacebdd075f4c3faca5c940fjs npmcharacter-reference-invalid2f9cdaeeea24c3f3897ejs npmbail2e238f58e0858fcf0e31js npmcolor-convert101a98cb8d9df306dc12js npmchartjs-color703b6867120bd9ebf784js npmbreeze-client75c1a11b2c8e46de7ce4js
因此我们可以将这个单词列表用于新目标,接下来:
waybackurls "site.com" | grep -Eo 'https?://[^/]+/[^”]+.js' | sed 's|^https?://[^/]+/||' | awk -F '/' '{print $NF}'
让我们分解一下命令的每个部分:
-
waybackurls "example.com"
:此命令从 Wayback Machine 档案中检索与"example.com"关联的 URL。 -
grep -Eo 'https?://[^/]+/[^"]+.js'
:此命令搜索带有.js
扩展名的 URL。该-E
标志启用扩展正则表达式,该-o
标志指示grep
仅输出匹配的部分。 -
sed 's|^https?://[^/]+/||'
:此命令从每个 URL 中删除协议(http://
或https://
)和域名,仅保留路径。 -
awk -F '/' '{print $NF}'
:此命令将每个 URL 拆分后提取其最后一部分/
,从而有效地删除域部分。
因此,当您运行此命令时,它将为你提供从waybackurls中提取.js端点列表和,同时排除域名。(将
"site.com"替换
为你想要的域)
你可以看到,一些关键词是新的且独特的。我们可以从一个目标中整理一个 js 单词列表,并将其用于新目标。
例如,我们从 dell.com 获得了 JS 词,并在 data.samsung.com 上使用了这些词,我们可以获得新文件、堆栈错误,这对于目录列表很有用。
我们最终可以在新目标上获取非常新的 JS 文件,我们按大小、数据类型、内容进行排序。
我们可以在 shodan 中获取的 IP 上使用相同的关键字
curl -s https://app.site.com/config.js | grep -E “environment: ‘Production’|storageUrl: ‘https://buildxact.blob.core.windows.net/'|googleApiKey: ‘|appInsightsInstrumentationKey: ‘|globalApiEndpoint: ‘|streamChatApiKey: ‘|auth0ClientId: ‘|auth0Domain: ‘|flatfileApiKey: ‘|webSpellCheckerServiceId: ‘|webSpellCheckerServiceUrl: ‘|clientPortalUrl: ‘|appVersion: ‘|appVersionDate: ‘|appDomainUrl: ‘|oneBuildKey: ‘|flatfilePlatformPublishableKey: ‘|flatfilePlatformEnvironmentId: ‘“ | sed “s/.*’(.*)’.*/1/”
我们可以添加我们认为敏感的词语
例子:
ANACONDA_TOKEN=
ANALYTICS=
ANDROID_DOCS_DEPLOY_TOKEN=
android_sdk_license=
android_sdk_preview_license=
ANSIBLE_VAULT_PASSWORD=
aos_key=
aos_sec=
API_KEY_MCM=
API_KEY_SECRET=
API_KEY_SID=
API_KEY=
API_SECRET=
APIARY_API_KEY=
APIDOC_KEY
APIGW_ACCESS_TOKEN=
apiKey
apiSecret
APP_BUCKET_PERM=
APP_ID=
APP_NAME=
APP_REPORT_TOKEN_KEY=
APP_SECRETE=
APP_SETTINGS=
APP_TOKEN=
appClientSecret=
APPLE_ID_PASSWORD=
APPLE_ID_USERNAME=
APPLICATION_ID_MCM=
APPLICATION_ID=
applicationCacheEnabled=
ARGOS_TOKEN=
ARTIFACTORY_KEY=
ARTIFACTORY_USERNAME=
ARTIFACTS
ARTIFACTS_AWS_ACCESS_KEY_ID=
ARTIFACTS_AWS_SECRET_ACCESS_KEY=
ARTIFACTS_BUCKET=
ARTIFACTS_KEY=
ARTIFACTS_SECRET=
ASSISTANT_IAM_APIKEY=
ASYNC_MQ_APP_SECRET
一旦您获得 JS URL,您就可以使用nuclei暴露标签来获取更多敏感信息。
js.txt
要对带有标签的文件运行 Nuclei 命令exposures
,可以使用以下命令:
nuclei -l js.txt -t ~ /nuclei-templates/exposures/ -o js_exposures_results.txt
-
nuclei
:这是运行 Nuclei 的命令,Nuclei 是一个快速且可定制的漏洞扫描程序。 -
-l js.txt
:该标志指定包含要使用 Nuclei 扫描的 URL 列表文件。 -
-t ~/nuclei-templates/exposures/
:该-t
标志指定标签的 Nuclei 模板目录的路径exposures
。调整路径~/nuclei-templates/exposures/
以匹配存储 Nuclei 模板的实际路径。 -
-o js_exposures_results.txt:
该-o
标志用于指定js_exposures_results.txt
将保存扫描结果的输出文件。
谢谢阅读
原文始发于微信公众号(Rsec):0033. JS 漏洞赏金 2.0 Extreme Edition 2024
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论