ldap匿名訪問批量檢測腳本 ldap2018.py


    公司的一個滲透測試項目中發現使用了LDAP服務(389)做為用戶認證的后台數據庫,寫了一個ldap匿名訪問批量檢測腳本 ldap2018.py:

#!/usr/bin/env python
# encoding: utf-8
# [url]http://ldap3.readthedocs.io/tutorial.html#accessing-an-ldap-server[/url]
import ldap3,os,sys,codecs
from exceptions import Exception

reload(sys)
sys.setdefaultencoding('gbk')
IpFile=file('./ldap1.txt') #IP列表
fp= codecs.open("./ldap1_success.txt","a") #成功利用后寫入的文件,支持寫入中文字符的方式
timeout=10

def check(host,port):
        
        try:
            print "[*]%s:%d" %(host,port)
            info=''
            server = ldap3.Server(host,port, get_info=ldap3.ALL, connect_timeout=timeout)
            conn = ldap3.Connection(server, auto_bind=True)
            print "[*]server=%s" %server 
            #print "[*]conn=%s" %conn
            '''if len(server.info.naming_contexts) > 0:
                print "[*]server.info.naming_contexts=%s" %(server.info.naming_contexts)
                for i in server.info.naming_contexts:
                   if "o=services" in i:
                      naming_contexts = i.encode('utf8')
                      info += u'%s:%d //存在ldap匿名訪問漏洞:\n' %(host,port)
                      print info+'\n'
                      fp.write(info)
                      fp.flush()'''
            if len(server.info.naming_contexts) > 0:
                #print conn.result
                info += u'%s:%d //存在ldap匿名訪問漏洞:\n' %(host,port)
                print info+'\n'
                fp.write(info)
                fp.flush() 
            else:
                info += u'%s:%d //不存在ldap匿名訪問漏洞:\n' %(host,port)
                print info+'\n'
                        
        except Exception, e:
            print "Exception:%s\n" %e
            pass

if __name__ == '__main__':
    ip_list = []
           
    print u'''
    ----------------------------------------------------------------------------------------
        程序名稱:ldap匿名訪問檢測腳本 ldap2018.py
        程序作者:pt007@vip.sina.com
        程序用法:
    \tldap1.txt里面設置需要掃描的IP地址,如:10.110.123.30:389 回車后輸入下一個IP地址!
    \tpython ldap2018.py
    -----------------------------------------------------------------------------------------\n'''
    ip_list=[]
    print "[*]ldap ip list:",
    while True:
        line = IpFile.readline()
        if len(line) == 0: # Zero length indicates EOF
            break
            #exit()             
        line=line.strip()
        print line,
        ip_list.append(line)
    IpFile.close()
    print "\n"
    for i in ip_list:
        host,port=i.split(":")
        check(host,int(port))
    fp.close()
    print "[*]Test done,please type ldap1_success.txt!\n"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM