apache不能解析php文件_CTF从入门到提升(十)文件上传

服务端校验——白名单

白名单和黑名单的区别在哪里?

黑名单是未经许可非法用户禁止入内,我禁止某些人入内,大部分人是可以进去的。白名单是未经允许禁止入内,只有允许的人才能进入,对应的只有合法文件才能上传。解析的时候我们为什么要文件合法?因为中间件能够解析,只允许不能被解释的文件且只符合当前业务的文件才能够上传。比如头像png、jpg、gif,不需要其他的文件名,做好限制极大地杜绝安全问题。

从规则上来讲白名单是比较难突破的,除非类似%00截断,而且这种截断也要看具体代码逻辑才能够实现,从代码层面去做突破略难。简单的题目有配合Apache的解析漏洞以及其他漏洞。像多层压缩包嵌套、或者本身有缺陷产生的文件上传问题等等后面都会分享,本次内容为配合Apache的解析缺陷。

72cb60203ed8cd7dcb3086d85f393636.png

我使用的环境一般是放在Linux下Apache用的比较多,包括nginx和IIS 都存在这种解析漏洞的。所以白名单突破需要配合的就是中间件的缺陷。

具体环境操作如下

b0c0e052bdf9f80488c99fd0bfbf09a6.png

上传.php禁用js,非法文件禁止上传。开启burp suite那么去传一个 jpg文件,提示非法文件禁止上传。

3b9aecd2f0a9c575f7ac8c41f8f3105c.png

03b129170af50d1c068969fa2abed2cb.png

服务端校验——文件内容头校验

内容头校验涉及到一些函数,例如对图像处理的函数。比如getimagesize获取图像大小。

4030e49c8be1a8ce2e08c633a3fbf7d8.png

如果不是指定的图像、有效的图像,就会产生一条false,这个函数可以判断这个文件是不是一个图片。

0eda3c8e955339f4b3496ed2739de569.png

新建一个文件:

346e9eef69efd341d6c879370d39b9ad.png

1e01a2ea5ae8553dd4d2f90f847197b9.png

很多文件有对应的文件格式:

a46eeec611c53aef99fcf14ebcc5ce96.png

这些函数是通过文件头来做判断的。如果可以把这个文件头给伪造出来,基本可以对它实现欺骗成功绕过。

c0539d7dbe5ce316ff02e36ec9ce0cd3.png

竞争上传

16461f8c5b49e71d55b636e0bff0b801.png

竞争上传是逻辑上的错误文件上传成功后,正常逻辑是后端代码一直在运行检测,合法就可以保存,不合法直接删掉。

在远程服务器上写入a.php

8182fceb6c6d8dbde084687e4e87abb6.png

39c767d875b7597fe97fde6094ecc0ca.png

d00255d9633b079556a70dd4b9d6358b.png

b0d23a7162f9dffe6aee3c925f6fc82e.png

过5秒钟就删掉,会形成产生一个临时文件的,趁临时文件没有被删掉赶紧访问。这种题目对服务器的性能影响比较大。

举例

上传php 文件,进行访问,显示查不到。

5d3db633e2cad96c657493b34b20b846.png

我们可以考虑让刚上传的文件去生成一个新的文件产生新的需要。

7251cc638305b7f6d9e0982f03dec2b8.png

第一个是文件名,下面是文件的内容,可以content写入文件。

224b0f770168990054974b65e6e34258.png

225c86d85348a6c5bd62f94f54f493b7.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值