本文内容:
- 文件上传GetShell
1,文件上传GetShell:
文件上传简介:
文件上传漏洞通常由于代码中对文件上传功能所上传的文件过滤不严或web服务器相关解析漏洞未修复而造成的。
文件上传功能代码没有严格限制和验证用户上传的文件后缀、类型、内容等,攻击者可通过文件上传点上传任意文件,包括网站后门文件(webshell)控制整个网站。
漏洞危害:
恶意文件传递给解释器去执行,之后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作。
根据网站使用及可解析的程序脚本不同,可以上传的恶意脚本可以是PHP、ASP、JSP、ASPX等文件。
有时文件上传,可以结合文件包含漏洞去执行恶意脚本文件。
漏洞绕过:
使用BurpSuite进行抓包查看,如果可以抓包数据包为后端校验,抓不到包可以证明是前端校验,可以通过关闭JS的方式进行绕过:
假如经过判断,发现是白名单进行校验的:
利用:
00截断或者%00截断,如1.php00.png
条件竞争:
两个(线程)同时去抢(资源),不知道到底哪个能抢到,此处便形成了竞争,
可以使用Burp去跑,一个疯狂上传,一个疯狂访问,就是和服务器删除函数,进行竞争。
假如经过判断,发现是黑名单进行校验的:
利用:
1.文件上传类型绕过:
php: php、 phtml、php3、php4、php5
jsp: jap、jspx、jspf
asp: asa、cer、aspx
ext: exee
2..htaccess文件绕过:
3.文件后缀大小写绕过。
4.文件后缀(空/空格)绕过。
5.文件后缀(点)绕过。
6.Windows文件流绕过NTFS::$DATA利用windows特性,可在后缀名中加::$DATA 绕过。
7.构造文件后缀绕过,如php..
8.双写文件后缀绕过。如pphphp
测试过程[图片是借的]:
1.进入某个网站的后台:
2.上传可以上传图片的位置:
3.使用BurpSuite抓包,上传文件:
4.通过拼接地址然后访问大马成功:
修复建议:
1.对上传文件类型进行验证,除在前端验证外在后端依然要做验证,后端可以进行扩展名检测,重命名文件,MIME类型检测以及限制上传文件的大小等限制来防御,或是将上传的文件其他文件存储服务器中。
2.严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关上传文件目录的执行权限,防止木马执行。
3.对上传文件格式进行严格校验,防止上传恶意脚本文件;
4.严格限制上传的文件路径。
5.文件扩展名服务端白名单校验。
6.文件内容服务端校验。
7.上传文件重命名。
8.隐藏上传文件路径。