小迪笔记第四十七天 记录打靶场upload-lab && 掌握文件上传和绕过
文件上传漏洞前言:
就是我们把恶意后门代码写入到相关类型的文件内 从而控制网站服务器。(网站的环境搭建在上个文章)
但是注意文件上传就是:
网站会对每个格式的文件有特点的解析模式 (这个经常误解就是我们 一句话木马(php 类型)写到 这个jpg 内就会给我解析 我一访问就能形成后门 其实不会(这类漏洞只会出现在相应框架漏洞的时候才能成功)jpg 只会被当做jpg解析 网站鸟都不带鸟你的php木马 )
其次就是文件上传漏洞是多方面的比如框架 比如代码逻辑(黑白名单) 函数(move_upload_file)等 不单单是代码
第一关 纯前端绕过
这个就比较简单 我们知道代码有前端后端的验证呀 这个不就是上面所说的代码问题嘛
判断
1、直接抓包呀 我们知道我们上传的文件会被 上传到服务器呀 那我们看看能不能抓到这个中间的包
演示 :
这个逻辑就是看 如果是前端验证我们上传的错误形式的文件直接在前端验证 不会发往后台
2、直接看源码
分析一看是前端的白名单
绕过: 爱博士?不是说解析不了这样的嘛
这个就是为了欺骗前端的呀
上传成功 直接访问后门 用哥斯拉进行连接
添加
这个文件上传的应用场景 多半是直接在后台上传后门来拿权
2、第二关 :框架问题
如何辨别 htaccess : 这个就是使用插件
这个插件网上一堆
这个的绕过 : AddType application/x-httpd-php .png 就是这个代码 剖析一下: 就是我们的让htacess 配置文件给我们的php打掩护 实际上解析的是php文件
演示一下
第三关 MIME类型的绕过
什么是 MIME 我的理解就是常用网络上流通的文件类型MIME 类型 | 菜鸟教程
他有个标志就是 英语翻译就是 内容类型
改为 image/png 常见的还有 imge/jpeg
第四关 文件头的检测
绕过 我们一般都是 使用 GIF89a 来绕过
演示一下 先给我们的木马文件加上
这个文件头的检查很常见呀在 文件上传上 所以要养成好习惯 每个木马前边都加上这个
注意 一点就是这个的MIME 也要进行绕过
第五关 后台黑名单绕过
这个函数的用法 就是 $name=读取的我们的文件名 str_ireplace('
黑名单',' ',$name) 假设name= 111.php 就是吧111.php的php换成 ' '
演示一下
那都没后缀了还上传个毛啊
绕过 1、双写绕过 (就是利用这个函数的只能替换一次的这个特性:不能迭代)
这是什么情况啊 那是因为 函数虽然不能迭代但也不是傻x 那我们改一下 pphphp 第一个pph会被替换为 ' ' 函数不在执行 第二个会被保留
是不是就成功了呀
2、当然这个还可以大小写绕过呀 Php 是吧 这个str函数不就识别不了呀
第六关 系统的大小写敏感问题
这个就是使用大小写绕过 但是仅仅局限于 linux 系统呀 window的大小写是不敏感的
直接绕过呀
第七关 00 漏洞
这个比较老了 使用于php 版本小于 5.3.4
看看这个00 截断的特征很明显 :
原理就是 我们在路径上 加入 /7.php%00 就是 0之后的就会被截断 这个我们改名之后jpg就不能当做后门了 但是我们截断它 因为jpg 前一块是 7.php 所以我们改路径 就可以把jpg的7.php截断出来 从而让页面接受的是php
演示:
是不是可以连接了呀
第八关 这个也是00 截断
不过区别就是这个在post里边 这个需要我们进行解码一次在上传就完事了
浏览器解析 :如果访问的网站里有 url编码就会进行转变 而如果不是url如正常的字符串就不解析
而如果我们的 %00 在请求头内 就不会收到解析的影响 那就需要我们直接进行url解码
00截断 是解码的结果
url 的%00 会自动解析
但是 %00 在体内 不会解析
%00解码就是 空的 直接上传 不就拿下了呀
第九关 fuzz模糊测试拿下 黑名单缺陷
什么是fuzz 说白了就是瞎猜(有目的的)
https://github.com/fuzzdb-project/fuzzdb
这个是字典
演示一下 :
第十关 条件竞争
什么是条件竞争
条件竞争是指一个系统的运行结果依赖于不受控制的事件的先后顺序。当这些不受控制的事件并没有按照开发者想要的方式运行时,就可能会出现 bug。尤其在当前我们的系统中大量对资源进行共享,如果处理不当的话,就会产生条件竞争漏洞。
我理解的是 我们上传的马和服务器进行速度的竞争看是你删的快还是我触发的快 这不就是竞争嘛
条件 : 就是上边这个逻辑 先让我们上传再让判断
一般的就是 先判断:再上传 这个的逻辑相对好绕过
绕过 : 后者的绕过就需要 我们写一个 以马生马的代码
<?php fputs(fopen('xiao.php','w'),'<?php eval($_REQUEST[1]);?>');?>
这个的意思就是 我们上传之后 他是怎么判断的呀 不就得触发我们的文件嘛 那我们就写个时间短的触发代码 : 但是我们的马很快就会被删掉 这就需要我们不断的上传 再不断的访问 让服务器利用这个空隙 来生成我们的 木马(xiao.php)
演示 : 条件:1、我们需要不断的上传 2、我们需要不断的请求(访问111.php 来触发xiao ) 3、我们需要不断的访问 xiao.php 看看木马的生成
111.php
上传 抓包
抓取请求包
和上边一样的操作
第十一关 二次渲染
什么是二次渲染
二次渲染: (其实就是服务器为了让图片形式符合他的标准)概念就是我们上传的图片会被服务器进行二次处理或是压缩或是调整大小
利用010 的比较功能 看看哪里不会被渲染裁剪 就把木马放到那里
这里有个文件的包含漏洞 我们吧;连接密码 password 改为代码 就可以直接执行文件包含;
这个的我就不细说了
第十二关 函数逻辑的错误
我们知道 %00 漏洞 在高版本没有 但是这个函数漏洞类似于%00 漏洞 :
move_file_upload($文件名,$文件的零时名字)
漏洞原理: 文件名如果是 我们自己给起的 那就会有此漏洞 我们自己起的文件名 如果是 7.php/. 就会把我们的这个名字当成一个目录 报存我们上传的木马文件
演示 :
总结
文件上传漏洞发展趋势是越来越冷了 ,但是这些类型的题学完搞一搞ctf的web就会轻松许多
原文地址:https://blog.csdn.net/2301_81155391/article/details/144306014
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!