组件安全
1. 概述
A9:2017-使⽤含有已知漏洞的组件
A06:2021-Vulnerable and Outdated Components
组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。如果应用程序中含有已知漏洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器接管。同时,使用含有已知漏洞的组件的应用程序和API 可能会破坏应用程序防御、造成各种攻击并产生严重影响。
1.1 常见组件
1.1.1 操作系统
操作系统 |
---|
Windows Linux Mac OS X |
1.1.2 Web 容器
我们简单的认为,只要能够提供Web 服务的应用,就是Web 容器。
Web 容器 |
---|
Apache HTTPD Nginx IIS Tomcat uwsgi |
1.1.3 中间件
我们简单的认为,编程语言就是中间件。
中间件 |
---|
PHP Java ASP.NET(ASPX) Python Perl JavaScript Go |
1.1.4 数据库
关系型数据库 | 非关系型数据库 |
---|---|
MySQL Orcale SQL Server Access | Redis MongoDB |
1.1.5 开发框架
JAVA | PHP | Python | JS |
---|---|---|---|
struts2 spring springboot JBoss Weblogic | wordpress|wp drupal joomla thinkphp|tp dedecms|织梦 discuz|dz metinfo | Flask Django | vue.js |
1.1.6 OA 系统
OA 系统 |
---|
通达OA 泛微e-office 致远OA |
可以利用OA利用工具Releases · cseroad/Exp-Tools (github.com)
proxychains git clone https://github.com/LittleBear4/OA-EXPTOOL.git
将此工具下载,然后cd到工具目录,安装依赖
python3 -m pip install -r requirements.txt
安装依赖后在工具目录下开启工具
python3 scan.py
输入?
1.1.7 其他组件
-
phpStudy
-
宝塔
-
xampp
1.2 漏洞复现
1.2.1 漏洞复现模板
编写渗透测试报告的主要内容:
* 组件_版本_漏洞名称
* 漏洞描述
* 漏洞评级
* 影响版本
* 漏洞复现
* 漏洞扫描
* 漏洞验证
* 深度利用
* 命令执行
* GetShell
* EXP 编写
* 漏洞挖掘
* 指纹信息
* 修复建议
1.2.2 漏洞名称参考
pocsuite3 漏洞命名规范 类似msf的工具
seebug 漏洞类型规范
1.2.3 漏洞库
exploit-db
seebug 漏洞库
2. Apache
2.1 Apache HTTPD
漏洞名称 | 原理 | 案例 |
---|---|---|
未知后缀名解析漏洞 | yjh.php.ajest | upload-labs/Pass-07 |
多后缀名解析漏洞 | yjh.php.png | Vulhub - httpd 多后缀名解析 |
换行解析漏洞 CVE-2017-15715 | yjh.php%0a | Vulhub - httpd - CVE-2017-15715 |
Vulhub - Apache 2.4.49 路径穿越
Vulhub - Apache 2.4.50 路径穿越
2.1.1 未知后缀名解析
2.1.1.1 环境搭建
打开部署了upload-labs-env的服务器,将upload-labs-env服务打开
2.1.1.2 过程
使用bp浏览器访问部署了upload-labs-env的服务器的IP,
上传1.php文件,使用bp进行抓包,发送重发器
修改文件类型
修改文件后缀名为png,上传成功,修改为xj依旧还是上传成功,由此可知,php源代码中使用的是黑名单。
修改文件内容为phpinfo()和后缀名改为php.xj,
访问上传的文件,phpinfo执行了,因为在低版本的apache中检测处理文件时,会从前到后找后缀名。找到后缀名后从后往前找,首先找到了xj,apache不认识,又往前找找到了php,然后就会将文件内容读取出来交给php执行
2.1.2 多后缀名解析实例
2.1.2.1 环境搭建
2.1.2.2 过程
访问本机IP,上传文件1.php使用bp抓包
结果显示不支持上传文件格式,修改类型然后点击发送
结果还是不支持文件类型,修改后缀名,上传成功,证明php源代码使用的是白名单
文件上传成功,是因为配置问题,产生不安全配置的问题是AddHandler application/x-http-php .php这个配置的意思为,只要文件名中有.php就会当作php文件执行。访问上传文件,使用蚁剑连接
2.1.3 换行解析漏洞
2.1.3.1 环境搭建
因为使用的是bp的浏览器,8080端口被占用,将环境的端口改为80
启动环境
2.1.3.2 过程
上传1.php文件,使用bp抓包,将数据包发送重发器
查看数据包,有文件名,文件类型,文件内容,并且还给了一个evil.php的文件名,
修改文件类型,将evil.php修改为1.php.然后修改十六进制编码形式,将1.php.的右侧的点改为0a,然后点击上传,上传成功
访问上传文件
漏洞原因:1.php\x0a被按照php后缀进行解析,导致绕过一些服务器的安全策略。
2.1.4 apache 路径穿越漏洞
2.1.4.1 环境搭建
2.1.4.2 过程
使用bp自带浏览器访问ip,抓包
访问
icons/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
读到了passwd文件
执行命令
cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/bash
漏洞原因:是apache2.4.49本身组件的问题,还可以执行命令,相当于shell;2.4.50依然还有这个漏洞,访问
icons/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd
就能读出passwd
2.2 Apache Shiro
漏洞名称 | 原理 | 案例 |
---|---|---|
CVE-2016-4437 | 反序列化 | vulhub/shiro/CVE-2016-4437/ 挖 矿木⻢ ShiroExploit |
2.3 Apache Tomcat
漏洞名称 | 原理 | 案例 |
---|---|---|
弱口令 | 配置错误 | vulhub/tomcat/tomcat8/ |
本地文件包含 CVE-2020-1938 | – | vulhub/tomcat/CVE-2020-1938/ 工具CNVD-2020-10487-Tomcat-Ajp-lfi |
Vulhub - Tomcat-PUT任意写文件漏洞
2.3.1 弱口令
2.3.1.1 环境搭建
2.3.1.2 过程
点击manager app进行登录,tomcat、tomcat
docs是整个web应用的说明书,可以通过web控制台可以对整个tomcat下的web服务做服务管理
将大马war上传
访问上传的war
2.3.2 本地文件包含
2.3.2.1 环境搭建
2.3.2.2 过程
使用tomcat工具CNVD-2020-10487-Tomcat-Ajp-lfi.py扫描
python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 容器IP -p 8009 -f WEB-INF/web.xml
工具缺点:只能读取ROOT目录下的文件
2.3.3 PUT方法任意写文件漏洞
2.3.3.1 环境搭建
2.3.3.2 过程
使用nuclei扫描漏洞
sudo ./nuclei -u 192.168.16.176
访问扫描工具对应漏洞给出链接,读出passwd
3. Nginx
3.1 Nginx 解析漏洞
特定情况下,可以将图片解析成PHP,为图片木马提供出路。
漏洞名称 | 原理 | 案例 |
---|---|---|
空字节漏洞 | yjh.png%00.php | nginx_0.7.65 解析漏洞复现 |
文件路径解析漏洞 CVE-2013-4547 | yjh.png[0x20][0x00].php | vulhub/nginx/CVE-2013-4547/ |
(背锅) 解析漏洞 | cgi.fix_path=1 yjh.png/.php | nginx_parsing_vulnerability/ |
3.1.1 空字节漏洞
3.1.1.1 环境搭建
将压缩包加压至c盘下
在nginx_0.7.65目录下打开命令行
3.1.1.2 过程
访问Nginx
访问info.png,使用bp抓包,发送重发器
该漏洞叫00截断
php是以C语言写的,C语言字符串结束是00。当Nginx找文件时,看到后缀名是php就会交给php执行。当php解释引擎从前往后扫描文件,当扫描到00结束,读到的文件是info.png文件,但是info.png文件以php方式执行的
3.1.2 背锅解析漏洞
3.1.2.1 环境搭建
3.1.2.2 过程
上传1.php文件,使用bp抓包,发送重发器
修改文件类型、后缀名和文件内容
访问上传文件
漏洞产生原因:php的安全选项有关(cgi-fcgi)
3.2 Nginx 配置缺陷
漏洞名称 | 原理 | 案例 |
---|---|---|
Nginx 目录遍历漏洞 | location /files { alias /home/; } | vulhub/nginx/insecure-configuration/ |
4. IIS
4.1 IIS 6.0
漏洞名称 | 原理 | 案例 |
---|---|---|
文件路径截断解析漏洞 | time.asp;.jpg | FCKeditor 2.6.6 ASP GetShell |
目录名解析错误 | /1.asp/time.rar |
4.2 IIS 7.0/7.5
IIS 能够解析PHP 脚本。IIS <----FASTCGI----> PHP
漏洞名称 | 原理 | 案例 |
---|---|---|
IIS 7.0/7.5 解析漏洞 | cgi.fix_path=1 ajest.png/.php |
IIS 解析漏洞现存与IIS 7.0/7.5版本中,即Windows server 2008和Windows7中
4.2.1 环境搭建
以IIS10.0打开php
php解释是由php引擎和php解释器进行的
点击IIS管理器
4.2.2 漏洞
请求限制在7.0/7.5中默认是不勾选的
重现访问png,在png后加上/.php