摘要:BUILD_MANIFEST.sortedPages 是 Next.js 在生产环境构建过程中生成的一个关键数据结构。它是一个数组,包含了你的 Next.js 应用中所有页面的路径,并且这些路径是按照特定的规则排序的。
黑客在渗透工作中,经常会碰到的一个难题,就是目标网站是用Next.js搭建的,扫描器无法扫描出该网站目录。
如下图所示,wappalyzer插件探测到对方网站使用的是Next.js的框架。
如何解决呢这个难题呢?我经常用的工具有以下3个:
1、https://github.com/rtcatc/Packer-Fuzzer。
2、https://github.com/pingc0y/URLFinder
3、https://github.com/ttstormxx/jjjjjjjjjjjjjs
其实手工还有两种方法,在浏览器的开发者工具里直接输入两行代码就可以了。
console.log(__NEXT_DATA__)console.log(__BUILD_MANIFEST.sortedPages)__BUILD_MANIFEST.sortedPages 是 Next.js 在生产环境构建过程中生成的一个关键数据结构。它是一个数组,包含了你的 Next.js 应用中所有页面的路径,并且这些路径是按照特定的规则排序的。
__NEXT_DATA __是一个在 Next.js 应用的客户端渲染过程中非常重要的全局 JavaScript 对象。它包含了在服务器端渲染 (SSR) 或静态生成 (SSG) 期间生成并传递给客户端的关键数据,用于在浏览器中初始化 Next.js 应用和其页面。
我们分别来试一下。F12或是Ctrl + Shift + I在浏览器开发者工具里找到控制台,执行:console.log(__BUILD_MANIFEST.sortedPages),可以看到能打印出一些路径。
执行console.log(__NEXT_DATA__),能得到一些渗透目标相关的信息。
当然你也可以试着执行console.log(process.env)(这个不一定成功),或是详细一点的输出,以下是代码,直接粘贴到控制台回车。
console.dir(window); // 展开查看 window 对象的属性// 或者,更精确地查找包含 "next" 的属性for (const key in window) {if (key.toLowerCase.includes('next')) {console.log(key, window?.[key]);}}这会列出 window 对象的所有属性,你可以手动检查是否有其他看起来与 Next.js 相关的属性。第二个代码片段会更精确地查找属性名中包含 "next" 的属性。
来源:海阳顶端