前言
本月中旬收到Offsec邮寄的OSWE证书和会员卡,由于国内关于OSWE认证方面的相关文章很少,于是投稿本文希望能对准备考试的同行有所帮助。
Offsec(Offensive Security)因kali、exploitDB、vulnhub等知名项目而被业内熟知,如果了解Offsec系列认证的朋友,应该知道他家的认证都是实战类,OSWE属于Offsec目前提供的三大高级认证之一,2019年之前只在每年的Blackhat USA提供一次。去年老版的OSCE已退役,新版的OSCE分成三个部分:OSWE(WEB代码审计方向)、OSEP(高级渗透测试方向)以及OSED(windows漏洞开发方向),三个证书全部通过之后可以获得OSCE³,我想着反正全部要考,就依次来吧,先报名OSWE的认证考试。
OSWE简介
OSWE(Offensive Security Web Expert),其对应的是AWAE课程(Advanced Web Attacks and Exploitation),侧重于WEB应用程序代码审计方向,主要考察php、java、node.js、.net和python方面的WEB程序漏洞发现及exploit利用脚本开发的技能,包括反序列化、SSTI、SQL盲注、XML实体注入和 websocket 命令注入等方面的漏洞挖掘,具体可以查看官方大纲。
在网络攻防方向的高级证书,没有任何一个可以涵盖所有的技术领域,比如二进制/操作系统方向有GXPN/OSED/OSEE认证,高级渗透测试方向有OSEP,WEB程序方向对应的高级认证是OSWE,这也是Offsec跟随发展趋势将OSCE³拆分成三个方向的主要原因。以下是2021年最新网络安全各个领域的相关认证证书,红色对应是渗透测试方向的证书:
考试费用根据Lab实验时长分为两个价位,60天时长的实验室费用1299美元,90天时长的实验室费用1499美元,包含PDF教材+视频教材+对应时长的LAB环境+1次考试机会:
课程准备及形式
报名成功之后,就可以预约课程及Lab的开始时间,建议在预约时间之前做一下准备:AWAE课程主要是围绕WEB代码审计,所以最好提前熟悉掌握php、java、c#、JavaScript和python方面的编程语言,虽然不用特别精通,但是需要能够轻松的阅读理解代码及执行逻辑,便于寻找漏洞;OSWE仅仅发现漏洞是不够的,还需要编写自动化利用脚本,不然无法通过考试,所以建议强化一下Python或Java的编程能力,便于编写利用脚本;建议详细看一下官方大纲,提前对WEB相关漏洞的原理进行理解。
课程的形式是400多页PDF的英文教材+10个小时的配套英文视频+Lab环境,正式开始之后官方会将相关教材及VPN连接包发送到注册邮箱,资料下载有72个小时的时限要求,所以建议尽早下载并保存好,否则会额外收取199美元的费用。PDF教材、视频和Lab环境是对应的,可以边看教材边进行Lab实验,完成教程对应的教学靶机之后,还会有额外的机器用来检验成果。为了节省时间,我在实验过程中基本没有观看视频,只有在PDF实在理解不了的情况下去听一下视频里的讲解。
我之前打过HTB,达到Elite Hacker级别后就没再继续打,感觉Lab机器的难度应该在Hard级别左右,可以参考OSWE like machines熟悉一下:
网络环境
因为网络环境的原因,连接Lab的时候经常出现连不上或者质量不好的情况,关于这方面其实网上很多OSCP相关的文章都提到一些很好的解决方案,这里说一下我之前用的方案,采用的是L2TP/IPSec VPN,在主机上面链接IPSec VPN之后直接把kali机器的所有流量代理出去,连接稳定,丢包率比较低。
考试规则
接下来讲下重要的考试部分,OSWE的课程开始之后就可以直接预约考试,这点和OSCP不同,可能是为了方便大佬们直接考试吧T_T,其他的监考规则和OSCP一样,就不多介绍了,共有3次修改考试时间的机会,但是在考试开始前48小时就无法修改了,只能硬着头皮上了……
考试题目:共有2道,从php、java、node.js、.net和python语言随机抽取2套WEB程序,需要审查代码挖掘存在的漏洞。
考试分值:共100分,每道题目分为bypass auth和rce两个步骤,bypass auth分值是35分,rce分值是15分。
考试要求:总分需要达到85分,所以至少要getshell一台机器,并完成另一台的bypass,且漏洞利用过程必须使用脚本自动化利用(禁止使用源代码分析攻击、自动化攻击、漏洞扫描等自动化工具),详见考试指南。考试时间结束之后,要求在24小时内提交详细的英文考试报告,否则以零分计算。
考试时间:共有48个小时,但提前15分钟就会结束VPN连接,也就是有 47 小时 45 分钟的时间来完成考试。
考试环境:共有五台机器,分别是2台考试机器及对应的2台debug机器,考试机器和debug机器的环境是一模一样的,用于审计代码和调试脚本,还有1台攻击机器(可能是为了避免网络环境因素而影响跑随机数之类的漏洞利用),共有50次还原机器的机会:
考前准备
1.吃饱睡好,毕竟48小时,万一没思路基本上就睡不好了T_T
2.准备好考试使用的系统环境,只要能完成Lab实验里面的机器就不用更新了,之前我考OSCP的时候2就是最后更新了一下系统,导致考试的时候没法使用,浪费不少时间,只能恢复快照;
3.好好回顾一下之前每台机器的实验笔记,自己分类总结一下,这块很重要,但是我无法分享,请大佬们谅解;
4.考试开始之前会发送邮件,提前安装一下录屏和监控的Chrome插件,检查一下证件、摄像头正常、最好再多准备两个节点,有考生出现过因为网络原因导致无法完成考试的情况;
5.提前去官方或者Git上面下载报告模板,熟悉下需要提交的报告结构,便于在考试过程中记录报告需要的截图和步骤。
考试过程
最后谈一下我的考试过程,我预约的是上午11:00开始考试,但是不知道题目有多难,早上5点多就睡不着了,就打一下HTB,没想到睡着了……当我再次醒来,已经11:30了,顿时清醒(超时久了可是会被取消资格的),赶快登陆考试平台,还好考官还在等我,就核对一下护照和考试环境等信息,就给我发来了VPN连接包和考试地址,使用脚本测试一下VPN链接情况之后,将结果发送给考官,就可以正式考试了,考试遇到问题的话可以通过平台和考官在线交流,只不过有时候使用百度翻译,我还没翻译完考官应该都猜到我要说什么了,比较尴尬.......
直到晚上11点多钟,我才把第1台机器Getshell,本来在debug机器上把bypass利用脚本编写完成了,但是执行之后总是失败,反复检查之后,感觉脚本没问题,于是尝试在考试机器利用了一下,没想到直接成功了,感觉应该是调试过程中debug机器出现了问题,所以有时候最后两台机器都还原测试一下,避免出现类似问题。bypass脚本完成之后,getshell没有遇到什么问题,第一台机器被拿下,得到了50分,还需要把第2台机器bypass才可以通过考试,简单看下第二台机器的程序代码之后,就给考官打声招呼就洗洗睡了。
第二天早上8点多睡醒了,开始做第2台机器,这台的语言不太擅长,就没有像第1台那么简单了,首先把程序的所有功能流程测试一遍,最后在对应的代码上面找到了漏洞,接着开始编写利用脚本,完成bypass的时候已经是第二天下午9点多了,距离考试结束还剩12个小时,因为分数已经可以通过了,于是先把所有的步骤截图收集好,这样接下来就可以把所有时间用来完成第2台的rce了,避免时间不够用。很遗憾的是,第2台机器我虽然找到漏洞点,也完成了rce,但是直到考试结束2个小时前,也没有完成自动化利用脚本。考试的具体内容无法提及,如果找到代码审计技巧的话,题目就不算太困难,考试的时候首先可以在源代码里面匹配一下敏感函数(不过应该没什么用),然后把WEB程序的系统功能熟悉一下,在可能出现漏洞的地方,查找这些系统功能所对应的后端代码,寻找漏洞并尝试绕过防护手段。
最后2个小时,我建议收集完所有的截图步骤之后,将考试机器还原,测试脚本的可用性,尽量避免人工干预,确定能够正常getshell就可以准备结束考试了。
考试结束后24小时内需要提交完整的英文报告,官方对考试报告的要求十分严格,报告的模板可以使用官方的,也可以学习一下官方报告进行自定义,只要能把审查代码、发现漏洞、利用漏洞的过程详细的说明就可以了,英文不好的话可以对照百度翻译写,报告完成以后,为保险起见,就当自己没经历这次考试,假设以非专业技术人员的角度也能够根据报告将整个利用过程复现之后,再提交报告,否则可能会导致考试未通过。
提交报告需要压缩成7z格式,不需要加密码,压缩时候自己生成一下MD5值,然后在邮件给出的报告上传URL进行上传,上传之后会返回一个MD5值,跟自己本地生成的对比校验一下,没问题之后确定就行,官方会发送一个收到考试报告的邮件,一定要确定收到反馈邮件,不然本次考试就作废了,而且官方也不会主动索要。
无论是否通过,提交报告后在10个工作日内官方都会通过邮件反馈结果,如果通过的话,会让确认填写证书邮寄地址,再领取电子徽章,邮寄过来的证书包括纸质证书和一个精致的会员卡,Offsec家的证书没有官方印章,都是通过Acclaim的电子徽章在线验证的。收到邮件的第二天,官方会再发送一个确认邮件,算是完成OSWE认证的证明,过几天官方会发送一个Offsec职位的推荐邮件,不过好像都是全职的T_T
仅仅一篇文章可能不够全面,如果有OSWE考试有涉及不到的地方,欢迎大家一起沟通交流,共同进步。
祝愿大家都能够顺利通过考试!
总结
学的越多,不会的越多。
加油!Try Harder!