【总结】文件上传漏洞

通过文件上传漏洞获得的网站后门,就是WebShell

webshell:

小马:一句话木马也称为小马,即整个shell代码量只有一行,一般是系统执行函数
大马:代码量和功能比小马多,一般会进行二次编码加密,防止被安全防火墙入侵系统检测到

WebShell本质上是在服务器端可运行的脚本文件,后缀名为.php/.asp/.aspx/.jsp*等,WebShell 接收来自于Web 用户的命令,然后在服务器端执行

文件上传漏洞需要搭建upload-labs

这是upload-labs的安装与搭建upload-labs安装及攻略_uploadlabs_Lydia_Ha的博客-CSDN博客

文件上传漏洞的防护:

(1)对上传文件扩展名进行严格过滤,设置白名单机制只允许特定扩展名文件上传,严格过滤扩展名为“.php、.asp、.bat”等可执行文件上传
(2)限制目录权限,对于文件上传目录设置可读、可写、不可执行权限,禁止用户上传的文件在后台执行。
(3)隐藏文件上传目录,用户上传文件的目标目录对用户隐藏

%00截断

​ %00跟随url发送到服务器后被服务器解码,这时还没有传到验证函数,也就是说验证函数里接收到的不是%00字符,而是**%00解码后的内容,即解码成了0x00**。总之就是**%00被服务器解码为0x00发挥了截断作用**。

00截断的核心:

当一个字符串中存在空字符的时候,在被解析的时候会导致空字符后面的字符被丢弃


00截断原理:

无论0x00还是%00,最终被解析后都是一个东西:chr(0)
chr()是一个函数,这个函数是用来返回参数所对应的字符的,也就是说,参数是一个ASCII码,返回的值是一个字符,类型为string。
那么chr(0)就很好理解了,对照ASCII码表可以知道,ASCII码为0-127的数字,每个数字对应一个字符,而0对应的就是NUT字符(NULL),也就是空字符,而截断的关键就是这个空字符,当一个字符串中存在空字符的时候,在被解析的时候会导致空字符后面的字符被丢弃。
那么就可以知道00截断的原理了,在后缀中插入一个空字符(不是空格),会导致之后的部分被丢弃,而导致绕过的发生。

    如:在文件1.php.jpg中插入空字符变成:1.php.0x00.jpg中,解析后就会只剩下1.php,而空字符怎么插入的呢?
    通常我们会用Burp抓包后,在文件名插入一个空格,然后再HEX中找到空格对应的16进制编码“20”,把它改成00(即16进制ASCII码00,对应十进制的0),就可以插入空字符了
 

常见的文件上传漏洞做题思路:

1.网站没有任何过滤措施,任何文件均可上传

向网站上传一个一句话木马文件,如

<?php
@eval($_POST['cmd']);
?>

上传成功后,上传的php显示了存放在服务端的位置有对应的url加上该网址的url(即传过去的php的url),一并复制到蚁剑里面就可以显示到网站的所有文件系统了,还可任意对这些文件进行更改删除。

2.靶网站编写加上了允许上传文件类型和文件大小的限制

主要是识别文件类型(不是识别文件名后缀,而是看请求头里描述的文件类型)(image/jpg image是mine类型中的大类)

绕过文件类型【mine文件类型】

bp抓包后,如把Content-Type后面的类型改成image/jpg,然后点击forward转发掉请求,然后就可以看见非image/jpg的文件上传成功了

3.网站识别文件名的后缀并进行相应筛选

这里需要用到上传木马图片即文件包含渗透法

相关文件上传漏洞的总结资料:

文件上传漏洞总结(含原因+防御措施)+白名单+黑名单+内容、头+解析漏洞/修补方案_南部余额的博客-CSDN博客
文件上传漏洞攻击与防范方法_文件上传防范措施_美创安全实验室的博客-CSDN博客
 

相关文件包含渗透法的学习资料:

https://www.cnblogs.com/yjssjm/p/12672380.html

文件包含漏洞渗透攻击_3 | 学习笔记-阿里云开发者社区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值