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

作者:FancyPig | 发布时间: | 更新时间:

相关阅读

data-postsbox="{"id":27006,"title":"【渗透工具系列】支持屏幕截图的黑客扫描工具EyeWitness","author":"FancyPig","author_id":1,"cover_image":"https://static.pigsec.cn/wp-content/uploads/2022/11/20221120062105607.png","cover_video":"","views":2654,"comment_count":4,"category":"software","is_forum_post":false}">{"id":27006,"title":"【渗透工具系列】支持屏幕截图的黑客扫描工具EyeWitness","author":"FancyPig","author_id":1,"cover_image":"https://static.pigsec.cn/wp-content/uploads/2022/11/20221120062105607.png","cover_video":"","views":2654,"comment_count":4,"category":"software","is_forum_post":false}
data-postsbox="{"id":26746,"title":"【渗透工具系列】端点扫描神器Meg","author":"FancyPig","author_id":1,"cover_image":"https://static.pigsec.cn/wp-content/uploads/2022/11/20221117014650253.png","cover_video":"","views":3409,"comment_count":9,"category":"software","is_forum_post":false}">{"id":26746,"title":"【渗透工具系列】端点扫描神器Meg","author":"FancyPig","author_id":1,"cover_image":"https://static.pigsec.cn/wp-content/uploads/2022/11/20221117014650253.png","cover_video":"","views":3409,"comment_count":9,"category":"software","is_forum_post":false}
data-postsbox="{"id":26486,"title":"【渗透工具系列】Burpsuite扩展插件Turbo Intruder","author":"FancyPig","author_id":1,"cover_image":"https://static.pigsec.cn/wp-content/uploads/2022/11/20221112101541192.png","cover_video":"","views":5013,"comment_count":11,"category":"software","is_forum_post":false}">{"id":26486,"title":"【渗透工具系列】Burpsuite扩展插件Turbo Intruder","author":"FancyPig","author_id":1,"cover_image":"https://static.pigsec.cn/wp-content/uploads/2022/11/20221112101541192.png","cover_video":"","views":5013,"comment_count":11,"category":"software","is_forum_post":false}

视频讲解

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

图文讲解

安装教程

我们先下载该项目

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

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

cd Arjun
setup.py

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

sudo apt install arjun

使用教程

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

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

arjun -u http://127.1:5000/

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

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

代理模式

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

HTTP_PROXY=http://127.1:8080/ arjun -u http://127.1:5000/

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

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

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

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

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

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

arjun -u http://127.1:5000/ -m POST

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

arjun -u http://127.1:5000/ -m JSON

被动模式

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

arjun -u http://127.1:5000/ -oJ json -oT file -oB '127.1:8080'

详细的使用说明

扫描单个 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保存即可。

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

标签:api安全, api安全产品, arjun, arjun怎么读, arjun是什么意思, 参数枚举, 参数枚举值错误, api安全是指什么意思, api安全测试指南, 瑞数api安全, 全知科技, 永安在线, 星阑科技, 派拉软件, arjun工具, arjun工具 实战, arjun工具教程, 快速挖掘api参数, api参数, api参数扫描, api参数测试, api模糊测试