zseano的方法论-运用我的方法和技术

阅读量    90578 |

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

 

zseano的方法论第二篇,上一篇主要介绍了zseano通常测试的漏洞类型及思路,主要聚焦于基础的知识,这一篇开始主要讲实际的漏洞挖掘的思考要点,通过问答的方式帮你快速聚焦可能存在的漏洞点及测试思路


让我们运用我的方法和技术 摸清情况

因此,正如我之前提到的,我在选择错误赏金计划时的意图是想花上六个月的时间来学习和探究他们的范围内的领域和他们的功能,目的是想尽可能深入地加班。有了大量的玩法,它可以帮助你更快地了解该计划的常见错误可能犯的错误。说到这里,在我打开一个项目的范围内的领域之前,我想知道一些事情。

有谁发现了什么并披露了一个写法?

记得我说过,我希望能够为自己创造一个线索和一个起点。在进行黑客攻击之前,我将在谷歌、HackerOne披露和OpenBugBounty搜索过去发现的任何问题,因为我想知道是否发现了任何有效的问题,以及是否使用了任何有趣的绕过方法。

测试公开披露的bug可以立即给你一个起点,让你洞察到在了解网站如何运作时需要注意的问题类型的工作方式。有时,你甚至可以绕过已公开的旧的错误!(https://hackerone.com/reports/504509)

在第一次初步检查之后,在运行任何扫描器之前,我现在想先了解一下感受一下他们的主要网络应用如何工作。在这一点上,我将测试上述的错误类型因为我的总体意图只是为了了解事情是如何工作的。当你自然而然地了解他们的网站是如何工作的时候,你会从这些基本测试中遇到有趣的行为。我总是带着这样的假设去做测试:网站是安全的,它应该是按计划工作的。

拿出你的笔记本,因为这就是笔记的开始。在我测试的过程中,我提到我会定期写下有趣的行为和终点,以便在我第一次看完之后再回来看。词表是从第一天开始创建的。你有多少个自定义词表?我希望比0多。为你的目标建立一张藏宝图!

当测试一个功能时,例如注册和登录过程,我的脑子里会不断地出现一些问题。例如,我可以用我的社交媒体账户登录吗?在移动应用上也是这样吗?如果我尝试另一个国家区域,我是否可以用更多的选择来登录,例如微信(通常针对中国用户)。哪些字符是不允许的?我让我的想法自然地进入了兔子洞,因为这就是让你成为一个天生的黑客的原因。当你注册时,你可以控制哪些输入注册?这些体现在哪里?同样,手机注册是否使用不同的 代码库?我发现很多存储的XSS来自于简单地通过移动应用而不是PC端。没有做任何过滤!我有没有提到过黑客攻击的可能性是无穷无尽的?

以下是我在初次查看时寻找的关键特征清单,以及我在寻找这些领域的漏洞时问自己的问题。按照同样的方法并问同样的问题,你很可能得到和我一样的答案——一个有效的漏洞!

注册程序

注册需要什么信息?如果有很多信息(姓名、地点、简历等),那么注册后这些信息在哪里体现?

下面是注册BARKER时的一个例子。它要求你输入一个显示名称、个人资料描述和上传照片。这是在注册时要玩的相当多的东西,可以让你忙上几个小时。因此,让我们思考一下,弄清楚我们应该寻找什么。

上传照片:我在上面提到,我们想确定我们可以上传什么类型的文件,所以我们上传一张普通的jpeg图片,但把扩展名改为.txt.xml和.svg,看看它是如何处理的。现在,这可能取决于网络应用的工作方式但你可能不会看到你的照片是在哪里上传的,直到你完成了完成注册过程后,你才会看到你的照片被上传至何处。现在你能明白为什么多次重新测试功能的作用?(我在下面会提到更多这方面的内容)

显示名称和个人资料描述。同样,这些可能在你完成注册过程后才会被看到。完成注册过程后才能看到,但它们显示在什么地方,有哪些字符是允许的?不仅如此,还要考虑这些信息在哪里被使用。想象一下,你可以但当你在桌面上查看你的个人资料时,它并不容易被发现。但移动应用程序呢,或者在与网站互动时呢(发帖。添加某人),开发者是否只在你的个人资料上防止XSS?

我可以用我的社交媒体账户注册吗?

如果可以,这是否通过某种类型的Oauth流程实现,其中包含我可能会泄漏的令牌?哪些社交媒体账户是允许的?他们信任我的社交媒体资料中的哪些信息?我曾经通过导入我的facebook相册发现存储的XSS方便地命名为”<script>alert(0)</script>“。

我可以用@target.com注册吗,还是被列入黑名单?

如果是被列入黑名单。问题是为什么?也许它在注册后有特殊的特权/功能?你能绕过这个?尝试使用你的目标站点电子邮件地址进行注册。

如果我在注册后重新访问注册页面会发生什么?

它是否会重定向。我可以用一个参数来控制它吗?(很可能是的!)如果我以认证用户身份重新注册会发生什么?从开发者的角度来考虑:他们他们希望用户有一个良好的体验,所以在认证后重新访问注册页面时应该重定向你。这就需要用参数来控制重定向给用户!

在这个端点上使用什么参数?

有没有在源文件或 javascript中列出的吗?每种语言类型和设备都一样吗?(桌面与手机)

如果适用,这个页面上的.js文件是做什么的?

也许登录页面有 一个特定的”login.js”文件,其中包含更多的URL。这也可能给你一个迹象表明,该网站的每个功能都依赖于一个.js文件。我有一个关于的视频,你可以在这里找到。让我们尝试阅读.js 文件

https://www.youtube.com/watch?v=0jM8dDVifaI

谷歌对注册页面了解多少?

登录/注册页面经常变化经常变化(又是用户体验),而且Google机器人会索引并记住很多东西。

site:example.com inurl:register inurl:& site:example.com inurl:signup inurl:&。
site:example.com inurl:join inurl:&.

如果我尝试用myemail%00@email.com 登录,会发生什么?

它是否识别出它 为myemail@email.com,并可能登录我?如果是,请尝试用my%00email@email.com,并尝试接管账户。思考同样的问题在注册用户名的时候也要考虑到这一点。

我可以用我的社交媒体账户登录吗?

如果可以,这是否通过某种实现的,其中包含我可能会泄露的令牌?哪些社交媒体账户是允许的?是否所有国家都一样?这通常是与注册过程有关,但不一定。有时你只能通过社交媒体登录,而不是注册,一旦登录就可以使用。(这本身就是另一个需要测试的过程!)

移动端登录的流程与桌面端有什么不同?

记住,用户体验! 移动网站的设计是为了用户拥有最简单的流程,因为他们没有鼠标来 轻松浏览。

“你们难道没有手机吗?” – 2018年暴雪大会

重置密码时,使用什么参数?

也许它将容易受到 IDOR(尝试注入一个id参数并测试HPP!)。主机头是否可信?想象一下,当重设密码时,你把主机设置为。Host:evil.com,那么它是否会相信这个值并在邮件中发送,当用户点击链接时,导致重置密码令牌泄露点击链接(指向evil.com/resetpassword?token=123)

通常情况下,你可以测试登录/注册/重置密码的速率限制(暴力攻击),但通常这被认为是信息性的/超出范围的,所以我通常不会浪费我的时间。检查程序政策并检查他们在这方面的立场。大多数网站实施强密码政策和2FA。

更新账户信息

在更新你的个人资料信息时,是否有任何CSRF保护?

应该有,所以期待它。请记住,我们希望这个网站是安全的,而我们想挑战一下自己,绕过他们的保护。

如果有,这如何验证的?如果我发送一个空白的CSRF令牌,或者一个相同长度的令牌,会发生什么?长度的令牌会怎样?

更改电子邮件/密码时,有没有第二次确认?

如果没有,那么你可以将其与XSS联系起来,以便接管账户。通常情况下,它本身并不是一个问题,但如果厂商希望看到XSS的影响,那么这就是需要考虑的问题。

它们如何处理基本的< > “ ‘ 字符,它们反映在哪里?还有编码字符

比如%09 %07 %0d%0a,这些字符应该在任何可能的地方被测试。它被提到过几次,但有时事情会被忽略了。不要放过任何蛛丝马迹。

如果我可以在我的个人资料上输入我自己的网址,有什么过滤措施可以防止 诸如javascript:alert(0)之类的东西?

这是我在设置个人资料时寻找的一个点

在移动应用程序上更新我的账户信息是否不同?

大多数移动 应用会使用API来更新信息,所以可能会受到IDOR的影响。此外,不同的过滤方式也可能适用。我有很多案例,XSS在桌面网站上被过滤掉了,但在移动应用程序中却没有。也许移动团队不像桌面团队那样受过安全培训?也许是太仓促了。

他们如何处理照片/视频的上传(如果有的话)?在那里有什么样的过滤措施?

我是否可以上传.txt,尽管它说只允许.jpg.png?他们是否他们是否将这些文件存储在根域上,还是将其托管在其他地方?即使它是存储在其他地方(例如cdn.com),检查这个域名是否包括在CSP中,因为它可能仍然是有用的。

在我的公开资料中,究竟有哪些信息是我可以控制的?

关键是你能控制什么,以及如何和在哪里反映。有什么措施可以 例如,如何防止我在我的简历中输入恶意的HTML?也许他们已经 使用htmlentities,所以< >”被过滤了,它被输出为:

但你可以用’);alert(‘example’);这样的结果是:

开发者工具

开发者工具将包括诸如测试webhooks、oauth流程等。graphql explorers。这些是专门为开发者设置的工具,用于搜索和测试各种公开的API。

他们的主机在哪里?他们是自己托管还是在AWS上托管?

通常是这样。这一点很重要,因为如果它被托管在AWS上,那么你的目的将是读取AWS密钥

有哪些工具可供开发人员使用?

我可以测试一个webhook事件吗?比如说?只要谷歌一下SSRF webhook,你就会看到。

我能否真正看到任何工具上的反应?

如果是的话,请关注这个问题,因为有了这个响应,我们可以更容易地证明影响,如果我们发现一个错误。

我可以创建自己的应用程序,并且权限可以正常工作吗?

我有一个 即使用户在允许一个应用程序时点击”否”,返回的令牌仍然可以访问。仍然有权限。(令牌不应该有权限做任何事情!)

以下面这个关于KREATIVE的例子为例。作为一个黑客,你在想什么?好吧,首先,让我们看看当我们生成一个API密钥时会发生什么。

第一件让我印象深刻的事情是明确允许的特定权限。不需要”特殊”的黑客行为,你看到的是你面前的东西,并看到它是否按预期工作oauth页面告诉我们,我们只能用返回的api密钥查看我们的kreative狗,但情况是这样吗?只有一个办法可以找出答案。

除此以外,如上所述,如果你按下”取消”键,有时会生成一个令牌,但它没有权限。但实际情况是这样的吗?除此之外,我们可以控制”取消”参数吗?我们可以在URL中看到”returnTo”,但没有关于cancelUrl的信息。也许它能起作用呢!?

从一个简单的功能中,你可以看到我已经有这么多需要测试的东西了。在整个网络应用中应用这一点,你可以开始看到为什么需要时间、耐心和努力工作。

在创建一个应用程序后,登录流程究竟是如何运作的?而当我把应用程序与我的个人资料 “断开 “时。令牌是否会失效?

是否使用了新的return_uri参数,它们是如何工作的?一个小”技巧”是你可能会发现一些公司将某些域名列入白名单,以便进行调试/测试。试试把theirdomain.com作为redirectUri,以及流行的CDNs,如 amazonaws.com,.aws.amazon.com。http://localhost/,这也很常见,但不会影响所有的用户(他们必须要有自己的用户名)。影响所有用户(他们必须在自己的机器上运行一些东西)。

维基/帮助文档是否透露了关于API如何工作的任何信息?

我曾经遇到过一个问题,我可以泄露一个用户令牌,但我不知道如何去使用它。维基提供了关于如何验证令牌的信息,而我能够创建P1影响。API文档还揭示了更多的API端点,加上关键词用于你为这个目标建立的词表。

我可以上传任何文件,如应用图像吗?过滤是否与和更新我的账户信息一样,还是使用不同的代码库?

只是在example.com上传你的个人照片并不存在漏洞,并不意味着在example.com上传个人照片时使用了不同的代码。并不意味着在developer.example.com上传个人照片时使用了不同的代码

我可以在开发者网站上创建一个单独的账户吗?还是与主域共享同一个会话?如果是这样的话,登录过程是怎样的?

有时你可以通过你的主会话登录到开发者网站(developer.example.com)。主会话(www.example.com),会有某种类型的令牌交换由一个重定向处理。输入你可能已经发现的那个开放的url重定向现在已经发现了。

如果它是一个全新的账户,那么重新进入查看输出的内容的过程和地方等等。实际上,我更喜欢你需要注册一个新账户的时候,因为这意味着很可能会有不同的代码被使用,从而产生一个新的挑战和新的发现。

该网站的主要特点

这可能取决于你正在使用的网站。

例如,如果我选择的程序是是Dropbox,那么我会关注他们是如何处理文件上传的,并从那里开始研究可用的功能。从那里可以得到什么。我可以在不同的网站上连接我的Dropbox账户 网站上连接我的Dropbox账户,那么第三方集成是如何工作的?关于要求某些 权限?

或者,如果是美国在线,那么我将专注于美国在线邮件开始。争取围绕业务建立的功能,并应包含安全,看看究竟它到底是如何工作的。从顶部开始绘制他们的功能。这让你发现很多功能,并可能占用很多时间,要有耐心并相信这个过程。

当你测试每个功能的时候,你应该加班加点地得到一个,渐渐地,你应该对网站是如何组成的有一个思路

例如,你开始注意到所有的请求都使用GraphQL,或者你发现整个网站使用相同的参数 “xyz_id=11”。同样的代码?事件型漏洞就变成了通用型漏洞。

主网络应用的所有功能在移动应用上也可用吗?它们的工作方式是否完全不同?

有时你会发现有些功能只在移动应用上可用,而不是在桌面上。不要忘了也要测试不同国家的域名(如果在范围内),因为你可能会发现不同国家提供的不同的功能(这在结账时很常见,因为不同的国家会有不同的支付选项)

我实际上可以使用哪些功能,它们做什么,处理什么类型的数据?多个功能是否都使用同一个数据源?

举例来说。想象一下,你有一个商店,你可能有多个区域来选择一个地址进行发货。在最后的结账页面,在产品页面—估计运费,是否每个请求都是相同的,以检索这些信息(API),或者是不同的参数/端点。

我可以为任何升级的功能付费吗?

如果是的话,请用付费与免费账户进行测试。免费账户能否在不实际付费的情况下访问付费内容?通常情况下,支付是漏洞最多的领域,因为研究人员不愿意为可能找不到的问题付费。发现一个问题。就我个人而言,我总是在升级后发现一个错误,但这可能因程序而异。

最古老的功能是什么?

研究该公司,寻找他们兴奋地发布但最终没有成功的功能。也许从代码的周围你可以找到与该功能相关的旧文件,这可能会给你一个窗口。旧代码=漏洞

他们计划发布哪些新功能?

我可以在他们的网站上找到任何关于它的参考资料吗?已经在他们的网站上?在twitter上关注他们,并注册他们的新闻简报。保持最新的掌握该公司正在进行的工作的最新情况,这样你就可以抢先一步,不仅可以在该功能发布时对其进行测试,而且还可以寻找该功能。测试这个功能,而且在它发布之前就能找到它。(考虑将真改为假?)。在这里可以找到一篇关于这方面的好文章:

https://www.jonbottarini.com/2019/06/17/using-burp-suite-match-and-replace-settings-to-escalate-your-user-privileges-and-find-hidden-features/。

是否有任何功能提供隐私设置(私人和公共)?

花点时间测试一些东西是否只是按照他们的意图工作。那个帖子真的是隐私吗?不需要特别的侦察或”秘密”,你只是在看你面前的东西,并测试它是否按预期工作。你只是在看你面前的东西,并测试它是否按预期工作。

如果任何功能有不同的账户级别权限(管理员,版主。用户,访客),那么一定要测试各种级别的权限。

访客是否可以进行 只有版主才可以的API调用?如果你发现你选择的程序 有不同的账户级别,那么你的眼睛就应该立即亮起一些东西来 测试的东西。

支付功能

如果我升级我的账户,可以使用哪些功能?我可以在不付费的情况下使用这些功能吗?不付费?

可悲的是,有些项目会说唯一的影响是收入的损失(商业影响?),可能不接受这种类型的问题本身,但是从能够从非付费升级到付费,你将解锁更多的功能来玩的功能!

因为它在HTML DOM中,所以很容易从XSS中获得吗?

组合XSS来泄露支付信息,以获得更大的影响。有些公司喜欢看到影响所以要牢记这一点。

不同国家有哪些支付方式?

我提到 支付功能,因为有一个特定的目标要求通过电话验证来宣称的所有权。他们推出了一个新功能来运行广告,如果我把我的 国家从英国切换到美国,那么我就可以输入我的 “检查账户 “的详细信息。问题是,沙盒的细节并没有被阻止。这这使我能够绕过他们所有的验证机制,我被授予所有权。你可以从以下网站找到测试号码,如

http://support.worldpay.com/support/kb/bg/testandgolive/tgl5103.html 
https://www.paypalobjects.com/en_GB/vhelp/paypalmanager_help/credit_card_numbers.htm

 

最后

我建议你回到开头,阅读关于我通常寻找的漏洞而理性,以及我想找到过滤器的思考过程。然后再读一下我对网站的第一印象和我希望得到解答的问题。然后迈出一步,想象一下你刚刚读到的内容。

黑客攻击?我只是用基本的测试方法测试了眼前的功能,应该是安全的,并开始创建我所测试的网站的笔记。开始发现,黑客攻击并不难?在这一点上,你更有可能发现了至少一个漏洞,你的内心充满了兴奋感。

接下来,是时候扩大我们的攻击面,深入挖掘了。下一节包括我运行的工具的信息,以及我在运行这些工具时具体寻找的东西。运行这些工具时具体寻找什么。

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多