Horde Groupware Webmail 漏洞调试环境搭建

发布于 2025-01-15 01:45:11 字数 10768 浏览 3 评论 0

0x00 前言

本文记录从零开始搭建 Horde Groupware Webmail 漏洞调试环境的细节。

0x01 简介

本文将要介绍以下内容:

  • Horde Groupware Webmail 安装
  • Horde Groupware Webmail 漏洞调试环境配置
  • 常用知识

0x02 Horde Groupware Webmail 安装

参考资料:

简单来说,安装 Horde Groupware Webmail 时需要配置以下环境:

  • MySQL 数据库
  • Apache2
  • php7.2
  • Dovecot

操作系统选择 Ubuntu18,这里不能选择 Ubuntu16,因为 Ubuntu16 不支持 php7.2,本文的安装过程做了适当精简,完整过程可根据参考资料进行学习,具体安装过程如下:

1. 安装 MariaDB Database Server

(1) 安装

安装命令: sudo apt-get -y install mariadb-server mariadb-client

(2) 配置

配置命令: sudo mysql_secure_installation

配置如下:

Enter current password for root (enter for none): press the Enter
Set root password? [Y/n]: n
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]:  Y
Reload privilege tables now? [Y/n]:  Y

(3) 创建数据库

连接数据库的命令: mysql -u root -p

执行以下命令:

CREATE DATABASE horde;
CREATE USER 'hordeuser'@'localhost' IDENTIFIED BY 'new_password_here';
GRANT ALL ON horde.* TO 'hordeuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

设置数据库的用户为 hordeuser ,口令为 new_password_here

2. 安装 php-horde-webmail

安装命令: sudo apt -y install php-horde-webmail

3. 配置 webmail

安装命令:

pear channel-discover pear.horde.org
pear run-scripts horde/horde_role

配置如下:

Filesystem location for the base Horde application : /usr/share/horde
Configuration successfully saved to PEAR config.
Install scripts complete

注:这里必须指定为 /usr/share/horde ,否则在运行 webmail-install 时报错提示: failed to open stream: No such file or directory in /usr/bin/webmail-install on line 17

4. 安装

安装命令: webmail-install

配置如下:

Installing Horde Groupware Webmail Edition

Configuring database settings

What database backend should we use? 
    (false) [None]
    (mysql) MySQL / PDO
    (mysqli) MySQL (mysqli)
    (oci8) Oracle
    (pgsql) PostgreSQL
    (sqlite) SQLite

Type your choice []: mysql

Username to connect to the database as* [] hordeuser
Password to connect with new_password_here
How should we connect to the database? 
    (unix) UNIX Sockets
    (tcp) TCP/IP

Type your choice [unix]: unix

Location of UNIX socket [] 

Database name to use* [] horde

Internally used charset* [utf-8] 
Use SSL to connect to the server? 
    (false) No
    (true) Yes

Type your choice []: false
Split reads to a different server? 
    (false) Disabled
    (true) Enabled

Type your choice [false]: 
Should Horde log all queries. If selected, queries will be logged at the DEBUG level to your configured logger. 
    (1) Yes
    (0) No

Type your choice [0]: 

Writing main configuration file. done.

Creating and updating database tables. done.

Configuring administrator settings

Specify an existing mail user who you want to give administrator permissions (optional): 

Writing main configuration file. done.

Thank you for using Horde Groupware Webmail Edition!

5.访问登录页面

http://127.0.0.1/horde/login.php

这里不能使用 localhost,会报错提示:

A fatal error has occurred
Session cookies will not work without a FQDN and with a non-empty cookie domain. Either use a fully qualified domain name like "http://www.example.com" instead of "http://example" only, or set the cookie domain in the Horde configuration to an empty value, or enable non-cookie (url-based) sessions in the Horde configuration.

此时没有配置邮箱用户,无法进行登录,需要安装 Dovecot

6.安装 Dovecot

安装命令: apt-get -y install dovecot-imapd dovecot-pop3d

默认 horde webmail 没有配置邮箱用户,可以使用 Ubuntu 系统的用户进行登录,成功,如下图

Alt text

补充 1:安装 File_Fstab 会出现 bug

安装命令: pear install File_Fstab

安装这个模块之后,无法加载 test 页面,报错提示:

A fatal error has occurred
syntax error, unexpected 'new' (T_NEW)
Details have been logged for the administrator.

如下图

Alt text

补充 2:cpanel 默认支持 Horde Groupware Webmail

cpanel 的安装可参考: https://docs.cpanel.net/installation-guide/system-requirements-centos/

cpanel 下启用 Horde Groupware Webmail 的方法如下:

(1) 添加邮箱账户

访问: http://<cpanel ip>:2087/

进入 WHM,登录用户名 root ,口令为 root 用户的口令,选择创建用户,如下图

Alt text

(2) 选择 horde

访问: http://<cpanel ip>:2096/

使用新添加的账户登录,选择 Email Accounts,配置成 horde ,如下图

Alt text

0x03 Horde Groupware Webmail 漏洞调试环境配置

这里需要先在安装 Horde Groupware Webmail 的 Ubuntu18 上添加 xdebug,然后在本地安装 PhpStorm 进行远程调试

本地系统使用 Windows,IP 为 192.168.112.131

安装 Horde Groupware Webmail 的 Ubuntu18 IP 为 192.168.112.168

流程如下:

1. 安装 xdebug

需要根据 php 版本选择合适的 xdebug,可选择以下两种筛选方法:

  1. 命令行执行命令 php -i
  2. 浏览器访问 phpinfo 页面

echo "<?php phpinfo();?>" > /usr/share/horde/phpinfo.php

访问 http://127.0.0.1/horde/phpinfo.php

将以上方法得到的输出信息复制到 https://xdebug.org/wizard,可以自动解析出对应的 xdebug 版本

根据提示进行安装

输出信息如下:

PHP 版本: 7.2.24-0

下载安装 xdebug:

wget https://xdebug.org/files/xdebug-3.1.5.tgz
apt-get install php-dev autoconf automake
tar -xvzf xdebug-3.1.5.tgz
cd xdebug-3.1.5
phpize
./configure
make
cp modules/xdebug.so /usr/lib/php/20170718

配置 xdebug: vi /etc/php/7.2/apache2/conf.d/99-xdebug.ini

配置代码需要区分 XDebug2 和 XDebug3,自 PhpStorm 2020.3 起,开始使用 XDebug3,语法也做了更改,详细说明: https://xdebug.org/docs/upgrade_guide

正确的参数:

zend_extension = /usr/lib/php/20170718/xdebug.so
xdebug.mode=debug
xdebug.idekey=PHPSTORM
xdebug.start_with_request=yes
xdebug.client_host=192.168.112.131
xdebug.client_port=9000
xdebug.log='/tmp/xdebug.log'

对应老的参数(失效):

zend_extension = /usr/lib/php/20170718/xdebug.so
xdebug.mode=debug
xdebug.idekey=PHPSTORM
xdebug.remote_enable=1
xdebug.remote_host=192.168.112.131
xdebug.remote_port=9000
xdebug.remote_handler=dbgp 
xdebug.remote_log='/tmp/xdebug.log'

重启 Apache 服务: sudo systemctl restart apache2.service

可通过访问 phpinfo 页面确认 xdebug 是否配置成功

2. PhpStorm 配置

(1) 安装 PhpStorm

(2) 配置调试端口

打开 PhpStorm,创建一个 PHP Empty Project

依次打开 File -> Settings -> PHP -> Debug

确认调试端口为 9000 ,如下图

Alt text

(3) 配置 DBGp Proxy

依次打开 File -> Settings -> PHP -> Debug -> DBGp Proxy ,填入以下信息:

IDE key:     PHPSTORM
Host:          192.168.112.168
Port:         9000

如下图

Alt text

(4) 配置 Servers

依次打开 File -> Settings -> PHP -> Servers

手动添加一个,填入以下信息:

Name:        test1
Host:          192.168.112.168
Port:         80
Debugger:    Xdebug

勾选 Use path mappings ,填入以下配置信息:

File/Directory:                    c:\Users\1\PhpstormProjects\untitiled\horde
Absolute path on the server:    /usr/share/horde

如下图

Alt text

3. 下断点

将 Ubuntu18 的文件夹 /usr/share/horde 下载到本地,保存为 c:\Users\1\PhpstormProjects\untitiled\horde

在 PhpStorm 打开需要调试的 php 文件并下断点

4. 开始调试

(1) 配置

依次打开 Run -> Edit Configurations

手动添加一个,选择 PHP Web Page ,填入以下信息:

Name:        horde
Server:        test1
Start URL:    http://192.168.112.168/horde/login.php
Browser:    Chrome

(2) 开启监听

依次打开 Run -> Start Listening for PHP Debug Connections

(3) 开启调试

依次打开 Run -> Debug

弹出 Chrome 浏览器,捕获到断点,如下图

Alt text

0x04 常用知识

1. 添加管理员用户

将用户 a 设置为管理员用户

vi /usr/share/horde/config/conf.php

修改: $conf['auth']['admins'] = array();

设置为: $conf['auth']['admins'] = array('a');

2. 日志位置

/var/log/apache2/access.log

0x05 小结

在我们搭建好 Horde Groupware Webmail 漏洞调试环境后,接下来就可以着手对漏洞进行学习。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

孤君无依

暂无简介

文章
评论
26 人气
更多

推荐作者

hncloud

文章 0 评论 0

13545243122

文章 0 评论 0

探春

文章 0 评论 0

樱桃奶球

文章 0 评论 0

LR

文章 0 评论 0

J.smile

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文