一键 Shell,我的 OSWE 之旅

 

终于收到了 Offsensive Security 的官方邮件通知最终结果,我的 OSWE 之旅也算是尘埃落定。打算以本文回顾一下自己的 OSWE 的准备过程,包括 AWAE 课程的学习和准备以及我在考试过程中踩得一些坑,希望对 OSWE 有兴趣的人能有所帮助。

ww1smR.png

 

初识 AWAE

Offsensive Security,作为安全圈的人应该都熟悉这家公司,Kali 就是他们家的。他们家最广为人知的课程也是 Pentration Testing with Kali Linux(PWK),其对应的考试为 Offsensive Security Certified Professional(OSCP)。我最初结识 Offsec 也是通过 OSCP,认识了一些考 OSCP 的小伙伴,结果一直因为没(bao)有(ming)准(fei)备(tai)好(gui),迟迟没有报名。结果大佬们一个个都通过了,报名费也从799美元涨到了999美元。

所以,当 AWAE 去年年末打折的时候,我毫不犹豫的就报名了。因为相对于 OSCP 来说,我也更喜欢 OSWE,因为自己毕竟是开发出身,对于代码审计也很感兴趣。疫情期间,的确有更多的时间可以看课程。有一个建议就是,当你的 lab 开始之后,可以第一时间就是预约考试,因为 OSWE 相对来说考试可以选的场次更少,越早越好,一共有3次可以重新预约考试的机会。Lab 结束之后,我也一直拖了好久,主要当时认识了几个小伙伴考试都失利了,所以我也没啥信心。最后还是硬着头皮预约了考试。

 

AWAE 课程

AWAE(Advanced Web Attacks and Exploitation) 是一门关于应用安全的审计课程。AWAE 经常被拿来和 OSCP 的 PWK 来进行比较,官方也有暗示 OSWE 是 OSCP 的进阶版本,OSCP 注重于漏洞的利用,而 OSWE 则更进一步,侧重于市从白盒角度去审计代码,发现安全漏洞。不过 OSCP 并不是 OSWE 的先决条件,有人认为必须先考 OSCP 才能考 OSWE,这是不正确的。因为我就没有报考 OSCP 直接考的 OSWE。不过,另外一方面,如果你通过了 OSCP,对于 OSWE 绝对是有帮助的。我也在考试过程中体会到正因为我缺乏 OSCP 的经验,导致我犯了一些低级错误。

关于 AWAE 的课程内容,官方有给出大纲。而且今年有课程的内容有比较大的更新,当时如果你的 lab 还有效的话,可以免费更新,不过我当时的 lab 已经失效了,就没有花钱更新了。新加入的内容包括了新的漏洞类型,包括 XXE 漏洞、弱随机口令生成漏洞、DOM 型 XSS、SSTI 以及 websocket 命令注入等。

AWAE 的课程内容其实在网上很多都已经有了相关的介绍。AWAE 的课程其实主要就是一个 PDF 以及 视频。我建议可以把 PDF 看完再去看视频,因为视频没有字幕,而字幕其实就是 PDF 文档。AWAE 的课程主要涵盖的是比较常见的漏洞类型,不过课程里面介绍的一些技巧还是非常重要的,因为很多技巧可能在考试中都会涉及。所以对于课程的内容一定要熟悉。建议 PDF 和视频可以多看几遍,exercise 以及 extra mile 都可以认真地做一下,如果实在卡住了,可以去论坛看看,如果你一页页翻得话,肯定可以找到对你有所启发的评论。我当时是买了一个月的 lab,加上当时是疫情期间,所以可以学习的时间也比较多一点,而且当时的 lab 还没有更新,所以机器少一点,一个月差不多刚好可以学完。不过现在的课程内容丰富了不少,一个月时间可能就比较紧张了。

得益于我国的网络环境,lab 可能无法直连,当初我也被折磨了很久。后来,我琢磨出最佳的方案就是,VPS 直接拨 openvpn,然后直接在服务器上操作。如果需要访问 web 应用的话,可以通过服务器的 socks 端口进行转发。实在是需要界面操作的话,我更推荐使用 x2goclent 而不是 VNC,相对来说使用体验优秀很多,不过还是会比较卡的,要有心理准备。学习过程中也应该做好笔记,包括踩到过什么坑,以及如何解决的,建议都做好记录,后面可能会有用。

对于考试准备首当其冲推荐的就是 Burp 的 Web Security Academy。这绝对是应用安全中的一门最有价值的课程之一,并且还是免费的,简直就是业界良心。后来发现某个国内安全厂商还白嫖过来写公众号文章。这门课程介绍了多种漏洞类型,对于每种漏洞类型都有教材讲解,并且有相应的 Lab 可以进行练习。另外一个我准备的就是 Pentester lab。这个平台学习的好处就是很多练习。不需要 HTB 那样复杂的靶机环境,所以不会受网络的影响很大。而且里面是有一个 code review 系列,我觉得对于 OSWE 的准备有一定的意义。不过这个平台是收费的,但免费也可以使用,只不过很多练习都是收费的。我以前是玩过 HTB 的,不过我打靶机不是特别厉害,HTB 上的确也有那种结合代码审计的靶机,但我觉得难度其实都挺高的。

 

OSWE 考试

考试应该是重头戏,应该是大家最为关注的部分,毕竟证书还是比较有意义的。其实 OSWE 的考试过程可能和 OSCP 比较类似,OSWE 的考试形式也就是给你 2 台靶机和 2 台对应的调试机器。需要完成代码审计,并且完成 auth bypass 以及 get shell,才能拿到所有的分。另外重要的一点就是,你需要将整个利用过程通过脚本实现,即通过脚本既可以完成 auth bypass 以及 get shell。所以,OSWE 考试需要一定的开发能力,并且要很好地调试自己的代码,因此需要一定的开发能力。

Offsensive Security 大多数考试都是需要监考的,包括 OSCP 以及 OSWE。关于监考的介绍可以参考这份文档。官网也有考试的相关说明文档。如果考过 OSCP 的,对于监考肯定就有经验了。监考程序就是一个 web 应用,并且需要安装一个 Chrome 插件,需要分享你的屏幕和摄像头。这里注意的一点是如果你有多个屏幕,那么你要选择对应的数目。并且考试的可能需要经常刷新,那么你可能需要重新选择的你的屏幕。我监考一开始折腾了好久,当时需要看我房间的环境,包括窗户和门口,还要看我的桌子并且还要看我的桌下,因为我的电脑是连着网线的,当时搬来搬去还挺麻烦的。接着就是验证你的 ID,我是把护照给监考看的,后来又问我有没有有报名地址的证件,我是没有的,就问我要了其它证件,我就展示了港澳通行证。展示完证件之后还要对着摄像头给监考看。不知道是不是因为外国人识别中国人比较困难,他看我反正看了很久。这一切程序结束了之后,就是考试正式开始了,会收到考试的 VPN 文件。然后你拨上 VPN,然后把连接信息给监考看就可以了。我监考折腾了好久,本来是应该五点钟考试准时开始的,硬是搞到了五点半多,后来和官方发邮件了,也给我延了半小时。考试过程中,你遇到的任何问题,包括网络或者其它的问题,监考都不会回答你。在考试过程中,随时都可以休息,毕竟48小时是个体力活,不过每次离开和回来最好都说一声。

OSWE 的考试既需要对代码的审计,寻找漏洞,又需要 exploit 的能力,对漏洞进行利用,缺一不可。考试中,很重要的一点就是千万不要钻牛角尖,不存在这个漏洞肯定存在这个地方,或者漏洞就时应该这样利用的。如果这里不行,可以换个地方看看,如果这个 payload 不成功,可以尝试换一个。切不可死钻牛角尖,认为它肯定是这样的。或者可以直接去休息下,或者看看教材有没有相似类型的,翻翻笔记,或许能有所启发。考试之前,官方发的邮件记得仔细阅读,不要一上去就急着做题目,48小时其实对于题目的完成应该是足够的。我建议考试的时候是边尝试 debug 机器,边验证靶机。我当初一开始就是完全在 debug 机器尝试,后来希望在靶机上可以一键 shell,还是太天真了。后来在靶机上遇到了各种各样的问题,也有可能是网络原因导致的不可利用,导致我当时非常的慌。所以,建议还是先拿到 proof 再说,exploit 的脚本可以放在后面慢慢试。不要做没有意义的事情。考试的时候,就是因为有个地方用 Java 些比较简单,我就想用 Java 来完成这台机器的 exploit 的脚本。殊不知 Java 在编写的时候没有 Python 的 requests 库那么方便,而且很多东西还要再去查,而且还需要变异的时间,后来我还是放弃了,感觉当时浪费了我不少时间。另外一个建议就是在平常的准备过程中,也到锻炼自己写 exploit 脚本的能力,这样也避免在考试过程中花费太多的时间写脚本。

我的考试过程是从第一天的早上4点45分持续到第3天的5点15分,因为监考的原因帮我延长了半个小时,直到最后一刻我还在尝试我的 exploit 脚本。老实说,如果再给我一次机会,我可能并不会选择报考。考试过程真的太累了,48个半小时,我几乎只睡了4个多小时,当然还有其它的休息时间,但是都没有睡着。尤其是第一天,到了凌晨,其实我也是很困的,但是就是睡不着。当时那种焦灼的心态,还是比较难受的。我记得当时 exploit 在我的 debug 机器好好的,到了靶机突然又不可以了,我真的是非常崩溃。而且考完试,我的颈椎就变得不好了。

 

报告

考试结束之后就是写报告了,报告的要求在官方的文档里面都有说明。所以在考试的过程中,记得做好截图和笔记。官方是不允许对考试过程做录屏的,很多小伙伴可能担心不录屏可能会有所遗漏,其实还好,只要多截些图应该都没有问题的。个别的遗漏也不会影响整个报告。考试完之后我就睡了一觉,然后去吃了顿火锅,就回来写报告了。报告几乎是一气呵成,写英文报告对于我来说还是比较简单的,加上之前有做过笔记,所以主要工作就是理清思路,写清楚。整个写报告的过程大概花了三四个小时。写完报告我也没怎么修改,就提交了。提交报告记得一定要按照官方的要求命名文件名称,加密上传,如果因为个人原因导致报告的问题,可能会不通过,而且官方也并不会提醒你。当你把报告的上传链接发送给官方之后,会收到一封回执邮件,仅仅是确认收到。

官方对于报告是有提供一个模板的,包括 .doc 格式以及 .odt 格式。但是 word 有一个问题就是越到后面保存就会变得很卡,尤其一般这个报告写得应该还是比较长的。另外一个问题就是格式问题,后面我在调整目录的时候就导致很多地方的格式又乱掉了,很多地方又得重新调整。所以后面我创建了一个 Tex 的模板,oswe-report-template.Tex 相对于 word 来说,格式是一直稳定的,所以会省略很多调整格式的烦劳,所以一般在科研论文的写作中,很多人都比较喜爱使用 Tex。我基本上是按照官方的模板百分百还原了,感兴趣的可以尝试看看。

报告提交之后,10个工作日以内会给出结果的,我差不多是6天的时间。收到结果的邮件是凌晨,当时我凌晨醒了一下结果就看到了。虽然没有想象中那么兴奋,但是知道结果之后我还是睡不着了。毕竟,之前也是一直焦灼地等待结果。邮件主要就是确认一下证件上的姓名,如果姓名没有问题的话就是反馈一下收件地址,因为新冠的原因,证件寄过来可能非常久。

 

总结

AWAE 的准备过程以及 OSWE 的过程都是一个比较复杂和纠结的过程。这个过程可能不是非常美好的,不过我也在准备的过程中结识了很多优秀的小伙伴。这整个过程其实就是一个爬山的过程,你必须一直坚持着往上爬,否则可能就是半途而废没有结果了。但当真正一切结束,经历完这个考试,你或许也能体会到 Try Harder 的含义吧!

 

Reference

(完)