文件上传

文件上传校验

前端校验(js校验)
服务器将代码发到客户端,浏览器进行校验。
 
服务器端校验
content-type类型分别
文件后缀 黑 白名单

 

1. 绕过前台脚本检测扩展名上传WebShell

进入浏览器about:config模式
关闭javascript.enabled选项关闭浏览器的js功能实现绕过。
 
或者抓取回包修改jsp代码实现绕过
 
还可以
 

 

 

我们把phpshell.php后缀改为phpshell.png

 

 

 

然后上传,burp拦截数据包,将拦截的数据再修改回来。

 

 上传成功

 

2. 绕过Content-Type检测文件类型上传WebShell

抓包修改Content-Type文件类型绕过服务器端对Content-Type的检测

关于Content-Type:https://www.runoob.com/http/http-content-type.html

原格式

 

 修改后

 

 

几个常见的Content-Type:
text/html :HTML格式
text/plain :纯文本格式
text/xml :XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png :png图片格式
application/xml : XML数据格式
application/json : JSON数据格式
application/pdf : pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如文件下载)
 
application/x-www-form-urlencoded : <form encType="">中默认的encType,
form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)。 服务器收到的raw body会是,name=aaa&key=bbb。
 
multipart/form-data : 表单上传文件

 

3. 利用00截断上传WebShell

利用00截断就是利用程序员在写程序时对文件的上传路径过滤不严格,产生0x00上传截断漏洞。
假设文件的上传路径为 [ http://xx.xx.xx .xx/upfiles/lubr .php.jpg ] , 通过抓包截断将 [lubr.php] 后面的 [.] 换成 [0x00] 。在上传的时候,当文件系统读到 [0x00] 时,会认为文件已经结束,从而将 [ lubr.php.jpg ] 的内容写入到[lubr.php]中,从而达到攻击的目的。
 

4. 绕过服务器端扩展名检测上传

将文件扩展名改为.php1,apache依然可以正常解析php实现挂马

由于apache的特性,蚁剑同样可以解析.php3

 

 

5. 构造图片马,绕过文件内容检测上传WebShell

主要内容:GIF89a图片头文件欺骗

 

 

6. 利用.htaccess文件攻击上传Shell

.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置.通过htaccess文件,可以实现:网页301重定向、自定义404页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
1.创建htaccess文件,编辑内容为:
SetHandler application/x-httpd-php
他的意思是将该目录下的所有文件解析为php文件来执行
2.如果指定文件名的文件,才能被当做PHP解析,内容为
<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>
它将该目录下匹配的jpg文件解析为php执行
一般黑名单验证的上传成功几率比较大,白名单什么的并无卵用,先上传这样一个后缀为htaccess的文件,在上传一个.jpg的一句话,这样即使上传的一句话后缀为jpg依然可以连接一句话。
 
 
 
 
 

posted @ 2021-01-10 18:22  薛定谔的猫很忙  阅读(102)  评论(0编辑  收藏  举报