LKRHash 旨在在多线程和多核环境下构建可扩展的高并发哈希表。创建者付出了很多努力来使此实现具有可移植性、灵活性和可定制性,以适应 Microsoft 的多种产品。应用程序可以定义自己的表相关函数,例如散列函数、键提取函数或键比较函数。这种可扩展性为漏洞挖掘创造了大量机会。所以,在这种背景下,我们更关心的是记录、键和函数之间的关系。
CLKRHashTable::CLKRHashTable( this, "TOKEN_CACHE", // An identifier for debugging pfnExtractKey, // Extract key from record pfnCalcKeyHash, // Calculate hash signature of key pfnEqualKeys, // Compare two keys pfnAddRefRecord, // AddRef in FindKey, etc 4.0, // Bound on the average chain length. 1, // Initial size of hash table. 0, // Number of subordinate hash tables. 0 // Allow multiple identical keys? );
# add a test account, please ensure to remove that after testing > net user orange test-for-CVE-2022-30209-auth-bypass /add
# the source of login is not important, this can be done outside IIS. > curl -I -su 'orange:test-for-CVE-2022-30209-auth-bypass''http://<iis>/protected/' | findstr HTTP HTTP/1.1 200 OK
在攻击者的终端下:
# script for sanity check > type test.py def HashString(password): j = 0 for c in map(ord, password): j = c + (101*j)&0xffffffff return j
我们还证明了这种攻击在 Microsoft Exchange Server 上自然有效。利用默认激活的Exchange Active Monitoring服务,我们可以HealthMailbox不用密码进入邮箱!这种无需身份验证的帐户劫持对于进一步的利用非常有用,例如网络钓鱼或将另一个经过身份验证的 RCE 链接在一起!
评论