Revealing phpinfo()

By
Nash N Sulthan
Published on
30 Apr 2024
3 min read
Vulnerability

What is revealing phpinfo ()

phpinfo is a builtin function to output PHP’s configuration. The phpinfo() function outputs information like PHP compilation options, PHP extensions, OS information, PHP license and more sensitive information.

This function was introduced for developers to get configuration details and predefined variables on a given system. The phpinfo() is also a debugging tool as it consists of all the information a developer wants to know about a server.

If anyone uploads the phpinfo() function to their webroot/index.php file, they can see their server’s configuration settings.

For an attacker, the information printed by the phpinfo() function has vital significance. Using this information, the attacker can efficiently plan an attack.

As this function shows the version of PHP, the attacker will search for the vulnerabilities that version of PHP has. If an attacker gets hold of phpinfo(), he can destroy the web application.

Impacts of revealing the phpinfo ()

There are many impacts to revealing the phpinfo (). Some of them are:

1. Security risks

One of the biggest concerns with phpinfo() is the potential security risk it poses. The detailed information it reveals about the server environment could be exploited by malicious actors to identify vulnerabilities and launch attacks.

2. Exposing sensitive information

In some cases, phpinfo() may inadvertently expose sensitive information such as directory paths, server software versions, or system configurations. This information could be leveraged by attackers to plan targeted attacks or exploit known vulnerabilities.

3. Performance overhead

Generating a phpinfo() page requires gathering and displaying a significant amount of information, which can impose a performance overhead, especially on high-traffic or resource-constrained servers.

Preventive measures to revealing the phpinfo ()

To prevent the potential negative impacts of revealing phpinfo(), here are some recommended measures:

1. Restrict access

Limit access to phpinfo() output by ensuring it is only accessible to authorized personnel. This can be achieved by placing phpinfo() calls behind authentication mechanisms or IP restrictions.

2. Disable phpinfo()

In production environments, consider disabling phpinfo() entirely to prevent accidental exposure of sensitive information. This can be done by setting the disable_functions directive in the PHP configuration file (php.ini) to include phpinfo().

3. Use secure development practices

Avoid using phpinfo() in production code or public-facing applications unless absolutely necessary. Instead, rely on alternative methods for debugging and troubleshooting, such as logging errors or using debuggers.

4. Regularly update and secure server

Keep the server and PHP environment up to date with the latest security patches and updates. Regularly review and audit server configurations to identify and mitigate potential vulnerabilities.

5. Implement server hardening measures

Implement server hardening best practices to strengthen the overall security posture of the server. This includes measures such as configuring proper file permissions, using secure communication protocols, and employing intrusion detection systems.

6. Educate developers

Educate developers and administrators about the potential risks associated with phpinfo() and the importance of practicing secure coding and configuration practices.

Encourage them to use phpinfo() responsibly and only in controlled environments.

By implementing these prevention measures, you can mitigate the risks associated with revealing phpinfo() and ensure the security and integrity of your PHP applications and server environment.


Written by
Nash N Sulthan
Nash N Sulthan
Cyber Security Lead Engineer
Experience the Beagle Security platform
Unlock one full penetration test and all Advanced plan features free for 10 days