漏洞原理
用户可通过伪造后缀、文件类型等方式上传恶意代码/文件,一般来说通过上传webshell;
一般出现在,头像上传、用户个人信息、文件处理(交接、存储、管理)、注册、申请;
文件上传分类
黑名单:不允许上传文件类型
白名单:仅允许上传的文件类型
绕过
一.(JS绕过):
①:抓包重放
先上传允许的文件类型,然后再通过抓包改包的方式进行绕过
原理:检测方式为前端js进行文件后缀的校验,之后再通过数据侧进行传输,这是在数据侧进行绕过
方法:先上传一个允许上传的文件类型,然后通过抓包,更改数据包中上传文件的后缀,再在文件内容的部分更改要使用的代码
②:也可以在burp中,修改JS限制
方法:在burp 中,右键数据包,Do intercept —→response to this request ,然后找到其js代码,进行删除或修改 或者 直接在网页上删除对应的JS限制函数
③:直接使用限制JS禁用的网页插件
-------------------------------------------------------
二.(MIME type 限制,限制文件类型)
MIME 是一种标准,用来表示文档、文件或字节流的性质和格式。
比如:image/gif、image/png、image/jpeg (图片相关的类型)
改mime type类型即可在数据包 content - type 处
-------------------------------------------------------
三.(黑名单限制)
①尝试生僻后缀:.phtml、.php1-8(仅受中间件配置限制,需要在中间件内添加对应配置才能生效,否则无法解析生僻后缀)(fuzzdicts中有对应后缀名字典可以跑)
此方法并不是所有情况下都能用,只有在配置文件中添加了对应的配置才能使用
②:尝试大小写绕过
③:在末尾加点 , 空格或者两者连用或者其他空白符或者添加::$DATA
③:Windws特性 (仅限windows操作系统,偶尔能用的上):
I、对大小写不敏感
II、在生成文件的时候自动会去除空格、
III、在生成文件的时候自动处理文件名后缀的.(点)
IV、windows处理文件的时候”::$DATA“会把其之后的数据当作文件流处理,不会检测后缀名,同时保持其之前的文件名
IIV、利用php+windows先上传数据包(仅限于原文件名被保存,没有被二次更改原文件名的情况下可以用)
此时会生成一个空文件 再次上传第二条数据包修改原有文件
此时会重新将文件内容添加进去,此方法适用于上传时源文件名不被修改的情况
四:(白名单限制)
①:00截断
当操作系统识别字符串读到\0字符时,意味者停止,结束,通过这个特性可达到00截断的目的,或某些waf的绕过
限制条件:php版本:小于5.3.29
magic_quote_gpc:off
操作:
get请求中在url地址栏增加%00
post请求则需要修改Hex请求为00
②配合图片马和文件包含漏洞
正常上传图片,在图片当中插入php代码即可(末尾)
代码生成图片马
cmd中输入
copy old.png /b + yours.php new.png (所有图片格式均适用)
若添加一句话木马可以直接通过Webshell管理工具进行连接
-----------------------------------------------------------------------------(如果文章内容有误,麻烦大佬们指点,我会及时改正,如果帮助到了您,麻烦点个赞呗,晚上回)