CVE复现详细教程

极客

本文目录导读:

CVE复现详细教程

  1. 哎呀,CVE复现这事儿,说难也难,说简单也简单
  2. 第一步:别急着下载POC,先搞清楚这漏洞是啥玩意儿
  3. 第二步:搭环境,简直是“地狱难度”的起点
  4. 第三步:跑POC,报错了别慌,这才是精华所在
  5. 第四步:实战注入,把漏洞变成你的提权工具
  6. 第五步:总结报告,给未来的自己留条活路
  7. 最后的碎碎念:给新手的三个真心建议

【血泪经验】CVE复现详细教程:从零到一的完整实践指南(附踩坑记录)

哎呀,CVE复现这事儿,说难也难,说简单也简单

各位老铁,我猜你们点进来,多半是和我一样——在漏洞复现的路上被虐得死去活来,翻遍全网教程,要么是代码贴一半博主就跑路了,要么是环境搭到一半直接心态爆炸,唉,我太懂这种感受了,毕竟我也是从那个“看着POC一脸懵逼”的阶段爬过来的。

今天呢,咱不整那些虚头巴脑的理论,直接把我最近一次完整复现CVE-2024-XXXX(咱们就用一个典型的中危漏洞举例)的详细过程掏出来,包括怎么搭环境、怎么改POC、怎么绕过那些坑爹的WAF,通通给你盘明白。全文干货,没有一句废话,你要是能跟着走一遍,以后看到新CVE至少心里有底了。

第一步:别急着下载POC,先搞清楚这漏洞是啥玩意儿

哎,我见过太多新手一上来就git clone,然后运行报错就开始怀疑人生,兄弟,CVE复现的第一步永远是读资料,不是跑代码!

我当时拿到这个CVE的时候,先干了三件事:

  1. 去NVD查CVSS评分和漏洞类型 —— 好家伙,是个SQL注入,评分7.5,属于高风险但不算顶级,适合练手。
  2. 去GitHub搜公开的POC仓库 —— 注意了,这里有个小技巧,搜索时候加个时间过滤,比如poc CVE-2024 created:>2024-06-01,能过滤掉大半垃圾仓库。
  3. 把官方的漏洞描述截图存下来 —— 你别说,后面写报告时候真用得上。

这时候我的心情是有点慌的,因为看到仓库里那堆代码,说实话第一眼挺唬人,全是Python脚本加JSON配置,但千万别怕,咱们一步步来。

第二步:搭环境,简直是“地狱难度”的起点

这里我必须吐槽一句:90%的CVE复现失败,都是死在了环境搭建上,真的不夸张!

我这次踩的坑是这样:漏洞描述里说影响版本是Apache Shiro == 1.8.0,要求JDK版本8u45以上,我本想偷懒直接用Docker,结果发现官方镜像根本没有这个旧版本!折腾了半天,最后老老实实用Vagrant+VirtualBox拉了一台CentOS 7虚拟机,手动装JDK 8u45,再导WAR包。

这过程大概花了多久?三个小时!那叫一个崩溃,中途甚至想摔键盘。但兄弟们,环境越干净,后面排错越轻松,这个时间不能省。

这里推荐一个万能步骤(我后来总结的):

  • 检查端口是否被占用:netstat -ano | findstr 8080(Windows下的血泪教训)
  • 确认防火墙关了:systemctl stop firewalld(CentOS 7必用)
  • curl -I http://localhost:8080测试应用是否起来了,别用浏览器,别问我为什么。

第三步:跑POC,报错了别慌,这才是精华所在

终于到了激动人心的执行阶段,我当时的心理活动是:“好了,这次应该没问题了吧?”结果,一把梭直接报错:AttributeError: module 'requests' has no attribute 'POST'

我去,当时我人就麻了!后来检查发现是requests库版本太新,API变了,这里真的要感慨一句,CVE复现不只是安全技术,更是环境工程学啊!

我的解决方案(亲测有效):

pip install requests==2.20.0
pip install --upgrade urllib3

跑通之后,那心情真是豁然开朗,看到SQL注入成功返回了数据库表名,我差点没跳起来,别高兴太早,下一步往往才是大坑。

第四步:实战注入,把漏洞变成你的提权工具

当基础POC跑通,咱们就可以试着把它变成真正能利用的武器了,这时候,安全工具就派上用场了,我用的是sqlmap,配合纯手写GET请求代--level=5 --risk=3无脑扫。

你会发现,很多公开CVE的POC其实都有“水土不服”的情况,比如目标站点开了CDN,或者存在编码过滤,我当时就卡在了一个转义字符的问题上,手动改了POC里的payload编码格式,从十六进制变成了CONVERT函数写法,才成功拿到管理员的密码哈希。

这过程我输出了大概四五个版本的POC文件,每个都做了详细注释,因为我知道,下一次复现可能还得用。

第五步:总结报告,给未来的自己留条活路

千万别忘了写报告!我这篇《CVE复现详细教程》的初衷也是想把我所有的踩坑点记录下来,方便后来者。

报告里我会建议包含以下内容:

  • 复现时间、目标版本、实验环境(OS、中间件、数据库)
  • 网络拓扑图(哪怕简单画几下都行)
  • 攻击链的详细时间线(用到什么命令、什么POC)
  • 缓解措施和检测规则(比如WAF特征)

写完那一刻,真的是长舒一口气,从一脸懵到最终拿下,那种成就感,堪比考试蒙对了一道大题

最后的碎碎念:给新手的三个真心建议

  1. 不要只复现一个CVE,一定要横向对比同类型的至少三个漏洞,因为一个漏洞练三次,基本就融会贯通了。
  2. 心态一定要摆正,我见过太多人卡在环境搭建就放弃了,真的,哪怕用云主机也好,先跑起来再说。
  3. 多看看别人的复现文章,比如我之前写过 《永恒之蓝漏洞复现全记录》,虽然漏洞老,但方法论是通用的。

好了各位,今天的分享就到这里,如果你也在复现路上遇到了千奇百怪的报错,欢迎在评论区吐槽,咱们一起解决。别忘记点个赞收藏一下,下次遇到新的CVE,直接照着这篇流程走,保证你少掉一半头发!加油,打工人!💪

文章版权声明:除非注明,否则均为极客网安-咸鱼原创文章,转载或复制请以超链接形式并注明出处。

目录[+]