以前挖掘XSS只会测试所有的参数(非DOM型),最近在学习PHP发现原来没有参数时,也可以触发XSS

0x01 文档

PHP官方文档 $_SERVER

1.png

0x02 利用

_FILE_常量包含当前文件的<font color=red size=4> 完整路径和文件名 </font>(基于document root)

可以利用如图这种方式,将HTML与PHP代码写入同一个文件中

2.png

此时却存在XSS漏洞,构造如图Payload:

4.png

可以看到即使没有参数时,也可能存在XSS漏洞

0x03 防御

可以使用$_SERVER['REQUEST_URI']来替代$_SERVER['PHP_SELF']

5.png

因为$_SERVER['PHP_SELF']会对网址执行一次urldecode操作,而$_SERVER['REQUEST_URI']则不会