upload-labs文件上传靶场 · 黑名单绕过十式 (前十关详解)

upload-labs文件上传靶场 · 黑名单绕过十式 (前十关详解) 本文内容仅供网络安全学习与技术交流使用所有操作均在本地搭建的靶场环境中完成。请勿将文中技术用于任何非法用途否则后果自负文件上传漏洞的绕过方式往往就藏在开发者的“疏忽”里。最近在肝上传靶场前10关分别对应10种经典绕过思路。没有重复造轮子每一关都是一次新的奇技淫巧下面直接上每一关的思路过程① JS前端校验 —— 改if语句点击显示源码后看见if语句(阻止我们上传的罪魁祸首),ctrls保存网页源代码后用编程工具打开,对if后的条件进行修改让其无法执行直接改成false或者其他错误条件也行(如12)因为我们是自建靶场且网页保存单纯修改条件语句仍然无法访问因此我们需要找到表单把我们的访问地址加进去用action牵引保存修改之后我们打开自己修改的这个html网页文件然后即可上传php文件② MIME类型绕过 —— 抓包改Content-Type点击显示源码后发现源代码中对文件类型做了限制我们上传PHP文件通过抓包强制将它的文件类型修改为图片文件看到第16行的文件类型修改为图片文件放包后发现成功上传php文件③ 黑名单不全 —— 利用.php3/.phtml黑名单只封了.asp、.aspx、.php、.jsp那就用.php3、.php5、.phtml等Apache也能解析的后缀轻松绕过。修改php文件的后缀名为.php3修改后成功上传④.htaccess奇袭 —— 强转解析这次打开源码发现黑名单中列出的后缀非常全面那我们换一种思路通过上传.htaccess文件成功上传.htaccess文件后我们根据.htaccess文件内的配置上传对应的图片马成功上传复制文件地址查看已经拿到对方的php信息⑤ 大小写绕过第五关打开源码审查之后发现这一关连.htaccess都被加入了黑名单但对比两关源码我们发现第五关少了一行转为小写的代码那么我们就可以讲后缀php改为PHP对其进行大小写绕过将后缀从.php改为.PHP成功上传⑥ 末尾空格绕过第六关打开源码审查之后发现相比于之前少了一行首尾去空的代码文件夹中无法直接在修改文件名时打出空格我们可以通过BP抓包抓到1.php的上传数据在1点PHP文件后强制加上空格之后放包实现末尾空格绕过抓包后看到刚才上传的1.php文件在后面加空格点击放包后成功上传⑦ 末尾点绕过 —— 缺少deldot函数第七关打开源码审查依旧可以发现很明显的缺陷这次代码里边少了删除文件名末尾点功能的源码还是无法直接修改文件名加点依旧通过BP抓包强制在1.php后加任意数量的点.依旧抓包依旧强制修改修改后点击放包发现成功上传⑧ ADS备用数据流绕过第八关依旧是审查过后发现代码缺失经检查发现其缺少了对$DATA字符串的过滤处理黑名单校验无法识别这种特殊后缀所以直接在PHP文件后加上该后缀即可上传。这种绕过仅在Windows服务器上生效Linux不支持NTFS备用数据流无法使用依旧抓包然后修改文件后缀点击放包后成功上传绕过⑨ 函数逻辑缺陷 ——deldot遇到空格就停deldot( ) 的作用是从文件名末尾向前,一直删除末尾的.号直到遇到非.字符为止但该函数存在一个漏洞遇到空格就会停止删除不会继续向前处理继续抓包后根据其对应的漏洞进行修改点击放包后成功上传⑩ 双写绕过 ——str_ireplace单次替换看一眼代码发现其中存在str-ireplace函数该函数会把黑名单后缀替换成空字符串但这个函数只会对匹配到的内容做单次替换不会去做循环处理。通俗来讲就是它会识别一次文件后缀中是否存在黑名单寻常的绕过1.php.jpg其中php位于黑名单中会被直接删除但将后缀名改为.pphphp,在识别php将其删除后剩余后缀名拼接后仍然是php并且该函数只做单次替换。所以实现绕过。将文件后缀名修改为.pphphp成功上传php文件本文所述绕过手法仅适用于授权的测试环境或本地靶场严禁用于非法攻击行为。学习漏洞的目的是为了更好地防御漏洞。欢迎各位新手小白一起交流文章中如出现技术性语言性错误也欢迎各位大佬前来指正。