2025 年初,我获得了 OSCP / OSCP+ 认证

记录 OSCP 与 OSCP+ 的备考过程、考试体验和个人建议。

开头不知道该说什么,但是既然能开始搜oscp经验总结,那肯定是对oscp有一定了解的,下面简单的放一些官方要求的网址,有兴趣的可以去看看。

oscp+介绍: https://help.offsec.com/hc/en-us/articles/29840452210580-Changes-to-the-OSCP

考试变更介绍: https://help.offsec.com/hc/en-us/articles/29865898402836-OSCP-Exam-Changes

oscp报告要求(看看就行 一般都是用下面这个项目): https://help.offsec.com/hc/en-us/articles/360046787731-PEN-200-Reporting-Requirements

报告项目地址: https://github.com/noraj/OSCP-Exam-Report-Template-Markdown 我用的模板: OSCP-exam-report-template_OS_v2.md

考试指南(如果要考试 这个百分之一百要看): https://help.offsec.com/hc/en-us/articles/360040165632-OSCP-Exam-Guide-Newly-Updated

上面就是官方要求了(需要注意的是考试指南可能会有更新 必须去寻找最新版 那里有全部要求) 这里放一下我的证书吧,我把我姓名和二维码打码了,暂时不想暴露姓名,仅显示OSID(自带的CDN不知道出了什么问题,图片走的是http协议,会强制重定向到https,修复好了之后不走https了,但是无法在源码中加载图片,主要是因为正常访问也访问不到图片,非常奇怪,PC端点击图片空白处就行,我放了一个超链接,手机端正常加载)

在我学习的路上,下面这个博客给了我很大的帮助,我对域环境并不是很擅长,下面这个博客总结了域渗透的很多技术,只需要挨个学习,比如第一条讲的是什么,就去搭建环境然后搜专门的教程复现,这个博客,它就像一个目录,并且携带着该漏洞的利用方法,对我帮助非常大。非常感谢0r@nge师傅。 https://0range-x.github.io/2022/01/26/Domain-penetration_one-stop/

讲一下我的学习路程吧,在22年的时候,当时我在实习,想考一个证书,找来找去貌似含金量都不是很高,一次偶然的机会我了解到OSCP这个证书,当时就以此为目标进行学习,不过打的大部分的都是vulnhub的靶场,而且是断断续续的。 就这样断断续续的打vulnhub的靶场,从22年打到了23年,24年上半年也陆陆续续碰过几个,真正做出行动的是在24年国庆那段时间,当时hw已经结束了一个月了,我学习的做的大部分都是安服的工作,仅仅限于蓝队和渗透测试,红队没有到过省级,接触过很多人,大部分都是省级但是没到guo级(毕竟真有gh的水平也不会来蓝队了),目前我大四应届,25年上半年可以找一个实习,所以我当时想了很久,决定把oscp考了,然后去找一个红队实习,去我感兴趣的岗位当中。

先总结一下我对vulnhub,hackthebox以及oscp的Challenge Labs的看法。 主要都是TJ NULL里面推荐的靶场 下面这个链接 https://docs.google.com/spreadsheets/d/1dwSMIAPIam0PuRBkCiDI88pU3yzrqqHkDtBngUHNCw8/edit?gid=530535513#gid=530535513

vulnhub非常偏向ctf,甚至我感觉他就是ctf的靶场,他会把信息藏到源码里面,页面不是正常的页面,而是类似于解密那种纯ctf的样子,有一些敲门的技术在htb和oscp中完全没有体现,而我记得这类的技术在vulnhub上经常出现,如果不愿意花钱还想打一下靶场,这个我非常推荐,虽然它特别偏向ctf而且只有linux的靶场,但是它可以帮助你学习到很多linux的服务和命令还有常规渗透,比如udpftp,nfs,smb等等都有体现,优点就是能巩固自身的基础、了解到linux方面渗透的各种服务、免费,缺点就是太偏向ctf了,需要自行下载搭建,只有linux。(我甚至买了一个1t的移动硬盘就为了下载vulnhub的靶场)

hackthebox有很少的ctf元素,比如这个作者需要针对某一个漏洞来做靶场的时候,肯定会想一条攻击链,必须保证逻辑通顺,有一个地方会需要账号密码等信息,这时候可能就会体现ctf的元素,目的就是让你获取到这个关键信息才能进行下一步,当然我说的这种情况是极少数。htb非常不错,它里面大部分靶场主要是针对某一个漏洞,某一条利用链来做的,目的就是为了让你学会这种方法, 看起来是有点像复现了,但是在复现的路上层层相扣,每一步逻辑都相通,设计的非常巧妙,有时候可能会涉及到一些底层逻辑,看了wp了解到之后才感叹做的非常有意思。优点就是非常巧妙,以学习的目的来做会有很大的收获,能很好的巩固一些服务的底层逻辑,缺点就是要付费,而且很多人也在说难度比oscp大,也有人说作为oscp的补充比较好,我比较认同补充。

PG我没有打过,但还是说一下我的看法吧,我在考试之前专门在TJ NULL里面找到了PG的域的WP,看了一遍,他相比htb来说,比htb更巧妙,这也是oscp一贯的概念—try hander,上面我也说了htb主要是针对某一个漏洞某一条利用链,而我看的PG域更多的是底层逻辑之间的环环相扣外加一小部分漏洞复现,理解都能理解,但是它需要更多的扩展性思维,这和htb的概念完全不同,htb需要钻牛角尖,而PG更多的是发散思维—如果确定了这里没有漏洞,那就赶紧去其他地方找吧。

OSCP的Challenge Labs,它更像一种真实的渗透环境,没有特定的漏洞,有的只是一部分机器的集合,每一个挑战都会告诉你,这是一个公司请我们给他做渗透测试,而你要面对的是一个公司的全部服务器,就是为了模拟真实的环境,不过总体都还好,不算很难,比较难的是skylark,很多人都选择跳过,而我是按照顺序打下去的,Challenge Labs没有wp,只有discord里的同学还有老师会给你一部分提示,虽然前几个比如Medtech、Relia实际上并不难,但从htb转过来的时候我还是困扰了非常久,因为正如我上面所说htb的思维和pg的思维完全不一样,Challenge Labs也和htb的思维也完全不一样,Medtech和Relia我更多的是转变自己的想法,不要局限,而我选择打完skylark是因为能更好的适应这种思想—把它当作真实环境来看待,总之在同学和老师的帮助下,完成了大部分靶场。

最后两个不在考试范围内,主要是为想要备考OSCE³而准备的靶场,可以试试。

上面就是我的学习路程,大部分打的都是linux,而OSCP更侧重于windows,我建议把重心放到windows上,从报名OSCP到拿到证书刚刚好一个月,准确的来说是31天,12月11日报名,花了21天左右(在1月1日)完成了7个Challenge Lab,报名了1月8日中午12点的考试,1月10日凌晨3点提交了报告,1月11日下午拿到证书,在1.1-1.8这六天当中,我大部分时间都是在玩,游戏只有在有事情的时候玩起来才有感觉:),当然也不全都是在玩游戏放松,期间我重温了除了skylark以外的所有lab,全都复现了一遍,然后专门去找域方面的靶场的WP,因为正常思路谁都会,需要学习一些不一样的域渗透思路(可惜没有用到)。

简单聊一下考试中遇到的一些东西吧,这个确实很有意思。结束之后我实际上只有70分,目前没有加分了,域环境入口+3台独立主机共70分,勉强通过了考试。域控部分跟OSCP A-C不一样了,这个需要注意。 如果你现在完成了OSCP A-C看完我后面说的话,你应该能明白我的意思,正常来说域环境入口是非常难的,不过第一台域入口拿到了之后,第二台域内主机会非常简单,第二台域内主机甚至都不需要提权,就能直接拿下域控,路程就是域入口—》域内主机普通权限—》域控,难点集中在域入口了,而现在的新版考试,他往后推了,域入口非常非常非常非常非常简单,你可以理解为送你10分,给你一个域入口让你进去,然后那台域内主机变得非常难,也会给你一个普通权限账号,你要做的仅仅是提权,我能感觉到,如果提了上去域控也不是很难。问题就在提权这里,这里我必须要另起一行说说了。

在做OSCP A-C的时候,正常直接扫描没有任何问题,但是在域环境中一旦利用ligolo-ng搭建隧道(chisel比这个更拉跨)扫描内网,会出现一堆错误。

非常绝望,只要一nmap扫描,立马报错,我给offsec写了很多封邮件了,他也在配合,但是就是解决不了,结果就是nmap扫描结果完全不准确,导致判断错误,我甚至都把nmap装到了那台域入口上,依然扫不出,我只能凭感觉去找,因为域内正常端口都知道是多少,问题就在如果他是非常规端口,那直接就玩完了。除此之外,隧道容易崩溃(这个是我最难受的),ligolo-ng在Medtech、Relia上我没发现什么问题,可能是因为我在做OSCP A-C的时候换网了,这个是没办法的事情,换不回去,而且换的新网速度非常快60MB/S,但依然有问题。 这时候可能就要说用chisel这个了(frp、ew、lcx不起作用 不用试了),巧就巧在这里,ligolo-ng是一股脑的发送然后报错,而chisel是根据速率多少,按照上限发的。就比如一根水管,ligolo-ng一盆水给你泼上去,能流进水管多少是多少,流不进去它也不管了,chisel是以最大的可能慢慢给你把水倒进去,不要漏了,chisel在我nmap扫描的时候需要5-6个小时才能完成扫描,其实这个时候我已经发现了,虽然我用的是网线,速度60MB/s,并且非常稳定,延迟非常低的,但是就是有问题,这种就是玄学,如果出现了和我一样的问题,赶紧去换网络吧。

说回正题,主要讨论一下我没有拿下的域环境,其中有很大一部分原因是上面的网络环境问题,我赌错了,我没有想到考试的VPN和正常环境相差无几,域入口进去之后是会给下一台域内主机的一些信息的,靠这个能进入那台域内主机,我遇到了jxxxxs服务,我感觉和这个师傅的经历很像 https://blog.restkhz.com/post/before-oscp-exam 感兴趣的可以去看看这个博客,正是因为这个博客我重温了关于jxxxxs方面的漏洞,几乎我可以说我了解到了漏洞利用层面和常规思路的部分(感兴趣的可以去打一下htb的Object这个box),那台域内主机上没有任何提权方法,只开了这个服务在本地,而我的思路有两条,第一条是jxxxxs-cli.jar,很可惜他没有开启匿名,而且我知道版本,这个版本乍一看是存在任意文件读取的,只要能进入后台,那百分百能getshell,shell后面大概率就是我想要的权限了,虽然看起来版本比漏洞版本低,但是实际上将两个版本号放入google(一个存在漏洞的版本,一个靶机上存在版本),我才发现,存在漏洞的版本在24年1月官方已经发公告了,而目前靶机上的版本是24年5月发布的,他并不存在漏洞!而我却忙活了半天没有任何收获,接下来就是第二条思路了,找到任意一个账号密码,只要能进入后台,那百分百能getshell,毋庸置疑的。我尝试了很久都没有找到密码,jxxxxs的目录不允许被进入,也没有其他信息,我确定我尝试了大部分的方法。 之前也提到了,这个服务开在本地,我需要通过ligolo-ng来访问这台域成员主机,再通过chisel将这台域成员主机的这个端口转发到域入口上,才得以访问,还是上面提到的隧道非常不稳定,隧道一直崩溃,一个小时里面能崩溃3次,解决办法就是重启靶机,重新上传ligolo-ng和chisel搭建隧道,非常痛苦。拿到域入口只用了30分钟不到,而后续我花了9个多小时来提权,我确定我仅仅差一个账号密码,我没有找到,而隧道的崩溃消耗了我所有的精力。

事后我思考了一下,我没有尝试去爆破这个应用的目录(太卡了完全无法爆破),有些凭证可能藏在一些文件里,在快结束的时候我发现其实有一个Jxxxx_history是可以访问的,但是没有访问其他用户目录的权限,读取当前用户的history也没有其他信息,可能就是告诉要dir /S全部目录来找这个history把,当时离考试结束还有5个小时,我已经连续努力了19个小时,没有精力了。

幸好除了搭建隧道外的所有网络连接不会出现这种情况,我比较擅长linux,但是这次抽靶场,抽到了2台windows,1台linux,这台linux我花了两个小时就拿到了root,而那两台windows拿到初始shell也非常简单,难点在于它是非常规提权,还好,最后解决了。这也是我为什么在靶场那一块的时候推荐多打windows少打linux,我做了太多的linux方面的靶场,windows较少,而考试重点侧重于windows。

这就是我的全部考试经历了,我很遗憾我没有拿下域控,但结果是好的就可以了,我当时考完驾照的时候看到过这样一句话,要求是90分及格,只要你及格了,就不要在意分数了,结束了就算你说你当时考了101分都行,已经通过了,你获得了这个资格,不要再可惜遗憾了。我想的也是,不能一直懊悔之前的失误,我已经获得了上路的资格,后续的提升,得看我车开的怎么样了,人总是要往前看的。

考试那天晚上距离考试结束还有13个小时的时候我已经非常累了,当时我只拿到了30分,域入口和两台windows独立主机的初始shell。我想休息一会,躺来躺去一直在思考,完全睡不着,大概躺了一个小时,我只觉得非常漫长,我思考了从我开始努力,到我年前了还没有回家准备考证的这一条路上是否值得,说实话我甚至都想过放弃,前11个小时大部分时间都在域环境中,隧道一直崩溃,它消耗了我所有精力,我甚至想和考官沟通,告诉他:你看这隧道完全搭建不起来,我完全不能进行下一步!甚至都有点觉得自己倒霉,遇到了一个较难的域控,当时窗外还下着雪,我没有出去吃饭,而是之前买的面包我对付了几口,思考到最后我发现我根本睡不着。 在准备继续考试之前之前我思考了我该干什么,首先在域环境中尝试一些可能,最多花1个小时,不行就放弃,如果可以的话,拿下域控我总共就有60分了,再拿下linux直接够了。如果域控一直无法继续,直接尝试去打那台linux靶机,然后去尝试那两台windows主机的非常规提权直到结束考试。 很幸运,我的想法是对的,域环境无法前进一步,我尝试了linux初始shell的枚举加非常规提权和常规提权,两台windows的非常规提权,我把这三台独立主机全部拿下了。 当时已经是凌晨3点了,我非常兴奋,我达到了及格要求,同时我也非常累了,即使如此我还是花了3个多小时,复现了所有步骤并保存,这是对的,因为在我一觉醒来电脑蓝屏重启了,但凡我没有保留,而是等写报告的时候去kali里面找,我都无法完成报告,非常炸裂,蓝屏这个问题出现了很久了貌似是显卡驱动的问题,而且在我尝试域环境的时候kali自动重启过一次,这里也能提个醒,提前学习报告如何编写,然后达到及格要求的时候记得给kali弄个快照。

最后再谈一下oscp的官方课程吧,知道没有加分的时候,我就全部过了一遍,看了所有的文本,有一些收获,但不多,主要是针对基础部分,可以看看。

另外,我想谈一下oscp的含金量,考试之前看了raddit的r/oscp模块有很多人在讨论,有人说oscp会固定卡死一些人不让通过考试以保证含金量,非常难,部分考过的人运气可能有点好; 也有人说很多雇主会优先看是否持有oscp,持有oscp的人会优先被录用,但是他也见过很多厉害的人没有oscp的,这样不是很公平,他觉得这是一种营销手段; 还有一部分人提到他目前没有打算参加考试,他在课程中学到了很多东西; 另外一部分人也提到了他们考了2-4次才通过。在这里我想说的是,oscp证明了能力的下限,就是你通过了oscp考试,再差再差,也不会低于oscp的标准,也就是你能独立的完成渗透测试,能完成报告,而且是在有限的时间当中,能够合理的分配时间来完成目标,它提升了你的下限,当你去给别人做渗透测试的时候,人家根本不知道你有什么能力,你只能给他讲我做过多少次渗透测试,挖过多少CVE,从业几年了,但是当你说你有OSCP的时候,他就已经知道了,你再差再差也能完成渗透测试,至于上限,可能就得看个人了。这也就是我理解的oscp高含金量的原因。