PHP反序列化与WordPress一些意外BUG的风趣结合

访客5年前关于黑客接单1665

几个月前,我正在编写一篇关于PHP反序列化缝隙的博客文章,决定为这篇文章找一个实在方针,能够让我将测试数据传输给PHP unserialize ()函数来完结演示意图。所以我下载了一批WordPress插件,并开端经过grepping来寻觅调用unserialize ()的代码实例:
$url = 'http://api.wordpress.org/plugins/info/1.0/';
$response = wp_remote_post ($url, array ('body' => $request));
$plugin_info = @unserialize ($response ['body']);
if (isset ($plugin_info->ratings)) {
这个插件的问题在于发送明文HTTP恳求,而且将该恳求呼应传递给了unserialize ()函数。就实在进犯而言,它并不是更佳进口点,可是假如我能经过这种微乎其微的办法向unserialize ()函数供给输出来触发代码的话,这就足够了!
0×01 PHP反序列化进犯
简略来说,当进犯者能够将他的数据供给给应用程序,而该应用程序将数据转化为运转目标时没有作恰当验证的时分就会呈现反序列化缝隙。假如进犯者数据被答应去操控运转目标的特点,那么进犯者就能够操作任何运用这些目标特点的代码履行流程,就有或许运用它建议进犯。这是一种称为面向特点编程(POP)的技能,一个POP小工具是能够经过这种办法操控任何代码片段,开发完结是经过向应用程序供给特制目标,以便在这些目标进行反序列化的时分触发一些有用的行为。假如想了解更多概况的话,能够参看我的博客文章《Attacking Java Deserialization》(https://nickbloor.co.uk/2019/08/13/attacking-java-deserialization/),其间的一般概念适用于任何根底技能。
在PHP应用程序的现状来看,POP小工具最为人熟知和最牢靠的原因在于类的__wakeup()办法(PHP“戏法办法”,unserialize()函数会查看是否存在__wakeup(),假如存在,则会先调用__wakeup()办法,预先预备目标需求的资源),假如一个类界说了__wakeup()办法,那么不管何时该类的某个目标运用了unserialize ()函数进行反序列化都能确保__wakeup()办法被调用,别的一个原因是__destruct ()办法(当创立的目标被毁掉或遇到PHP完毕符号的时分,比方程序现已履行完毕,目标会主动调用__destruct()履行一些相应的操作,能够自行界说),例如PHP脚本履行完结时(未发作丧命过错),当反序列化目标超出范围时仍简直能够确保__destruct ()办法被调用。
除了__wakeup ()和__destruct ()办法之外, PHP还有其他“戏法办法”,能够在类中界说,也能够在反序列化之后调用,这取决于反序列化目标的运用办法。在一个更大更杂乱的应用程序中或许很难追寻到反序列化目标在哪里完毕以及怎么来运用它或调用那些办法,所以确认那些类能够用于PHP反序列化缝隙运用也很困难,由于相关文件或许未包含在进口点,或许一个类的主动加载器(例如spl_autoload_register()函数)或许以及被注册来进一步混杂。
0×02 通用的PHP POP小工具
为了简化这个进程,我编写了一个PHP类,它界说了一切戏法办法而且在调用任何戏法办法时将详细信息写入日志文件。特别风趣的是戏法办法__get()和__call(),假如应用程序测验获取不存在的特点或调用该类中不存在的办法时就会调用以上戏法办法,前者能够用来辨认在payload object上设置的特点,以便操作并运用这些特点的代码,而后者能够用来辨认POP小工具触发运用的非戏法办法(而且能够将它们本身用作POP小工具)。
该类的__wakeup ()办法还运用了get_declared_classes ()函数来检索和记载能够运用exploit payload的已声明类的列表(尽管这不会反映当时未声明但能够主动加载的类)。
if(!class_exists("UniversalPOPGadget")) {
class UniversalPOPGadget {
private function logEvent($event) {
file_put_contents('UniversalPOPGadget.txt', $event . "rn", FILE_APPEND);
}
public function __construct() { $this->logEvent('UniversalPOPGadget::__construct()'); }
public function __destruct() { $this->logEvent('UniversalPOPGadget::__destruct()'); }
public function __call($name, $args) {
$this->logEvent('UniversalPOPGadget::__call(' . $name . ', ' . implode(',', $args) . ')');
}
public static function __callStatic($name, $args) {
$this->logEvent('UniversalPOPGadget::__callStatic(' . $name . ', ' . implode(',', $args) . ')');
}
public function __get($name) { $this->logEvent('UniversalPOPGadget::__get(' . $name . ')'); }
public function __set($name, $value) { $this->logEvent('UniversalPOPGadget::__set(' . $name . ', ' . $value . ')'); }
public function __isset($name) { $this->logEvent('UniversalPOPGadget::__isset(' . $name . ')'); }
public function __unset($name) { $this->logEvent('UniversalPOPGadget::__unset(' . $name . ')'); }
public function __sleep() { $this->logEvent('UniversalPOPGadget::__sleep()'); return array(); }
public function __wakeup() {
$this->logEvent('UniversalPOPGadget::__wakeup()');
$this->logEvent("  [!] Defined classes:");
foreach(get_declared_classes() as $c) {
$this->logEvent("    [+] " . $c);
}
}
public function __toString() { $this->logEvent('UniversalPOPGadget::__toString()'); }
public function __invoke($param) { $this->logEvent('UniversalPOPGadget::__invoke(' . $param . ')'); }
public function __set_state($properties) {
$this->logEvent('UniversalPOPGadget::__set_state(' . implode(',', $properties) . ')');
}
public function __clone() { $this->logEvent('UniversalPOPGadget::__clone()'); }
public function __debugInfo() { $this->logEvent('UniversalPOPGadget::__debugInfo()'); }
}}

[1] [2] [3]  黑客接单网

相关文章

东西引荐:Raptor WAF,轻量级WEB使用防火墙

  Raptor是一款选用C言语编写的WEB运用防火墙,运用DFA来阻挠SQL注入、Xss目录遍历等进犯。 编译&装置 $ git clone https://github.com/Cool...

HTML5:<a>的ping特点之逝世ping与隐私追寻

在HTML5中 标签参加了一个新的特点ping。规划者参加它的理由是, Ping能够使浏览器对外发送一个异步恳求,一般用来广告的追寻、点击率计算或完结一次HTTP重定向。 可是听到监督、追寻这个词,...

Anomali团队捕获了一个针对中国政府部门的网站钓鱼攻击行动-黑客接单平台

Anomali要挟研讨小组最近发现了一个网络垂钓网站假充中华人民共和国外交部电子邮件服务的登录页面。假如访问者测验登录这个垂钓页面,网站就会向他们弹出一条验证音讯,要求用户封闭窗口并持续阅读。研讨人员...

TA505在最新攻击活动中使用HTML, RAT和其他技术-黑客接单平台

TA505以运用歹意垃圾邮件和不同的歹意软件来进犯金融安排和零售企业而臭名远扬。研究人员在曩昔2个月检测到与TA505相关的进犯活动。在该安排的最近活动中,运用了HTML附件来传达歹意XLS文件,XL...

向Web服务器投递恶意挖矿软件的蠕虫-黑客接单平台

实践中,面向公共互联网供给服务的体系或服务器,都是处于边际方位的。所以无论是物联网设备仍是企业级服务器,只要能被外界访问到,那就会无时无刻被进犯。 最近,咱们发现了一种进犯方法,多个公司Apache...

使用“进程注入”完成无文件复生 WebShell

上周末,一个好兄弟找我说一个很重要的方针shell丢了,这个shell之前是经过一个S2代码履行的缝隙拿到的,现在缝隙还在,不过web目录悉数不可写,问我有没有办法搞个webshell持续做内网。正好...