实验记录-文件上传漏洞原理与利用-服务端检测绕过

实验环境

实验目的

1、掌握上传绕过服务器黑名单、白名单的原理

2、掌握黑名单绕过技巧之文件名大小写绕过

实验内容

文件上传

是WEB应用很常见的一种功能,本身是一项正常的业务需求,不存在什么问题。但如果在上传时没有对文件进行正确处理,则很可能会发生安全问题。本次实验将针对服务器检测上传文件扩展名(黑名单、白名单)的基本原理以及绕过方法进行详细的分析。

白名单

服务端通过获取上传文件的扩展名来匹配预先定义的合法扩展名数组,如果未能成功匹配的话,认为上传文件不合法,返回报错信息,如果扩展名能成功匹配,则认为上传文件合法,进行文件保存操作。

黑名单

服务端通过获取上传文件的扩展名来匹配预先定义的非法扩展名数组,如果能成功匹配的话,认为上传文件不合法,返回报错信息,如果扩展名没有匹配到,则认为上传文件合法,进行文件保存操作。

实验步骤

步骤1:使用扫描器扫描网站目录

  • 本步使用御剑后台扫描器,对目标站进行扫描

通过扫描后,我们得到upload.php,双击此页面,会跳转到upload.php界面,如图

upload.php,顾名思义,它是一个具有上传功能的界面,可以尝试上传一句话木马,来测试是否有上传漏洞

步骤2:上传脚本文件

  • 本步直接上传一句话木马,如果上传成功则可以得到Webshell

选择桌面上的PHP一句话木马,进行上传

发现上传失败,它直接列出了不可上传的文件后缀,由此可以判定这个是黑名单验证

这时,通过大小写改变网址,发现目标机小写可以正常访问,网址改为大写则显示404,所以断定目标机的系统为Linux。

Linux系统区分大小写,既然它是黑名单验证,我们可以尝试大小写突破验证,我们将一句话木马的后缀改为大写,也许可以突破验证,同样大写的PHP文件,也可以被服务器解析,在桌面新建php一句话木马,并命名为2.php

可以看到文件被正常解析了,页面的代码没有被显示出来。说明木马文件上传并执行成功了

接下来使用中国菜刀来连接我们上传的一句话木马,打开中国菜刀,右击添加,地址栏输入上传成功文件地址,输入设定好的菜刀密码,连接。

成功拿到Webshell

实验结果分析与总结

  • 白名单绕过技巧

1、0x00 截断绕过

2、解析调用/漏洞绕过

  • 黑名单绕过技巧

1、后缀名大小写绕过

2、名单列表绕过

3、特殊文件名绕过

4、0x00 截断绕过

5、双扩展名解析绕过攻击-基于web服务的解析逻辑 。

6、双扩展名解析绕过攻击-基于web服务的解析方式

-–

1.使用御剑后台扫描工具

img

存在upload.php目录

2.尝试上传一句话木马

发现 服务器存在黑名单

img

3.这时,通过大小写改变网址,发现目标机小写可以正常访问,网址改为大写则显示404,所以断定目标机的系统为Linux。

4.改变一句话为1.PHP

上传成功

img

5.使用中国菜刀 获取服务器权限

img

flag存在网站根目录

img

img