Horde Groupware Webmail 漏洞调试环境搭建
0x00 前言
本文记录从零开始搭建 Horde Groupware Webmail 漏洞调试环境的细节。
0x01 简介
本文将要介绍以下内容:
- Horde Groupware Webmail 安装
- Horde Groupware Webmail 漏洞调试环境配置
- 常用知识
0x02 Horde Groupware Webmail 安装
参考资料:
- https://www.horde.org/apps/webmail/docs/INSTALL
- https://github.com/horde/base/blob/master/doc/INSTALL.rst
- https://geekrewind.com/install-horde-groupware-webmail-on-ubuntu-16-04-18-04-with-apache2/
- https://neoserver.site/help/step-step-installation-instructions-postfix-and-dovecot-ubuntu
简单来说,安装 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 系统的用户进行登录,成功,如下图
补充 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.
如下图
补充 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
用户的口令,选择创建用户,如下图
(2) 选择 horde
访问: http://<cpanel ip>:2096/
使用新添加的账户登录,选择 Email Accounts,配置成 horde
,如下图
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,可选择以下两种筛选方法:
- 命令行执行命令
php -i
- 浏览器访问 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
,如下图
(3) 配置 DBGp Proxy
依次打开 File
-> Settings
-> PHP
-> Debug
-> DBGp Proxy
,填入以下信息:
IDE key: PHPSTORM
Host: 192.168.112.168
Port: 9000
如下图
(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
如下图
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 浏览器,捕获到断点,如下图
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 技术交流群。
上一篇: Password Manager Pro 利用分析 —— 数据解密
下一篇: Jvm 常量池
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论