API 渗入测试从入门到通晓系列文章(下) | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

API 渗入测试从入门到通晓系列文章(下)

申博_安全防护 申博 117次浏览 已收录 0个评论

在本系列文章的前面一部份我们从运用 Postman 最先,建立了鸠合和要求,并经由历程 Burp Suite 设置为了 Postman 的代办,如许我们就可以运用 Burp 的隐约测试和要求改动的功用。 在接下来的这部份内容中,我们将深入研讨一些轻微高等一点的 Postman 功用,这些功用你肯定会用到的。

鸠合变量

API 渗入测试从入门到通晓系列文章(下) 

Postman 中的变量险些可以用于要求中的任何字段。 语法是在它们的双方运用两层花括号。有几个处所我可以运用变量定义它们。 假如它们是静态的,或许我会将它们设置为鸠合变量。 比方,我一向运用 http://localhost:4000 作为我的测试主机。 假如我将测试 API 的端口从4000改成4001,我不愿望一个个编辑每一个要求的 URL。接下来我引见一下我们该怎样将它移动到一个鸠合变量中。起首,在菜单侧栏中翻开鸠合列表中编辑该鸠合的对话框。 我可以单击按钮或许右键单击鸠合称号。这两种操纵,我们会获得雷同的上下文菜单,然后挑选编辑Edit)。

这将翻开一个编辑鸠合的对话框。 默许视图包括鸠合的称号和形貌的文本框,然则在这两个字段之间另有一行选项卡。

个中一个标签叫做变量(Variables)。这就是我们想要的,点击这个标签会翻开另一个对话框,用于编辑变量。

API 渗入测试从入门到通晓系列文章(下)

  Postman 鸠合变量编辑界面

它有一个表格,个中包括某个变量的变量称号、 初始值列和 当前值列。 这两个值列之间的差别与 Postman 的付费功用举行同步有关。 在这里重要的一个点是,你将输入初始值,然后选项卡进入当前值字段。 这将自动将当前初始值添补到当前值字段中,而且它将如图所示。 如今我有了一个名为 API_host 的鸠合变量,其值为 http://localhost:4000 在完成了变量的编辑以后须要点击更新按钮。

如今是时刻修正我的要求,并援用该变量,而不是运用硬编码的主机名和端口。

  API 渗入测试从入门到通晓系列文章(下)

Postman 中的要求,将 URL 变动成指向一个变量

我只是简朴地用占位符替代了每一个 URL 中对应的部份:  {{API_host}},把鼠标悬停在占位符上可以睁开这个变量,会显现变量值和局限。 这里有一些色彩编码也可以协助我们。 当变量有效时,文本会变成橙色,然则假如我输入一个无效的变量名,文本将变成赤色。

我依然须要对每一个要求举行一次更新,让它们运用某个变量。 然则在未来,假如我转变了端口,或许假如我切换到了 HTTPS,或许假如我将我的测试 API 布置到一个完整差别的主机上; 那末我就可以回到鸠合变量那边并更新变量的值,我的一切要求都邑相应地发作转变。

如今,鸠合变量关于相对静态的字段以及不会常常发作转变的字段是很合适的,然则假如我在一个多租户的解决方案中测试多个环境和布置,以至多个租户呢? 我可以会运用雷同的要求鸠合,然则运用差别的变量鸠合。 那末在这类情下环境变量就可以处置惩罚这个题目。

环境变量(Environment Variables

你可以已注重到了窗口右上角的界面。 让我们翻开看看:

  API 渗入测试从入门到通晓系列文章(下)

Postman 中的环境变量界面

1. 环境挑选器下拉菜单。 可以挑选一个环境。

2. 疾速检察按钮,点击后可以检察你的环境中设置的内容。

3. 治理环境按钮,这里是真正举行编辑环境的处所。

起首,我们须要点击治理环境按钮。 这会翻开一个较大但空缺的对话框,底部有一个 Add 按钮。 点击这个增加按钮。

API 渗入测试从入门到通晓系列文章(下)

你会看到另一个对话框。 这一个看起来险些和鸠合变量对话框一样,除了它有一个名字。

在这里,我把我的命名为 LocalTest

我还增加了许多其他的变量,个中一个叫做bearer_token,值为 foo 另一个是 user_id值为1

API 渗入测试从入门到通晓系列文章(下)

一旦完成编辑,我们点击对话框底部四周的增加按钮,然后封闭治理环境对话框。 在我可以在这个环境中运用这个变量之前,另有末了一个重要的、常常被遗忘的步骤:我们须要从环境挑选器下拉菜单中挑选这个环境。

如今这些分外的变量可以像上面的 API_host 变量一样举行接见: {{bearer_token}} 和 {{user_id}}

路由参数

在当代 API 中运用路由参数是很稀有的。 这些是作为 URL 主途径的一部份所供应的值。比方,斟酌 http://localhost:4000/user/42/preferences 这个 URL:

如许的 URL 中的数字42现实上是一个参数,许多是本例中的用户 ID 当效劳器端应用程序路由传入要求时,效劳端会提取该值,并使其随时可用于终究处置惩罚要乞降构造相应的函数。 这是一个路由参数。 这关于编辑参数或是在 Postman 中运用也比较简朴。语法是将参数以冒号(:)后跟参数名的情势直接放入 URL 中。 关于 Postman 中的这个示例要求,我将其输入为{{API_host}}/user/:userId/preferences 然后,在要求的参数( Params)选项卡上,我可以看到它被列出并设置了细致的值。 鄙人图中,我将其设置为在前面的环境变量中指定的用户 id 变量。

我也可以把我的变量直接写到 URL 中,但在我看来,这类体式格局更清洁。

无记名令牌(Bearer Tokens

设想一下如许一个场景: 你发出某种范例的受权要求,它用一个 bearer token 举行相应,然后你须要在一切其他要求中运用该令牌。 如许做的手动体式格局可以只是发出考证要求,然后从相应中复制并粘贴令牌到别的一个环境变量。 一切其他的要求都可以运用这个环境变量。

API 渗入测试从入门到通晓系列文章(下)

如许也可以平常发出要求,假如你有一个短时间的令牌,那末这类做法多是个痛楚。 关于这个题目,有一个更文雅的解决方案。 想一想下面的相应:

 API 渗入测试从入门到通晓系列文章(下)

我们已发出了要求,而且收到了一个包括令牌的 JSON 相应。 如今,我想用自动化的体式格局运用新的bearer token来更新我的环境变量。 在要求界面上,有几个标签可以做到。 最右边的一个叫做测试。 这重要用于自动搜检相应,以肯定 API 是不是失效,就像单元测试一样。 然则我们可以经由历程一些 JavaScript 语句来到达我们的目标。

 API 渗入测试从入门到通晓系列文章(下)

我增加上面的剧本,单击保留,然后再次运转我的要求。 好像一切的事变都和第一次如出一辙。 然则假如我运用疾速检察( Quick Look)按钮来检察环境变量时……

API 渗入测试从入门到通晓系列文章(下)

我们可以看到当前值已被自动更新。 这是第一步——我如今将值存储在一个我可以轻松援用的处所,然则它不会将Bearer token 这个令牌放入我的要求中。 我有两个要领。 第一个要领是,假如翻开要求的 Authorization 选项卡,我们可以从范例下拉列表中设置一个Bearer token,并将其指向我的变量。

 API 渗入测试从入门到通晓系列文章(下)

这类要领是可行的,然则我须要在每一个要求上都举行雷同的设置。 然则每一个新的要求的默许受权范例是继承父类身份考证 Inherit auth from parent)。 在本例中,父类是个鸠合。 因而,假如我将这个要求切换回默许的范例,那末我就可以进入编辑鸠合(Edit Collection)举行设置(与我进入 Collection 变量的上下文菜单雷同) ,然后进入 Collection Authorization 选项卡。

 API 渗入测试从入门到通晓系列文章(下)

这个功用展现的接口险些与要求中的 Authorization 接口雷同,我可以以雷同的体式格局设置身份考证到信息。 如今的差别之处在于它是在鸠合中治理的。 在默许状况下,我建立的每一个新的要求都将包括该bearer token,除非我有意变动了该要求的范例。 比方,我的身份考证要求可以不须要bearer token,因而我须要在要求的 Authorization 选项卡大将范例设置为 No Auth

偶然,我会碰到一些应用程序,须要从相应中包括的 XML HTML 主体中提取一些值。 在这类状况下,内置的 xml2Json 函数有助于剖析相应内容。

iOS URL Scheme劫持

苹果通过iOS沙箱机制限制每个应用可以访问的资源以管理应用安全和隐私的问题。但该机制也有一定的安全问题,如果一个APP被黑,通过APP Store分发的所有应用可能都会出现问题。加上访问控制,app之间的通信变得更加困难。 但苹果也提供了其他方法来帮助app间的通信,最常见的方式就是URL Scheme。本质上讲,这是一个允许开发者在iOS设备上通过URL来启动APP的特征,可以将信息从一个APP传递到另外一个APP。比如,打开一个URL facetime://, FaceTime就会被调用。这是一种非常有效的快捷方式,但URL Scheme的设计是为了通信而不是安全。 下面介绍下如何滥用URL Sche

API 渗入测试从入门到通晓系列文章(下)

运用 xml2Json HTML 主体整合到 JSON 对象中

另有一个须要注重的功用是 Pre-request Script 选项卡,它运用雷同的基础剧本接口。 正如你可以希冀的那样,它在要求发送之前实行。 我的一些同事运用这个功用来设置bearer token令牌,这是一个完整有效的要领,只不过不是我日常平凡所运用的要领。 当你只是须要一次性操纵的时刻,这类要领也会很有协助,只管这类状况我平常遇不到。

在接下来的内容中,我们将经由历程整合一些 Burp Suite 扩大插件来真正增强渗入测试的东西链。 我写的这个系列文章现实上是在处置惩罚东西题目。 关于 API 平安测试来讲,有许多背景学问须要控制,从对 OAuth 的深刻明白,到 JWT SAML 之类的标记文本构造,再到对 CORS 的真正明白。

如今让我们运用 burpsuite 的一些扩大插件来扩大 API 平安测试东西链。 我们将引见一些有效的组件,用于处置惩罚 JWTs (JSON Web 令牌) ,以及更有效地查找受权历程当中的题目。 这些扩大也不仅限于 API 测试,它们还可以协助我们举行通例的 web 应用程序测试事情。

设置 Jython

个中的一些扩大须要在 Burp Suite 中设置 Python 环境,而 Burp Suite 在默许状况下是不设置Python 环境信息的。 假如你已设置过了,那末你可以继承下一章节的操纵。 假如没有设置过,你可以翻开 Extender-Options 并设置 Jython 的自力 JAR 的位置。 假如你须要这个下载jar包,你可以从 jython.org 上找到。

 API 渗入测试从入门到通晓系列文章(下)

设置好途径后,导航到 BApp Store 选项卡,就可以最先下载我们将要运用的扩大插件了。 我想重点申明的两个插件是 JSON Web Token Attacker Autorize

 API 渗入测试从入门到通晓系列文章(下)

如今让我们更细致地看看这两个插件。

JSON Web Token Attacker

现在已有许多处置惩罚身份考证和受权的要领。 JWT 多是当代 API 上最经常使用的要领。 假如鄙人图中搜检Bearer token,你将注重到我们正在运用的 JWT 的几个明显标志: 三个片断,由冒号字符离开。 Base64编码的头部和声明部份,背面随着加密署名。

 API 渗入测试从入门到通晓系列文章(下)

这个令牌可以很轻易地在 Burp suite  内置的解码器中解码。 只需挑选令牌和 Base64 就可以解码整段文本。 上图中的文本解码后,以下:

{"alg":"HS256","typ":"JWT"}.{"userid":1,"tokenid":"fac15939-de30-481d-9d13-6ae89ecd7370","iat":1552444637,"exp":155244823N30.Ü¢R¥çe4r-ø£m-³Ì@

虽然 Burp Decoder 可以用这类体式格局以最小的破坏对文本举行解码,但我愿望对其举行修正和从新编码。 如许做将发生以下效果:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9LnsidXNlcmlkIjoxLCJ0b2tlbmlkIjoiZmFjMTU5MzktZGUzMC00ODFkLTlkMTMtNmFlODllY2Q3MzcwIiwiaWF0IjoxNTUyNDQ0NjM3LCJleHAiOjE1NTI0NDgyM04zMC7colISpedlNHItBvijbS0TmYWzzIFAAOmykTIWurMtDzVJ

这与原始值类似,但相对差别。 这是由于 JWT 不是单个 base64 编码的字符串。 标头和声明部份是离开编码的,去掉了任何添补信息(由一个或两个等于号示意)

JWT 完成中有一些缺点,只管大多数缺点比较少见。 对这些缺点的应用包括改动 JWT 并从新举行编码。 虽然这可以手动完成,但 JSON Web Token Attacker 能更轻易完成这个历程。我们只需从要求中复制值,然后切换到该插件增加的 Burp 中的 JOSEPH 选项卡。 接下来,翻开 Manual 子选项卡,并将值粘贴到输入框中。 然后点击加载按钮。

以后会显现一个进击挑选的下拉框界面。 这里有两种进击体式格局: 密钥殽杂(Key Confusion)和署名消除(Signature Exclusion)。 虽然对这些进击的深入研讨超出了本文要申明的局限,但我会给出一个简介的总结,就是这两种进击中的任何一种都邑将头部的 alg 值变动成差别的算法; 要么将其切换为 None (示意不须要署名) ,要么将其从不对称加密切换到对称加密,如许我们就可以用公钥天生有效的署名。 个中任何一种体式格局的平安性的影响是,加密署名一般是保证令牌完整性的唯一要领。 假如进击者可以破解该署名,则可以修正该令牌,使其具有进击者想要的任何声明。 在这个示例中,这可以意味着进击者会变动用户 ID 猎取其他账户的会话并运用该帐户。

让我们来看一下署名消除进击体式格局的操纵步骤,并逐渐完成基础的手动进击:

 API 渗入测试从入门到通晓系列文章(下)

1. 加载输入

2. 挑选署名消除

3. 加载

4. 挑选一个有效载荷one没有.

5. 更新

6. 猎取天生的值并将其用于 Repeater。假如你从一个有效的 JWT 作为进击的最先,而且改动的版本被接受了,那末你的进击就胜利了。以后你就可以继承改动声明部份了。

密钥殽杂的现实用法与署名消除险些是一样的,只是你须要供应公钥并对其举行转换。 一般的做法是署名算法挑选 RS256,而且公钥可用于考证署名。

 API 渗入测试从入门到通晓系列文章(下)

另一个你可以已注重到的事变是,你的 Burp 中的代办汗青如今有高亮显现的功用和一个新的上下文菜单。

 API 渗入测试从入门到通晓系列文章(下)

这是一个用于半自动进击的插件。 我个人不喜好如许运用这个插件,部份缘由是由于我发明它有时会变得杂沓,天生花样毛病的要求,另有一部份缘由是由于我喜好严格控制我发送的流量。 别的,关于完成 JWT 失效黑名单的体系的一个稀有的状况是,花样不准确的令牌会将会话列入黑名单。

只管云云,即使是手动进击形式也极大地简化了天生修正过的 JWT 的历程。 这使得这类要领常常成为 API 测试的有效东西。 我发明,发生这些破绽应用的完成体式格局好像并不稀有,然则斟酌到它们的严重性,应当一直对这些破绽举行测试。

自动化(Autorize

API 中可以会涌现种种受权题目。 除非 API 是完整公然的,不然你最少具有经由身份考证的接见权限和未经由身份考证的接见权限。 假如存在某个特定用户具有的资本或数据的观点,那末考证一个经由身份考证的用户不能接见他们不具有的任何资本黑白常有意义的。 有些 API 还具有多个垂直级别的接见权限,特别是在有构造观点的状况下。 一个用户可以比另一个用户有权接见更多的数据或功用。 一样,这取决于测试职员来确认是不是强迫实行了这类权限设置。 末了,在多租户体系中(比方,每一个客户机构造都有本身自力的空间) ,租户之间的数据或接见走漏是最大的平安题目之一。

关于一切这些状况,通用的测试战略是将资本和功用映射到具有准确权限的用户。 然后,我们用差别的接见令牌或会话从新发出雷同的要求,并比较我们的接见效果。 当权限模子具有任何真正的复杂性时,这个考证历程可以会异常耗时。 自动化可以明显进步测试效力。 让我们从导航到 Burp 中的 Autorize 选项卡作为最先,如许我们就可以完成最低限制的设置。

 API 渗入测试从入门到通晓系列文章(下)

1. 在切换经由身份考证的上下文时,我们要替代的标头有一个大文本框。这可以包括 Cookie 和任何其他要求标头,它们要像在平常要求中一样举行设置。

2. 关于 cookies,你可以点击从末了一个要求猎取 cookie ”的按钮来自动添补该文本框。

3. 高亮显现的按钮 “Autorize is…” 用于切换插件的开和关。 当封闭时,自动化将什么也不做。 当启动时,掷中 proxy* 的传入要求将运用你供应的标头或 cookie 举行替代并从新发出要求,同时省略这些标头或 cookie

* 界面底部的阻拦过滤器选项卡可用于肯定包括哪些要求。

如今已设置好了 Autorize,你可以经由历程 Postman 发出新的要求,并注重左边的 Autorize 地区会被添补。

 API 渗入测试从入门到通晓系列文章(下)

我的示例 API 正好具有雷同的相应,从显现相应长度的三个数字列(离别为746)可以看出这一点。 第一个是对未修正要求的相应,第二个是替代了令牌的要求,第三个是未经由身份考证的相应。 剩下的两列用交通信号灯一样的色彩示意强迫实行。 图中的黄色部份代表的是一种不肯定的相应,而赤色和绿色的部份离别用于示意受权是不是获得强迫实行或实行胜利。

如今,可以运用底部的未经由身份考证的要求探测器强迫要求探测器选项卡来调解认证什么时候见效。 这可以让你依据你对 API 行动的明白建立婚配前提,而且可以极大地革新效果对相应的诠释。 关于较大的 API,或许那些你预期要举行屡次测试的 API,这么做当然是值得的。 然则,关于一次性测试,我一般不对此举行调优,而是手动搜检相应或长度不一致的状况。

API 渗入测试从入门到通晓系列文章(下)

可以运用 Autorize UI 右边的选项卡(类似于 Burp 中的典范要乞降相应选项卡)来搜检修正过的和未经身份考证的要乞降相应。 这关于研讨要求之间为何存在差别、 API 做了什么以及对效劳端来讲是不是是准确的要求至关重要。

总结

虽然本系列文章的内容不够周全,然则愿望这篇文章可以供应充足充足的引见,让我们最先运用这些插件,这些插件在大多数 API 测试中都很有效,最少在当代 API 中是云云。 自动化关于测试 API SOAP 效劳也黑白常好用的,而 JSON Web Token Attacker 则异常特定于某种已变得相称盛行的而且是稀有的身份考证体式格局,特别是它在 OAuth2 完成中的运用。

原文地点: https://www.4hou.com/web/19115.html


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明API 渗入测试从入门到通晓系列文章(下)
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址