首页 > 数据库 > > 【DB安全攻防战】DB:你的密码真的安全吗?
数据库用户信息泄露后,对用户密码的猜解成本
最近在看有关postgresql的渗透测试,其中提到了用户密码的暴力破解,于是在PG9.6上进行了简单验证,
前提:用户加密密码泄露
推测结果(没有实际物理环境执行):在RH5885H V3服务器上,最长时间为1.5day破解OLAP的8位大写、小写、数字自合密码。
数据库中三权分立将系统管理员(sysadmin)用户权限进行削弱,只能查看系统信息,不再管理其他数据库用户,因此sysadmin用户可以将普通用户的加密密码信息泄露(既然不能管理普通用户了,干脆他们的加密密码信息泄露出去吧!)

'sha256'+RandSalt(64)+SeverKey(64)+StoredKey(64)+'md5'+hash(password+usename,32)+IterCount(11)+SeverKey(64)+StoredKey(64)
由三大部分组成:
SHA256: 第一部分,在使用FRC5802算法时,经过IterCount(11)次迭代(该默认值为50000);
MD5: 第二部分,兼容postgresql社区,对’用户密码+用户名’进行hash运算;
----此部分较为脆弱,为此次的攻击对象
SHA256: 第三部分,兼容OLAP历史各户端工具,经过2048次迭代;
密码的验证(只验证其中的某一部分):
自研Client(XX及以后版本)->DB Server:验证第一部分是否正确
自研Client(兼容XX及以前)->DB Server:验证第三部分是否正确
PG社区Client ->DB Server:验证第二部分是否正确
针对postgresql数据库,可使用MDCrack口令破解工具,详见:
http://pentestmonkey.net/blog/cracking-postgres-hashes
工具破解方式:加密密码+暴力破解,默认遍历:A-Z0-9a-z,共62中,用户可自定义添加特殊字符
GaussDB 200密码默认限制:①大写字母、小写字母、数字、特殊字符,至少3中字符,②长度至少8位。
因此用户可使用A-Z0-9a-z生成有效的密码;
此时密码种群为62^8= 218340105584896=2e+14
为缩短实际测试时间,使用A-Z0-9a-z组成的5位密码、6位密码,进行实际爆-破
user02用户的5位密码(大写、小写、数组组合)暴力破解实测结果:9s

user01用户的6位密码(大写、小写、数组组合)暴力破解实测结果:9min 33s

MD5密码暴力破解推测
先看一下MDCrack口令破解工具的benchmark性能指标与运行的CPU信息:

运行环境(VM硬件):4*2.15GHz CPU
性能指标(多核):52297152=5e+7
验证5位、6位密码破解时间是否合理:
5位密码:62^5=916132832;9e+8 / 5e+7 = 18s,即最长时间为18秒破解,上例中实测为9s破解,合理。
6位密码:62^6=56800235584;5.7e+10 / 5e+7 = 1140s,即最长时间为19min破解,上例中实测为9min33s破解,合理。
推测(在同等配置的VM):
8位密码:62^8= 218340105584896;2e+14 / 5e+7 = 4e+6,即最长时间为46day破解OLAP的8位大写、小写、数字自合密码。

以实验室RH5885H V3为例,该机器单核性能高于实测环境的VM单核(2.8GHz VS 2.15GHz),其多核能力为VM的30倍(120CPU VS 4CPU)
MDCrack工具全依赖于CPU计算能力,多核性能可完美发挥:
因此在RH5885H V3上的推测结果为46day/30=1.5day,即最长时间为1.5day破解OLAP的8位大写、小写、数字自合密码。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3127740/ ,如需转载,请注明出处,否则将追究法律责任。