嗯,果然昨天写WAMP写得好,让我能够短时间内搭建Apache+PHP环境。
=====================================================================
Apache的文件名解析漏洞:从后面开始往前检测,检测到最.后一个合法后缀为止,按最后一个合法后缀执行。这个后缀的定义文件是:conf/mime.types,它里面会定义x1.x2.x3这样子的拓展名,如果最后的x3没有定义(不合法),那么就会解析x2。比如 a.php.aaa,Apache就会当成a.php执行了。那么关键在什么是合法后缀了。
事实上,本人尝试了a.php.aaa发现,因为aaa肯定是不合法的,所以会解析php:
但是这样子没用,我们要的是能够上传xiaoma.php.jpg或者xiaoma.php.doc或者xoapma.php.rar之类的文件,这样子才科学,才有价值。很可惜,我尝试了这三种类型,浏览器直接把它们下载下来了。这说明在conf/mime.types中已经定义了x1.x2.x3的x3的合法性。
然后我修改mine.types中的一句话:
application/msword doc dot把它删除掉了,就出现了这个:
类似的我们把这些删掉:
application/x-rar-compressed rar image/jpeg jpeg jpg jpe
就能够上传xx.php.rar和xx.php.jpg了,很可惜,现在默认的apache2.2竟然都把这些定义上了,真的是让人蛋疼啊,我讨厌更新!
这个漏洞并没有版本上的区别,主要是没在mime.types文件中定义相关文件,就会被我们利用。
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; }
/a.jpg/aaasdf.php
scripts/a.jpg/aaasdf.jpg
scripts/a.jpg 和 aaasdf.php4).这个PHP的pathinfo(),会返回该path的:dirname,basename 和 extension,总之,就是把请求的对象:
scripts/a.jpg完全当成一个php文件(aaasdf.php,其实这里的aaasdf是任意的,随便写成*.php都行)去解析,而我们把一个shell伪装成jpg,php还是解析成php文件,达到了我们拿到webshell的目的。
nginx 0.5.* nginx 0.6.* nginx 0.7 <= 0.7.65 nginx 0.8 <= 0.8.37先看: