OWASP Mutillidae新手求助:fsockopen无法连接127.0.0.1:389错误
解决Mutillidae连接127.0.0.1:389失败的问题
你遇到的是Mutillidae启动时尝试连接本地389端口超时的问题,389是LDAP服务的默认端口,从代码逻辑来看,程序会预先检测目标服务的连通性,连接失败说明要么端口上没服务运行,要么被防火墙拦截,或者配置参数写错了。
排查和解决步骤:
- 核对配置参数:先找Mutillidae的数据库配置文件,确认
$lDatabaseHost和$lDatabasePort的取值。如果你用的是MySQL、MariaDB这类数据库,默认端口是3306,不是389,大概率是配置时填错了端口号,改成对应数据库的正确端口即可。 - 检查端口监听状态:用命令确认389端口是否有服务在监听:
- Windows:
netstat -ano | findstr ":389" - Linux/macOS:
ss -tulpn | grep :389
如果没结果,说明该端口没有服务运行,要么启动对应的LDAP服务,要么修正配置里的端口。
- Windows:
- 排查防火墙拦截:临时关闭本地防火墙(Windows Defender防火墙、iptables等)测试是否能连通,要是关闭后正常,就给389端口添加放行规则。
- 确认服务状态:如果确实需要使用LDAP服务,检查服务是否正常启动,查看服务日志排除启动失败的原因。
错误信息
fsockopen(): Unable to connect to 127.0.0.1:389 (连接尝试失败,因为连接方在一段时间后未正确响应,或已建立的连接失败因为连接主机未能响应)
相关代码片段
try{ $lWaitTimeoutInSeconds = 2; if($fp = fsockopen($lDatabaseHost,$lDatabasePort,$lSocketErrorCode,$lSocketErrorMessage,$lWaitTimeoutInSeconds)){ $lDatabasePortScanMessage = "The database is reachable. Connected to database host " . $lDatabaseHost . " on port " . $lDatabasePort; } else { $lDatabasePortScanMessage = "Cound not connect to database host $lDatabaseHost on port $lDatabasePort. The hostname or port may be incorrect, the server offline, the service is down, or a firewall is blocking the connection. $lSocketErrorCode - $lSocketErrorMessage"; } // end if if (is_resource($fp)){ fclose($fp); } // end if }catch (Exception $e){
内容的提问来源于stack exchange,提问作者user2345
相关产品推荐
相关产品推荐

