(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试

目录

理解文件上传漏洞:

文件上传漏洞:

文件上传漏洞:

WebShell:

一句话木马:

产生上传漏洞原因:

原因:

常见的问题:

危害:

触发点,并判断是否存在文件上传漏洞:

触发点:

查找方法:

常见文件上传地址获取:

随机搜:

针对性:

不同格式下的文件类型后门测试:

在网站文件目录下模仿后门程序执行

在vulhub靶场中进行文件类型测试

第一步:靶场环境启动

第二步:Nginx复现

第三步:编写图片马

第四步:在……/index.php上传图片马

第五步:分析图片马执行情况

第六步:利用蚁剑连接webshell(家常必备)

修复方法:

本地文件上传漏洞靶场环境搭建测试

第一步:启动靶场环境

第一步:选择一张照片上传

第二步:进行尝试利用上传漏洞

尝试:尝试能不能上传图片马

方法一:对检测机制进行测试,看添加.php能否绕过

方法二:咱这次干脆果断删掉检验部分(要提前保留好源代码)

方法三:可以直接在浏览器检查代码并把checkFile()函数删掉或更改

CMS及CVE编号文件上传漏洞测试


(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第1张图片

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第2张图片 

理解文件上传漏洞:

文件上传漏洞:

文件上传漏洞:

在编写程序时候对用户上传的文件没有做好防护和过滤或处理异常,致使用户越权向服务器上传可执行的动态脚本文件,上传的文件可以是木马,病毒,恶意脚本或者WebShell等恶意语句,最终达成自己所需的目的。

WebShell:

以asp、php、jsp、cgi等网页文件形式存在的一种命令执行环境(即网页后门)。入侵了一个网站后,通常会将这些asp或php后门文件与网站服务器web目录下正常的网页文件混在一起,然后使用浏览器来访问这些后门,得到一个命令执行环境,以达到控制网站服务器的目的(可以上传下载或者修改文件,操作数据库,执行任意命令等)。

WebShell后门隐蔽较性高,可以轻松穿越防火墙,访问WebShell时不会留下系统日志,只会在网站的web日志中留下一些数据提交记录

中国蚁剑是一款开源的跨平台网站管理工具,也是一款webshell管理工具,它主要面向与合法授权的渗透测试安全人员以及进行常规操作的网站管理员。

一句话木马:

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第3张图片

 

产生上传漏洞原因:

原因:

后缀名(扩展名)没有做较为严格的限制

MIMETYPE(文件的类型) 没有做检查

上传的文件目录存在可执行权限

对行为没有做任何限制

常见的问题:

服务器的Web容器解释并执行了用户上传的web脚本语言,导致代码执行

上传病毒、木马文件,再诱骗用户或管理员下载执行

上传钓鱼图片或包含脚本的图片,有的浏览器会把它作为脚本执行并用于钓鱼和欺诈

上传Flash的策略文件crossdomain.xml,入侵者用以控制Flash在该域下的行为(控制策略文件

危害:

文件可以自定义,可以成为webshell,通过文件上传来上传网站后门,直接获取网站权限,属于高危漏洞,获取到权限之后,我们可以进行服务器提权、获取内网权限、获取网站相关数据权限

触发点,并判断是否存在文件上传漏洞:

触发点:

相册、头像上传
视频、照片上传或分享
附件上传(论坛发帖、邮箱)
文件管理器

(存在文件上传功能的地方都有可能存在文件上传漏洞)

对上传类型进行分类,选着对应类型方法进行测试

基操:一般的后台系统上传、会员中心上传等各种上传途径

CMS框架类:已知源码

编辑器类:cheditor、fckeditor、kindetior等

其他类/CVE:代码审计、第三方平台或应用

文件上传过程中检测部分由客户端javascript检测、服务端Content-Type类型检测、服务端path参数检测、服务端文件扩展名检测、服务端内容检测组成。这些检测并不是十分的完善,都能够找到办法进行绕过。

查找方法:

黑盒查找:

寻找上传功能点,eg:文件后台登录、会员中心等

通过工具进行文件扫描获取敏感信息

白盒查找:

对网站源码进行代码分析,查找是否存在文件上传的漏洞

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第4张图片

 

常见文件上传地址获取:

随机搜:

搜索关键字:inurl:upload.php

(基本用处不大,没啥针对性)

针对性:

搜索关键词:site:xxx.com upload

在特定网站手工找到上传功能的地方,eg:个人资料头像上传,文件后台,会员中心等地方

使用扫描工具扫描特定网站,获得文件上传位置eg:burpsuite扫描后的网站map、webpathbrute扫描指定网站的所有地址

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第5张图片

 (20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第6张图片

 

不同格式下的文件类型后门测试:

在网站文件目录下模仿后门程序执行

当我们在其目录下创建一个php类型的文件,然后用网页打开,发现被执行了,因为php文件能被文件执行

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第7张图片

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第8张图片 

如果把PHP文件改为其他文件格式呢,例如常见的图片插码一样,看浏览器能否直接执行jpg格式里面的代码从而得到相应控制权限

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第9张图片

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第10张图片 很显然不能直接执行,所以要使用其他方法使他被执行

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第11张图片 

 

在vulhub靶场中进行文件类型测试

vulhub靶场的搭建:

CentOS7搭建vulhub,坑已踩完,速来unable to access、couldn’t connect,network is unreachable、docker.service faile

Nginx 解析漏洞复现

Vulhub - Docker-Compose file for vulnerability environment

第一步:靶场环境启动

cd vulhub/nginx/nginx_parsing_vulnerability/

systemctl start docker.service

docker-compose build

docker-compose up -d

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第12张图片

第二步:Nginx复现

http://ip/uploadfiles/nginx.png

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第13张图片

 

http://ip/uploadfiles/nginx.png/.php

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第14张图片

 在nginx.png后加/.php会将nginx.png当成php解析

第三步:编写图片马

先用notepad++打开随便一张照片,然后写入恶意语句(自己想执行的)

 

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第15张图片

 

第四步:在……/index.php上传图片马

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第16张图片

 上传后出现了文件地址

 

第五步:分析图片马执行情况

打开图片在网站所在位置,上传图片的后缀是.png所以会显示图片,但不会执行代码

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第17张图片

 

如果在地址后面加上/.php会发现出现了乱码并执行了代码

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第18张图片

 

第六步:利用蚁剑连接webshell(家常必备)

安装下载使用教程:

我不允许还有人没下载使用中国蚁剑,修改蚁剑特征冲它

蚁剑地址:

https://github.com/AntSwordProject/
官方加载器:

 https://github.com/AntSwordProject/AntSword-Loader

 错误解决教程:

中国蚁剑加载不出来界面,代码解压出错,空白界面一招制敌

 (20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第19张图片(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第20张图片

 (20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第21张图片

 

修复方法:

在/usr/local/nginx/conf/fastcgi_params中添加下面的代码

再次打开类似于这样的链接http://www.xxx.com/a.jpg/a.php会提示403

if ($request_filename ~* (.*)\.php) {    
    set $php_url $1;    
}    
if (!-e $php_url.php) {    
    return 403;    
}

 

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第22张图片

 

本地文件上传漏洞靶场环境搭建测试

GitHub下载链接:https://githuub.com/cOny1/upload-labs

upload-labs安装教程:

新版phpstudy文件上传漏洞靶场:upload-labs安装,及404错误解决

第一步:启动靶场环境

输入http://upload-labs/ 或者:http://127.0.0.1/upload-labs/

(我的还输入了端口号)

http://localhost:8080/upload-labs/

第一步:选择一张照片上传

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第23张图片

 打开文件夹发现,照片的名字没有改--------->判断此处未使用修改文件名做上传防护

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第24张图片

 

第二步:进行尝试利用上传漏洞

尝试:尝试能不能上传图片马

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第25张图片

 

根据我浅薄的知识,代码无法被执行,咱先揣测无法执行php文件,咱再换一换方法

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第26张图片(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第27张图片

 连接也无法执行任何操作,应该是插入的图片马没被执行

 失败

方法一:对检测机制进行测试,看添加.php能否绕过

通过使用burpsuite抓包,控制文件上传,发现,还没放包就已经出现拦截了

真相只有一个————>那就是前端拦截的 

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第28张图片

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第29张图片

 函数名: CheckFile
作  用:检查某一文件是否存在
参  数:FileName ------ 文件地址 如:/upload/1.php
返回值:False  ----  True

然后对文件进行了约束,约束为.jpg|.png|.gif

所以上传.php文件就会失败

(试错过程)接下来,我考虑能不能在有文件限制的地方里面都加上一个.php(哈哈哈)

first

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第30张图片

second

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第31张图片

 加完以后,再看看,能否上传成功

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第32张图片 (20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第33张图片

 

恭喜,失败

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第34张图片

 (20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第35张图片

 

方法二:咱这次干脆果断删掉检验部分(要提前保留好源代码)

把下面检验的这部分全部删了,让他不能检验

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第36张图片

删完了

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第37张图片

 

然后我们在下面这个位置添加一个跳转

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第38张图片

 

添加后http://localhost:8080/upload-labs/Pass-01/index.php

前面的域名和端口可能不一样,根据自己的来

(我试的时候,如果有一样的图片,再次上传的时候,会覆盖)

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第39张图片

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第40张图片 

 

方法三:可以直接在浏览器检查代码并把checkFile()函数删掉或更改

(下图红框中的函数)删了或者改成true,并按回车,即可成功上传php文件

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第41张图片

 改后

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第42张图片

 

可以看到上传了一个PHP格式,所以无法显示照片,文件目录下也有了文件

但是上传成功后,发现那个被删除的checkFile又变回去了(稀奇古怪)

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第43张图片

 (20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第44张图片

 

 

CMS及CVE编号文件上传漏洞测试

网上有很多已经发现的cms老版本漏洞,可以对对未更新为新版本的进行……

 

拿禅道cms为例

官方下载地址:

禅道16.4版本发布,支持导入Jira数据和SonarQube项目管理 - 禅道下载 - 禅道开源项目管理软件 (zentao.net)

禅道CMS文件上传漏洞(CNVD-C-2020-121325)

凯源吧禅道CMS<=12.4.2版本存在文件上传漏洞,该漏洞由于开发者对link参数过滤不严,导致攻击者对下载链接可控,导致可远程下载服务器恶意脚本文件,造成任意代码执行,获取webshell。

要试的话就下载12.4.2以下版本的

现在的版本已经16.4了

自己尝试找找在新版本里面逛逛(虽然越来越看起来安全,但是大佬常说体系发展的越大,漏洞多而不明显)

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第45张图片

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第46张图片 

 (20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第47张图片

 

 初始账户admin 密码123456(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第48张图片

(20)文件上传漏洞:原理、原因、常见触发点分析,vulhub、upload、公开cms上传漏洞多种方法测试_第49张图片 

你可能感兴趣的:(web安全,渗透测试,网络安全,安全,web安全,系统安全,测试工具)