实战工具:PHPGGC详解-黑客接单平台

在之前咱们剖析了php下序列化进犯的一些知识点: 由浅入深剖析序列化进犯(一) https://www.baidusina/Article/60/61/2019/93995.htm 由浅入深剖析序列化进犯(二) https://www.baidusina/Ar...

在之前咱们剖析了php下序列化进犯的一些知识点: 由浅入深剖析序列化进犯(一)

https://www.baidusina/Article/60/61/2019/93995.htm 由浅入深剖析序列化进犯(二) https://www.baidusina/Article/60/61/2019/94171.htm 由浅入深剖析序列化进犯(三) https://www.baidusina/Article/60/61/2019/95434.htm 今日咱们来剖析一下php序列化的武器库:PHPGGC。 PHPGGC 是一款可以主动生成干流结构的序列化测验payload的东西,相似 Java 中的 ysoserial,支撑很多干流结构的序列化exp一键生成。 但由于东西作者的时刻有限,不能做到实时更新。而本文旨在剖析phpggc原理,并为其增加拓宽,以便咱们参加最新的,自己需求的exp生成模块。 phpggc流程剖析 当咱们运转: phpggc Laravel/RCE1 system id 咱们盯梢一下详细流程。 初始化流程

在创立目标时,咱们下断点,发现首要程序会进行load_gadget_chains():

紧接着程序会寻觅界说声明过的class:

经过array_filter,将程序自己结构的gadget取出: $classes = array_filter($classes, function($class) { return is_subclass_of($class, 'PHPGGCGadgetChain') && strpos($class, 'GadgetChain') === 0; });

然后是取出模块名:

咱们跟进get_name(),就可以发现,例如:GadgetChainZendFrameworkFD1经过处理睬变成ZendFramework/FD1:

然后将模块名与类声明构成映射联系: $gcs = array_combine($names, $classes);

至此停止,初始化进程完结。 exp生成 然后初始化完结后,咱们成功创立了PHPGGC目标x,然后调用其generate办法进行exp生成: $x->generate(); 首要是从咱们的cmdline获取脚本运转参数,并将其解析:

例如咱们此刻解分出的参数:

一起假如发现咱们没有input参数,就会友好性的打出help界面。 然后代码就会来到gadget chain的获取: $gc = $this->get_gadget_chain($class);

这儿就用到了之前的模块名和类名的映射联系,经过咱们传入的模块名敏捷找到已声明的类。 然后在需求时,再将其包括进来:

咱们跟进该函数:

依据命名规矩,程序会在其目录gadgetchains下寻觅对应文件夹,例如咱们对应的目录为: /phpggc/gadgetchains/Laravel/RCE/1 然后获取其目录下的gadgets.php,拿到对应的类的界说。 然后便是使用咱们界说的chain.php结构序列化了: $parameters = $this->get_type_parameters($gc, $parameters); $generated = $this->serialize($gc, $parameters);[1][2]黑客接单网

  • 发表于 2021-04-17 11:30
  • 阅读 ( 328 )
  • 分类:互联网

0 条评论

请先 登录 后评论
新华网
新华网

729 篇文章

你可能感兴趣的文章

相关问题