上传验证文件
前端校验(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:
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还能连接一句话。