美文网首页安全技术万网极研社
保护好你的JENKINS实例,别等着黑客来提醒你!(价值5000

保护好你的JENKINS实例,别等着黑客来提醒你!(价值5000

作者: cnRay | 来源:发表于2017-12-22 19:24 被阅读21次

在levelUp上发表完“Doing Recon Like a Boss”和更新了一篇Hackerone上同样主题的帖子后,我决定开始挖一些公开项目漏洞,看看这种方法是否仍然适用于公开项目。作为其中的一部分,我决定看看SlackSnapchat的漏洞赏金项目,并按照演讲中描述的那样准确地完成侦察任务。

Step #1 –子域名爆破

子域收集通常在大型漏洞赏金项目中是一个好的开头,但不幸的是我发现的子域并不是很有趣,所以我决定找到更“有趣”的东西。跳到第二阶段。

Step #2 – Amazon网络服务(AWS

Amazon一直都是一个不错的起点,但了解到的是Snapchat很大程度上依赖于Google,而且他们在Hackerone漏洞赏金项目中已经声明了他们的APP是托管在Google上的。那么我们不要继续在s3 buckets上浪费时间了,看看还有什么吧!

Step #3  – HackerOneSnapchat的披露报告

作为侦察任务的一部分,我通常喜欢寻找已知或披露的漏洞。我快速浏览了一下他们的Hacktivity并发现如下内容:

– render.bitstrips.com

– blog.snapchat.com

– accounts.snapchat.com

– fastly.sc-cdn.net

– sc-corp.net(感谢Shubs

“sc-cdn.net”和“sc-corp.net”都引起了我的注意。我的第一反应就是子域名爆破,但这是在自欺欺人。这些是corp / cdn域名,而且很有可能大多数这些有趣的子域名都有特定的模式。现在的问题是我该如何发现他们?

Step #4: Censys / Shodan

在Censys.io上查找证书一般是个很好的方式。通常我在censys上使用类似于这样的查询条件:

443.https.tls.certificate.parsed.extensions.subject_alt_name.dns_names:domain.com

在通过暴力破解不能找到有趣的子域名情况下,再用这种方法就足够了。通过这些结果,我发现了一个子域名:REDACTED-jenkins-Environment.sc-corp.net,该域名要求用户登录才能查看具体内容。这个时候,我想知道是否存在生产环境。肯定有很多,让我们找一下吧。为了加速我的进程,我用了能查找以下不同REDACTED-jenkins-$env.sc-corp.net序列列表的脚本:

“dev, alpha, stage, prod, beta, local,test”。正如我所期望的那样,其中一些结果返回了302响应码,这暗示他们可能需要登录。

Step #5:从这里我能干什么呢?

我最初的想法是很明显地尝试登录这个产品实例,但这并没有成功(感谢preben_ve)。因此,让我们下移列表,并在其他实例上尝试相同的方法。这就是所有乐趣开始的地方。算我幸运,我发现的其中一个实例允许我使用gmail帐户登录到Jenkins实例。现在,我已经通过了它们的Jenkins实例身份验证,我认为它可能只给了最小的权限允许我做一些事情,更不用说允许我访问“Script Console(脚本控制台)”了。这时候,我运行了一个允许我从这台服务器读取一份文件的脚本,然后立刻停止所有测试并将细节提交给了Snapchat团队。没有必要执行其他脚本来证明影响,因为我已经可以读取系统上的任意文件了。为了证明RCE(远程代码执行),我在报告中包含了一份允许执行命令的脚本,并要求他们自己冒险进行测试。我们晚一点儿讨论这些脚本。

Step #6:利用Jenkins漏洞

我写这篇帖子不只是为了讨论我提交给Snapchat的报告,因为其实大多数信息能通过我在HackerOne上的限制公开披露并做一些简单的侦察猜到。我写这篇帖子的目的是深入探讨利用Jenkins的漏洞,并讨论它是否真的值2万美元。为了实现这个目的,我用自己的Jenkins实例来演示不同的攻击场景(截图与我提交给Snapchat的报告无关):

Example #1:已知漏洞(只是为了突出一些)

CVE-2016-9299– Jenkins Java 反序列化远程代码执行漏洞

CVE-2015-8103– Jenkins CLI – RMI Java 反序列化(Exploit)

Example #2:访问构建信息:

通常有权访问Jenkins的构建信息则说民可能会让你访问凭据,api_keys / secrets这里是源码:

Example #3:插件

Jenkins

允许你安装不同的插件,比如Github OAuth,你可以允许用户使用你的组织进行登录,这可能泄露你的Github令牌:

使用Github API可以访问更多数据。比如:https://api.github.com/orgs/ORG_NAME/repos?access_token=XXXXX

Example #4: Groovy脚本

正如我之前提到的,脚本控制台允许你使用一行代码来读取文件:

通过以下代码你也能在这台服务器上执行一条命令:

def sout = new StringBuilder(), serr = new StringBuilder()

def proc = 'ls /etc/'.execute()

proc.consumeProcessOutput(sout, serr)

proc.waitForOrKill(1000)

println "out> $sout err> $serr"

关键点:

1. Jenkins允许你有不同的用户权限。这意味着你得通过Jenkins实例登录认证,它不保证你可以执行远程代码。

2.如果需要通过Github或Google OAuth认证,不要被吓到。

3.你的访问权限可能有限(没有脚本,构建信息等),但是你可以访问“People”列表中的用户。这也许能让你通过暴力破解的方式获取登录凭证(我没有那么极端)。

4.通常Jenkins被用于部署,所以查一下IP,主机名等。如果你拿下了Jenkins而且想进一步测试(在漏洞赏金项目中尽量避免,完全没必要而且会违反大多数项目规则),值得注意的是Jenkins服务器最有可能有权限访问生产环境或内网环境。在运行的服务器上找找私钥和主机。

5.不要在你的报告中使用“公开可访问的Jenkins”,除非你可以利用上面的一个或多个例子。

6. Snapchat立刻移除了这个实例并奖励了我。他们也非常友善地同意我写这篇关于这个漏洞的帖子。

感谢阅读,挖洞愉快!

相关文章

  • 保护好你的JENKINS实例,别等着黑客来提醒你!(价值5000

    在levelUp上发表完“Doing Recon Like a Boss”和更新了一篇Hackerone上同样主...

  • 开源持续交付黑客松,5000大奖等你来拿

    本文首发于:Jenkins 中文社区 黑客松编程比赛开启报名,巅峰对决,等你来战! 你是否希望与顶尖编程高手同场较...

  • 你的价值,不是等着别人来发现,而是需要自己去创造的。

    你的价值,不是等着别人来发现,而是需要自己去创造的。

  • 等着你来

    三月的风 把瘦削的小村 肥沃成花的海洋 妆点了庄前屋后 绚烂了阡陌纵横 每一棵桃树都是诗人 每一朵桃花都是佳句 花...

  • 等着你来

    三月的风 把瘦削的小村 肥沃成了花的海洋 花开庄前屋后 花开阡陌纵横 每一棵桃树都是诗人 每一朵桃花都是佳句 顾不...

  • 等着你来

    我扫着庭院,如秋风拂过 有沙沙的响声 我在等你一起 咀嚼秋天 记住,别迟到 早些来

  • 等着你来

    许久以来,你是否 身在闹市,心向桃源 您是否也如我这般感念到 城市里钢筋水泥的高楼 可以暂寄红尘苟活的躯体 却难能...

  • 等着你来

    我站在窗外 等着你来 即使人潮拥挤或不在 还是没看到你的到来 我站在阳台 等着你来 即使花开了谢了又开 还是没看到...

  • 等着你来

    每天看着落日 咕咚一声 沉入海底 螃蟹剥着我的壳 辗转反侧着虚幻 最后一枚硬币 从天堂坠落 半握的小手 握住了前世...

  • 持续交付黑客松--导师招募

    本文首发于:Jenkins 中文社区 持续交付黑客松--导师招募 持续交付黑客松导师招募 Jenkins 中文社区...

网友评论

    本文标题:保护好你的JENKINS实例,别等着黑客来提醒你!(价值5000

    本文链接:https://www.haomeiwen.com/subject/swlxgxtx.html