Hakrawler?
很长一段时间以来,我一直希望有一个工具能够从目标应用提取出所有的URL端点,以简洁的方式在命令行中显示。于是,我自己创造了一个!
工具地址:https://github.com/hakluke/hakrawler
该工具主要通过对目标应用进行爬取、查询某些记录了以往网络数据的服务器、解析robots.txt和sitemap.xml文件来提取URL。
此外它还会对找到的任何子域进行收集。据我所知,这种利用子域去找子域的方法目前还没有被其他子域枚举工具实现,所以它可能有助于发现一些意外的目标。
有关安装和使用的详细信息,请参阅repository。
特征
1.可与其他工具配合使用(可接受来自stdin的主机名,以及使用-plain
标记将URL转储到stdout中)
2.通过对目标应用的每个页面进行爬取收集URL,并根据链接进行递进爬取
3.从记录了以往网络数据的服务器中收集URL
4.从robots.txt收集URL
5.从sitemap.xml收集URL
6.在爬取网页的过程中发现属于目标的新域和子域
7.由Golang语言编写
8.收集范围可以缩小或扩展
9.可以将结果导出到(包含原始HTTP请求)文件中,方便和其他工具(如SQLMap)联合
选择
的确也存在其他一些工具可以提供与Hakrawler类似的效果,但它们都不是我所需要的。最明显的替代品是Burpsuite的“spider”,这在过去是我对单个应用进行彻底爬取的第一选择,但它与Burpsuite应用的其他组件耦合太紧,而且并不是为爬取大量域名而设计的,这在大范围渗透测试时就显得比较尴尬。
此外较为接近的替代品是s0md3v的Photon,Hakrawler工具的大部分功能都是受Photon的启发。它很接近我想要的工具,而且也有很多很棒的特性,但它并不是爬取大量域名或链接的理想选择。Photon是用Python编写的,虽然Python是我的“母语”,但为了运行速度和节约系统资源,我最后还是使用Golang来编写这个工具中。所以如果你想寻找用Python编写的类似工具,请关注Photon!
贡献
综上所述,在我慎重思考后,决定使用Golang编写一个符合我需求的工具。选择Golang是为了提高速度——它不依赖于解释器,并且对并发有较好的支持。
唯一的问题是我以前从未使用Golang编写过任何应用。于是我在YouTube上看了一个Golang教程,然后花了一周左右的时间编写hakrawler代码(同时搜索一些愚蠢的Golang编码问题)。如果你也想学习Golang,以下是我看过的视频:
https://www.youtube.com/watch?v=YS4e4q9oBaU
目前,我的代码有点混乱,但它还是可以有效工作的!现在我发布的的是beta版,希望信安或Golang社区能帮助我不断地改进它。如果你也想参与进来,那么现在还有一大堆特性或漏洞需要处理。任何对该项目做出突出贡献的人,都会成为Contributors
的一员,如果我们在现实中碰到,会请你喝上一杯啤酒或咖啡!
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场:https://nosec.org/home/detail/3815.html
来源:https://medium.com/@hakluke/introducing-hakrawler-a-fast-web-crawler-for-hackers-ff799955f134