0x00 Apache文件名解析漏洞
Apache是一个Web服务器,可以提供web服务、配合java中间件、PHP实现动态页面访问。
Apache和PHP通过接口接入后,Apache接受用户的请求,并将请求传送给PHP.exe,PHP.exe程序执行完毕后,把结果发送给用户。在Apache将文件内容交给PHP的时候,Apache会从右到左对文件名进行判断,确保只有.PHP的后缀文件得到解析,当文件名是demo.PHP.bak时,按照httpd.conf中的定义,.bak是不可识别的文件后缀,那么Apache会提取.bak左边的后缀.PHP,判断PHP是否可以识别,来识别文件程序执行。注意:当Apache和PHP以fastcgi方式结合时,则不存在该问题。
例如:访问PHPinfo.PHP可以正常显示,那么一旦存在Apache文件解析漏洞,将PHPinfo.PHP文件重命名为PHPinfo.PHP.bak,再在浏览器访问PHPinfo.PHP.bak,是和访问PHPinfo.PHP出现一样的界面。这是因为.bak是Apache无法识别的后缀。
0x01 Dedecms的重装漏洞
虽然Dedecms重装漏洞是在很早之前的了,但还是学习一下。
这里是以Apache2.2.17为例的。
在将Dedecms安装完成后,会在install目录下生成一个index.PHP.bak文件。
直接访问index.PHP.bak是无法成功的,因为有着install_lock.txt文件的限制,所以需要突破限制。
虽然我们没有文件操作的权限,但是可以在浏览器通过变量覆盖来实现。
构造payload:
http://127.0.0.1/install/index.PHP.bak?insLockfile=123
之后就可以获取网站的控制权限了。