【渗透工具系列】极其快速的参数枚举工具Arjun

相关阅读

视频讲解

通常在做渗透测试时,我们想要知道一个API接口都有哪些参数,然而普通的模糊测试可能会导致发送请求数量巨大、而且产生的效果也不是很好,因此就有了Arjun这个工具,本质上它通过二分查找的思路,逐步筛选返回长度不一致的参数,多个参数同时请求,直到最终筛选出准确的参数。该工具可以帮助我们在获取到API端点后进行参数的模糊测试,本身支持了25000的字典,如果不够用您还可以使用自己更大的字典……

图文讲解

安装教程

我们先下载该项目

git clone https://github.com/s0md3v/Arjun.git

然后进入项目路径,进行安装

cd Arjun
setup.py

以上安装方式适用性较广,如果您使用的是Ubuntu、Debian Linux环境,您可以直接使用下面命令一键安装

sudo apt install arjun
图片[1]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog

使用教程

我们如果想针对某一个API接口进行参数枚举,可以输入下面的命令

http://127.1:5000/修改为你要扫描的API端点路径

arjun -u http://127.1:5000/

可以看到我们这里发现了flag参数

图片[2]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog

当发现参数之后,你可以使用curl命令或者直接打开浏览器进行验证

图片[3]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog

代理模式

如果我们想要进一步研究,在刚刚输入命令的背后,到底发送了哪些请求?我们可以使用代理方式将请求传递到burpsuite中

HTTP_PROXY=http://127.1:8080/ arjun -u http://127.1:5000/
图片[4]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog

然后,我们就可以在burpsuite中看到每一次请求的情况了

图片[5]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog
图片[6]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog
图片[7]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog

可以发现其实这里用到了二分查找的思路,当我们发现响应长度不一致时,我们可以丢弃另一半,然后在对现在URL的参数进行二分。

图片[8]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog
图片[9]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog
图片[10]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog
图片[11]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog

最终只剩下我们要寻找的参数(当然如果有多个参数也是可以支持的)

图片[12]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog

支持GET/POST请求 JSON/XML格式

我们可以使用-m来调整请求方式

图片[13]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog

譬如我们想看下POST请求的参数

arjun -u http://127.1:5000/ -m POST
图片[14]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog

当然,我们也可以支持JSON格式的请求

arjun -u http://127.1:5000/ -m JSON
图片[15]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog
图片[16]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog

被动模式

你可以使用本身自带的参数实现被动模式-oB参数

arjun -u http://127.1:5000/ -oJ json -oT file -oB '127.1:8080'
图片[17]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog
图片[18]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog

详细的使用说明

扫描单个 URL

选项:-u

针对单个 URL 运行 Arjun。

arjun -u https://api.example.com/endpoint

指定 HTTP 方法

选项:-m

Arjun 默认查找GET方法的参数。所有可用的方法是:GET/POST/JSON/XML

arjun -u https://api.example.com/endpoint -m POST

导入目标

选项:-i

Arjun 支持从 BurpSuite简单文本文件原始请求文件导入目标。Arjun 可以自动识别输入文件的类型,所以你只需要指定路径。

arjun -i targets.txt

注意:在 Burp Suite 中导出项目时取消选中“base64”选项。

导出结果

选项:-oJ/-oB/-oT

您可以使用相应的选项将结果导出到 BurpSuite 或 txt/JSON 文件。

arjun -u https://api.example.com/endpoint -oJ result.json
-oJ result.json
-oT result.txt
-oB 127.0.0.1:8080

指定注入点

JSON默认情况下,Arjun 可以在使用或XML方法参数时检测指定位置的参数。所有可用的方法是:GET/POST/JSON/XML

arjun -u https://api.example.com/endpoint -m JSON --include='{"root":{"a":"b",$arjun$}}'

或者

arjun -u https://api.example.com/endpoint -m XML --include='<?xml><root>$arjun$</root>'

多线程

选项:-t

Arjun 默认使用 2 个线程,但您可以根据您的网络连接和目标限额调整其性能。

arjun -u https://api.example.com/endpoint -t 10

请求之间的延迟

选项:-d

您可以使用该-d选项延迟请求,但它还会将线程数设置为1.

arjun  -u https://api.example.com/endpoint -d 2

请求超时

选项:-T

您可以使用选项指定 HTTP 请求的超时时间-T,默认值为15

arjun  -u https://api.example.com/endpoint -T 10

处理速率限制

选项:--stable

--stable将线程数设置为1并在请求之间引入 6 到 12 秒的随机延迟。

arjun  -u https://api.example.com/endpoint --stable

包括持久数据

选项:--include

假设您有一个 API 密钥,您需要随每个请求一起发送,以告诉 Arjun 这样做,您可以使用以下--include选项:

arjun  -u https://api.example.com/endpoint --include 'api_key=xxxxx'

或者

arjun  -u https://api.example.com/endpoint --include '{"api_key":"xxxxx"}'

要包含多个参数,请使用&分隔它们或将它们作为有效的 JSON 对象传递。

控制查询/块大小

选项:-c

默认情况下,Arjun 在请求中包含 500 个参数,有时会超过某些服务器的最大 URL 长度限制。-c您可以通过指定一次发送的参数数量来处理这种情况。

arjun -u https://api.example.com/endpoint -c 250

禁用重定向

选项:--disable-redirects

此开关将阻止 Arjun 遵循目标 URL 上的重定向。建议仅在您知道自己在做什么时才使用它。

arjun -u https://api.example.com/redirects_to_api2 --disable-redirects

从被动源收集参数名称

选项:--passive

您可以从 CommonCrawlOpen Threat ExchangeWaybackMachine 收集域(而非子域)的参数名称,并检查它们是否存在于您的目标上。

arjun https://api.example.com/endpoint --passive example.com

如果要使用目标 URL 中的域,请使用--passive -. 它仅适用于单个目标。

使用自定义 HTTP 标头

选项:--headers

您可以简单地从命令行添加自定义标头,分隔符\n如下:

arjun -u https://api.example.com/endpoint --headers "Accept-Language: en-US\nCookie: null"

使用--headers不带任何参数的选项将打开您的文本编辑器(默认为“nano”),您只需将 HTTP 标头粘贴到那里并按Ctrl + S保存即可。

图片[19]-【渗透工具系列】极其快速的参数枚举工具Arjun-FancyPig's blog

注意: nano用作Arjun提示的默认编辑器,但您可以通过调整/core/prompt.py.

© 版权声明
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 共5条

请登录后发表评论