内网机学Dalfox

极客

内网机学Dalfox:我在隔离环境里折腾XSS扫描器的那些事儿

大家好呀,今天想跟你们聊聊一个特别有意思的话题——在内网机上学Dalfox,对,你没听错,就是那种完全断网、只能靠离线包过日子的内网环境,说实话,一开始我听到这个任务的时候,内心是崩溃的……

内网机学Dalfox

为啥要在内网机上学Dalfox啊?

先给不太了解的朋友科普一下,Dalfox是一款用Go写的开源XSS扫描工具,速度快、参数丰富,在安全圈里口碑相当不错,平时咱们在外网机器上装它,一句 go install 就完事了,爽得很,但问题来了——有些项目环境它就是内网机啊!不能联网、不能拉取依赖、连Go的模块代理都摸不到,你说气不气人?

我刚开始接到这个需求的时候,脑子里第一反应就是:“这不是折腾人嘛!”但没办法,工作嘛,硬着头皮也得上,结果折腾了整整两天,踩了无数坑,最后居然还真跑起来了,所以今天这篇内网机学Dalfox的文章,就是把我踩过的坑、绕过的弯,全都掏心窝子分享给你们。

第一步:离线环境的准备工作

首先呢,你得有一台能联网的机器用来“搬砖”,对,就是那种偷偷摸摸下东西的感觉,哈哈,具体要准备啥呢?

  • Go语言环境安装包:内网机大概率是没有Go的,你得先下好对应系统的二进制包,go1.21.linux-amd64.tar.gz 这种。
  • Dalfox的源码或者编译好的二进制:最省事的办法其实是在外网机器上直接 go build 出一个可执行文件,然后拷进去,别笑,这招真的好用!
  • 依赖包:如果你非要在内网机自己编译,那go mod vendor把依赖全部打包带上,不然你就等着报错报到怀疑人生吧。

我跟你说,我第一次就是傻乎乎地只拷了源码进去,结果一执行 go build,满屏的“cannot find module”……那一刻我的表情,你们自己脑补吧。

第二步:在内网机部署Go环境

把tar.gz拷进内网机之后,解压到 /usr/local 目录:

tar -C /usr/local -xzf go1.21.linux-amd64.tar.gz

然后配置环境变量,编辑 ~/.bashrc 或者 ~/.zshrc,加上:

export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export GO111MODULE=on

source一下,敲个 go version,看到版本号出来的那一刻,哇,那种成就感,真的绝了!

第三步:编译或者直接跑二进制

如果你跟我一样选择直接拷二进制,那就简单了,chmod +x dalfox ./dalfox version 验证一下,要是想自己编译,那就进到源码目录,用 go build -mod=vendor -o dalfox .,注意那个 -mod=vendor,内网环境全靠它了!

第四步:实战测试一下

跑起来之后,我随便找了个内部测试站点试了试:

./dalfox url "http://test.internal/?q=test"

看到它开始刷刷刷地扫参数、发payload,那一瞬间我真的想给自己鼓个掌,虽然过程曲折,但结果是真的香。

一些小感悟

说实话,内网机学Dalfox这件事,表面上看是个技术活,实际上考验的是耐心和解决问题的能力,没有网络的环境里,每一个依赖、每一个报错都得自己想办法搞定,但正因为这样,学到的的东西反而更扎实。

而且我发现,这种离线部署的思路其实通用性很强,以后遇到其他Go工具在内网跑,套路都是一样的,所以啊,别怕麻烦,折腾一次,受益很久。

好了,今天就唠到这儿,如果你也在内网环境里折腾过Dalfox,欢迎来评论区跟我交流交流,咱们一起避坑!

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]