文件上传漏洞原理
目录
文件上传漏洞原理](#a)
文件上传漏洞是指用户通过界面上的上传功能上传了一个可执行的脚本文件(一句话木马),而WEB端的系统并未对其进行检测或者检测的逻辑做的不够好
脚本执行语句:
一句话木马
eval函数 把字符串作为PHP代码执行
java的system函数如system(ipconfig)
Webshell介绍
是什么
WebShell , 简称网页后门。简单来说它是运行在Web应用之上的远程控制程序。
webShell其实就是一张网页,由PHP、JSP、ASP、ASP.NET等这类web应用程序语言开发,但webShell并不具备常见网页的功能,例如登录、注册、信息展示等功能,一般会具备文件管理、端口扫描、提权、获取系统信息等功能。
常见的WebShell有哪些?
大马、小马、各种马…等
拥有较完整功能的webshell,我们一般称为大马。
功能简易的webshell称为小马。
除此之外还存在一句话木马、菜刀马、脱库马等等的名词,是对于webShell功能或者特性的简称
作用如何
1.例如一句话木马利用:
准备:在本地建站(phpstudy)
过程:1.在www目录下的shell.php中写入一句话木马
2.本地访问: 127.0.0.1/shell.php(我们刚才创建的木马文件名称)
3.打开HackBar(浏览器插件):尝试利用这个一句话木马来返回PHPinfo的信息。构建返回PHPinfo的语句:X=phpinfo();这也是一个任意代码执行,我们通过变量X传递的任何指令都会被当做PHP代码来执行。也可以通过这条指令来调用调用系统函数:X=system(whomai); 、x=system(whomai);
2.菜刀马
同上,已在服务器某文件上上写入了一句话木马后,打开antsowrd填入地址,以及连接密码为post或get参数如c,最后就可以获得文件整个目录
还可以打开虚拟终端,登录数据库(要密码),其他插件
不同的环境,不同的一句话木马
ASP
<%eval request("x")%>
- ASP.NET:
ASP.NET:
<%@ Page Language="Jscript"%><%eval (Request.Item["x"],"unsafe");%>
网站控制工具
中国菜刀 中国蚁剑 https://github.com/AntSwordProject/antSword weevely https://github.com/epinna/weevely3
哥斯拉 godzilla https://github.com/BeichenDream/Godzilla 冰蝎 behinder https://github.com/rebeyond/
文件上传漏洞危害
黑链
挖矿
文件泄露
文件上传漏洞靶场练习
MIME
Multipurpose Internet Mail Extensions 多用途互联网邮件扩展类型
MIME格式:
text/html 描述 text/html HTML格式
application/json JSON数据格式
multipart/form-data 文件上传(二进制数据)
image/jpeg jpg图
MIME用法:
客户端使用: 1、GET请求不需要这个字段。 2、POST请求头,放在Content Type字段用来指定上传的 文件类型,方便服务器解析。放在Accept,告诉服务端允许 接收的响应类型。比如只能接收json或者其他。
服务端使用: 1、放在响应头里面,Content Type告诉客户端响应的数据 类型,方便客户端解析
注意
绕过客户端JavaScript验证的方法
方法一: 修改JavaScript去修改其中关键的检测函数,或者直接通过插件禁用JavaScript,如火狐地址栏输入about:config
方法二: 直接发送请求包,通过Burp抓到正常上传的请求报文后,修改报文的内容,在直接通过Burp发送,便跳过了网页中JS的验证过程。原本是打算上传a.php,可先选择jpg文件,再用burp拦截改包,将filename字段改为php文件即可绕过前端js限制
其他绕过
绕过服务器文件内容验证-文件头
服务器文件扩展名验证-黑名单的原理----》1.后缀名大小写绕过原理 2.修改后缀名绕过 3. 重写绕过 4.特殊可解析后缀绕过 5. .htaccess绕过 6.%00截断
解析漏洞
文件上传漏洞发现与利用
文件上传漏洞利用流程
1、找到上传的位置 2、尝试绕过校验,上传文件 3、获得文件位置 4、蚁剑连接,管理文件
绕过总结:删除/禁用JS、修改MIME、等价扩展名、大小写、 htaccess、双写、空格、点、::$DATA、%00截断、0x00截 断、图片马、条件竞争等等