题目描述:一名合格的黑客眼中,所有的上传点都是开发者留下的后门
很简单的一个上传图片的界面。
我们先正常上传一个图片,从提示信息中可以看出我们是上传到了uploads目录下
然后通过bupsuite抓包修改请求,将文件名修改为1.php,文件内容修改为一句话木马,结果无法上传成功
这里推测是对文件名进行了限制,我们修改文件名为1.jepg,发现还是不行。到了这里暂时就没思路了,说明这里除了文件名,还对文件路径进行了限制。网上搜索看是否存在自己不熟悉的知识点(没思路的情况下需要引入外部知识)
1. 这里利用了.user.ini构成的后门,详情见.user.ini文件构成的PHP后门 - phith0n
.user.ini是一个配置文件,其中有个字段为auto_prepend_file,他可以让我们指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。比如
auto_prepend_file=1.jpg
此时, 和.user.ini在同一个目录的php文件就会包含1.jpg了,这个时候再将一句话目录写入到1.jpg上传后就可以执行1.jpg中的代码了
2. GIF89a头部绕过
可以看到,我们尝试将.user.ini上传时,会提示文件类型有问题。将文件名后缀改为jpg也不行,说明文件类型不是在filename中进行校验的,这里在文件内容的头部中增加GIF头部GIF89a进行绕过,增加后,提示上传成功
3. 上传一句话木马使用短标签绕过
然后我们上传1.jpg,并在里面写入一句话目录,发现上传失败,提示文件内容有问题,说明服务端可能对文件内容中的php进行了限制
我们修改一句话木马为短标签,最终上传成功
4. 使用蚁剑连接后台,获取flag
好了,文件上传成功了,我们使用蚁剑工具连接后台
获取到shell,在根目录下获取到flag
总结:这是很好的一个练习题,并不是简单改个文件后缀就可以了,而且考察了方方面面的知识:
1. .user.ini的后门利用
2. 文件上传头部及php绕过方式
3. 蚁剑的使用
这道题并不是一蹴而就的,而是通过多次绕过才攻击成功的,对渗透思维的培养也有一定的益处。