NSS [UUCTF 2022 新生赛]ez_upload
考点:Apache解析漏洞
开题就是标准的上传框
起手式就是传入一个php文件,非常正常的有过滤。
.txt
、.user.ini
、.txxx
都被过滤了,应该是白名单或者黑名单加MIME过滤,只允许.jpg
、.png
。
猜测二次渲染,传了图片马上去,但是没什么用,还抓不到包了。
network看了一下报文发现是Apache,版本是2.4.10考虑到解析漏洞。
Apache解析漏洞_蒙奇奇的博客-CSDN博客
Apache解析漏洞分为三种
一、因为Apache默认一个文件可以有多个用.分割得后缀,当最右边的后缀无法识别(mime.types文件中的为合法后缀)则继续向左看,直到碰到合法后缀才进行解析(以最后一个合法后缀为准)
如shell.php.xxx
因为后缀.xxx
不合法,所以向左看,.php
为合法后缀,解析为.php
格式文件。
二、AddHandler导致的解析漏洞
如果服务器给.php后缀添加了处理器:AddHandler application/x-httpd-php.php
那么,在有多个后缀的情况下,只要包含.php
后缀的文件就会被识别出php文件进行解析,不需要是最后一个后缀。如shell.php.jpg
中包含.php
,所以解析为php文件
三、Apache换行解析漏洞(CVE-2017-15715)
影响范围:2.4.0-2.4.29版本
原因:合法后缀配置文件中的正则表达式中$不仅匹配字符串结尾位置,还可以匹配\n
或\r
,在解析时,shell.php\x0A
将按照.php
进行解析,而’.php\x0A’ != ‘.php’
,如果过滤时过滤了.php
但没有过滤.php\x0A
从而实现绕过。
但是wp是shell.jpg.php
会被当成php解析?????????????????
版本是2.4.10
在2.4.0-2.4.29
以内,应该是Apache换行解析漏洞(CVE-2017-15715)啊。不懂,但他是对的。
注意这里还要改一下MIME,加一个魔术文件头。