文件上传漏洞利用-后端白名单绕过

举报
黑色地带(崛起) 发表于 2023/02/16 14:16:22 2023/02/16
【摘要】 文件上传漏洞利用-后端白名单绕过

文件上传漏洞利用-后端白名单绕过

 后端白名单绕过

MIME绕过

原理:服务端MIME类型检测通过检查http包的Content-Type的值来判断上传文件是否合法。

web服务器使用MIME来说明发送数据的种类, web客户端使用MIME来说明希望接收到的数据种类。


利用过程:

第一步:上传写入语句的执行类型文件,即.php文件

第二步:用burpsuite等代理工具进行抓包,修改Content-Type字段的值为image/jpeg

第三步:放包

第四步:获取webshell权限,即浏览器打开上传的图片马地址

第五步:用蚁剑等工具进行连接操作等



常见的MIME类型(/后面为对应的MIME值)
  超文本标记语言文本 .html,.html text/html 
  普通文本 .txt text/plain 
  RTF文本 .rtf application/rtf 
  GIF图形 .gif image/gif 
  JPEG图形 .jpeg,.jpg image/jpeg 
  au声音文件 .au audio/basic 
  MIDI音乐文件 mid,.midi audio/midi,audio/x-midi 
  RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio 
  MPEG文件 .mpg,.mpeg video/mpeg 
  AVI文件 .avi video/x-msvideo 
  GZIP文件 .gz application/x-gzip 
  TAR文件 .tar application/x-tar





%00截断

原理:

在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束


利用过程:

./?filename=test.txt             此时输出的是test.txt

./?filename=test./?filename=test.php%00.txt           此时输出的是test.php



0x00截断

原理:

0x开头表示16进制,0在十六进制中是00, 0x00就是%00解码成的16进制,%00被服务器解码为0x00发挥了截断作用


环境:

php版本小于5.3.4

magic_quotes_gpc需要为OFF状态


利用过程:

第一步:准备一个写入执行语句的php文件,在PHP后缀后加上空格(占位作用,空格的16进制为0x20)和任意其他字符(便于标识) 

编辑

第二步:用burpsuite等工具设置代理

第三步:上传文件

第四步:抓包并打开hex表,将空格对应的16进制(0x20,会显示出20)将20改为00实现截断

第五步:放包


修改完空格hex值后,空格被□取代,就是0x00(不可见字符),系统读到0x00时就认为已经结束了



0x0a截断

原理:

查看ASCII表,可以发现0x0a是换行即\n,当读取到\n时会进行换行,后面的将不会读取


利用过程:

和0x00类似

编辑


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。