文件上传漏洞

一、文件上传防御手段及绕过手段总结

文件上传漏洞原理:对文件上传路径变量过滤不严,并且对用户上传的文件后缀以及文件类型限制不严,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器

防御措施:

1、上传文件的存储位置与服务器分离;

2、上传的文件重新修改文件名、文件后缀名;(如何确定后缀名防止修改:前端传递,后端再校验)

3、文件上传的上传保存路径根据业务进行分离;下载时根据重新生成的文件名进行下载;

绕过手段:(burpsuite)

1、对于JS前端验证:

Burpsuite剔除响应JS、浏览器审计工具剔除JS、手工删除JS代码(复制网站源代码将他复制打记事本中,文件后缀名更改为html,打开找到JS代码将其删除)

隐患:禁用了js代码,如果在实战中,网站的一些正常功能可能无法显示

2、对于定义不完整的黑名单验证:

2.1、大小写绕过:

修改文件名改变大小写来进行上传

Windows系统下,对于文件名中的大小写不敏感

Linux系统下,对于文件名中的大小写敏感

如.php变为.PhP

2.2、空格绕过:

Windows系统下,对于文件名中空格会被作为空处理,程序中的检测代码却不能自动删除空格

如:1.php   ->     "1.php                    "

2.3、.号绕过:

Windows系统下,文件后缀最后一个点会被自动去除

如 .php  ->   .php.

2.4、特殊符号绕过:

Windows ::$DATA绕过只能用于Windows,Windows下NTFS文件系统有一个特性,即NTFS文件系统在存储数据流的一个属性DATA时,是请求a.php本身的数据

如.php->.php::$DATA

2.5、路径拼接绕过:

路径拼接的是处理后的文件名,导致可以利用类似.php. .(两个点号之间有一个空格)绕过,程序先是删除一个点,再删除一个空格经过处理后,文件名变成.php.,即可绕过

如.php->.php. .

2.6、双写绕过

代码编写过程中,只对黑名单中的内容进行空替换,因为只替换一次所以造成双写绕过

如.php -> .phpphp

二、文件上传常用一句话木马

asp: <%eval request("heroes")%>

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

aspx: <%@Page Language="Jscript"%>

          <%eval(Request.Item["value"])%>

三、三种webshell管理工具的使用方法(演示使用该工具连接webshell及抓取流量包进行分析特征)

1、蚁剑

一句话木马

开启代理

蚁剑测试连接

触发木马,bp抓包

解码

流量特征:

静态特征:蚁剑中php使用assert、eval执行;asp只有eval执行;在jsp使用的是Java类加载(ClassLoader),同时会带有base64编码解码等字符特征。

动态特征:每个请求体都存在以@ini_set("display_errors","0");@set_time_limit(0)开头。并且响应体的返回结果是base64编码发混淆字符,格式为:随机数 结果 随机数

2、哥斯拉

生成木马

设置代理

连接测试

bp抓包

流量特征:

静态特征:在默认脚本编码的情况下,jsp会出现xc、pass字符和Java反射(ClassLoader,getClass().getClassLoader()),base64加解码等特征。

动态特征: 响应体的数据有一定特征,哥斯拉会把一个32位的md5字符串按照一半拆分,分别放在base64编码的数据的前后两部分。整个响应包的结构体征为:md5前十六位+base64+md5后十六位。

3、冰蝎

与上同理,连接木马

流量特征:

webshell连接密码的MD5的前16位,默认连接密码是"rebeyond"(即密钥是md5('rebeyond')[0:16]=e45e329feb5d925b)。进行请求时内置了十几个User-Agent头,每次请求时会随机选择其中的一个。因此当发现一个ip的请求头中的user-agent在频繁变换,就可能是冰蝎。

3.0连接jsp的webshell的请求数据包中的content-type字段常见为application/octet-stream。

四、 文件上传无回显,查找webshell地址的方法

1、bp拦截分析请求和响应

2、查看前端源代码,可能有路径信息

3、查看服务器日志,与上传路径有关的请求和响应,报错

4、webshell扫描工具,D盾等

五、upload-labs靶场通关第6-第10关

第六关:

看源代码

可以大小写绕过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值