打造自己的弱口令扫描工具

安全 应用安全
我曾写过一款弱口令检测工具,经常有童鞋在后台询问关于iscan源代码的事情,但其实通过Python打造自己的弱口令扫描工具是一件非常简单的事情,无非就是将多个Python扫描脚本集成在一起。

[[357384]]

本文转载自微信公众号「 Bypass」,作者 Bypass。转载本文请联系 Bypass公众号。

在内网检测中,弱口令扫描是必不可少的环节,选择一个好用的弱口令扫描工具,尤为重要。

我曾写过一款弱口令检测工具,经常有童鞋在后台询问关于iscan源代码的事情,但其实通过Python打造自己的弱口令扫描工具是一件非常简单的事情,无非就是将多个Python扫描脚本集成在一起。

今天,分享一些常见的端口服务扫描脚本,可根据自己的需求来改写脚本,打造一款属于自己的弱口令检测工具,然后在实战中应用,不是挺有意思的吗。

1、RDP 扫描模块

RDP协议相对复杂,想要使用Python实现RDP暴力破解,一直没找到比较简单实现的方式。后来,我在impacket 示例文件下找到了rdp_check.py,这个脚本可用于测试目标主机上的帐户是否有效。那么,通过它来改写Pyhton扫描脚本,就变得很简单。

demo代码有点长,这里就不贴了,演示截图如下:

具体参考代码:

  1. https://github.com/SecureAuthCorp/impacket/blob/master/examples/rdp_check.py 

2、SMB 扫描模块

用于检测共享文件夹和smb弱口令。

  1. from impacket import smb 
  2. def smb_login(ip,port,user,pwd): 
  3.     try: 
  4.         client = smb.SMB('*SMBSERVER',ip) 
  5.         client.login(user,pwd) 
  6.         flag ='[+] IPC$ weak password: '+user,pwd 
  7.     except
  8.         print '[-] checking for '+user,pwd+' fail' 

3、FTP 扫描模块

用于检测FTP匿名访问和弱口令。

  1. import ftplib 
  2. def ftp_anonymous(ip,port): 
  3.     try: 
  4.         ftp = ftplib.FTP() 
  5.         ftp.connect(ip,port,2) 
  6.         ftp.login() 
  7.         ftp.quit() 
  8.         print '[+] FTP login for anonymous' 
  9.     except
  10.         print '[-] checking for FTP anonymous fail' 
  11. def ftp_login(ip,port,user,pwd): 
  12.     try: 
  13.         ftp = ftplib.FTP() 
  14.         ftp.connect(ip,port,2) 
  15.         ftp.login(user,pwd) 
  16.         ftp.quit() 
  17.         print '[+] FTP weak password: '+user,pwd 
  18.     except
  19.         print '[-] checking for '+user,pwd+' fail' 

4、SSH 扫描模块

用于检测SSH弱口令。

  1. import paramiko 
  2. def ssh_login(ip,port,user,pwd): 
  3.     try: 
  4.         ssh = paramiko.SSHClient() 
  5.         ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
  6.         ssh.connect(ip,port,user,pwd,timeout=5) 
  7.         print '[+] SSH weak password: '+user,pwd 
  8.         ssh.close() 
  9.     except
  10.         print '[-] checking for '+user,pwd+' fail' 

5、Telnet 扫描模块

模拟Telnet 登录验证过程,用于telnet弱口令的检测。

  1. import telnetlib 
  2. def telnet(ip,port,user,pwd): 
  3.   try: 
  4.     tn = telnetlib.Telnet(ip,timeout=5) 
  5.     tn.set_debuglevel(0) 
  6.     tn.read_until("login: "
  7.     tn.write(user + '\r\n'
  8.     tn.read_until("assword: "
  9.     tn.write(pwd + '\r\n'
  10.     result = tn.read_some() 
  11.     result = result+tn.read_some() 
  12.     if result.find('Login Fail')>0 or result.find('incorrect')>0: 
  13.        print "[-] Checking for "+user,pwd+" fail" 
  14.     else
  15.       print "[+] Success login for "+user,pwd 
  16.     tn.close() 

6、MySQL 扫描模块

用于检测MySQL弱口令。

  1. import MySQLdb 
  2. def Mysql_login(ip,port,user,pwd): 
  3.     try: 
  4.         db = MySQLdb.connect(host=ip, user=user, passwd=pwd,port=port) 
  5.         print '[+] Mysql weak password: '+user,pwd 
  6.         db.close() 
  7.     except
  8.         print '[-] checking for '+user,pwd+' fail' 

7、MSsql 扫描模块

用于检测MSSQL弱口令。

  1. import pymssql 
  2. def mssql_login(ip,port,user,pwd): 
  3.     try: 
  4.         db = pymssql.connect(host=ip,user=user,password=pwd,port=port) 
  5.         print '[+] MSsql weak password: '+user,pwd 
  6.         db.close() 
  7.     except
  8.         #pass 
  9.         print '[-] checking for '+user,pwd+' fail' 

8、MongoDB 模块

用于检测MongoDB 匿名登录和弱口令。

  1. from pymongo import MongoClient 
  2. def mongodb(ip,port=27017):     
  3.     try: 
  4.         client = MongoClient(ip,port) 
  5.         db=client.local 
  6.         flag = db.collection_names() 
  7.         if flag:     
  8.             print "[+] Mongodb login for anonymous" 
  9.     except Exception, e: 
  10.         pass 
  11.  
  12. def mongodb_login(ip,port,user,pwd): 
  13.     try: 
  14.         client = MongoClient(ip,port) 
  15.         db_auth = client.admin 
  16.         flag = db_auth.authenticate(user, pwd) 
  17.         if flag == True
  18.             print '[+] Mongodb weak password: '+user,pwd 
  19.     except
  20.         print '[-] checking for '+user,pwd+' fail' 

9、phpmyadmin 扫描模块

模拟http请求,检测phpmyadmin弱口令。

  1. import requests 
  2. def phpMyAdmin_login(ip,port,user,pwd): 
  3.     try: 
  4.         url = "http://"+ip+":"+str(port)+"/phpmyadmin/index.php" 
  5.         data={'pma_username':user,'pma_password':pwd} 
  6.         response = requests.post(url,data=data,timeout=5) 
  7.         result=response.content 
  8.  
  9.         if result.find('name="login_form"')==-1: 
  10.             print '[+] find phpMyAdmin weak password in:'+url 
  11.             print '[+] find phpMyAdmin weak password:'+user,pwd 
  12.         else
  13.             print '[-] Checking for '+user,pwd+" fail" 
  14.             time.sleep(2) 
  15.     except
  16.             print '[-] Something Error'+user,pwd+" fail" 

10、Tomcat 扫描模块

模拟http请求,检测tomcat控制台弱口令。

  1. import requests 
  2. def tomcat_login(ip,port,user,pwd): 
  3.     try:         
  4.         url = "http://"+ip+":"+str(port)+"/manager/html" 
  5.         user_agent = "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)"   
  6.         Authorization = "Basic %s" % (base64.b64encode(user+':'+pwd)) 
  7.         header = { 'User-Agent' : user_agent , 'Authorization':Authorization}  
  8.         request = urllib2.Request(url,headers=header) 
  9.         response = urllib2.urlopen(request,timeout=5) 
  10.         result=response.read() 
  11.         if response.code ==200: 
  12.             print '[Success] '  + url+' '+user+':'+pwd              
  13.     except
  14.         print '[Login failed]' + url+' '+user+':'+pwd 

 

责任编辑:武晓燕 来源: Bypass
相关推荐

2015-11-11 14:08:07

2014-06-06 10:01:31

2020-12-25 08:12:40

Web安全网络安全

2024-09-06 07:27:52

2019-04-16 10:29:30

2016-02-15 14:13:39

Python编码环境

2013-04-23 14:20:52

Wireshark弱口令

2022-04-30 09:49:58

终端工具插件

2019-05-26 14:59:22

2013-12-15 18:15:57

弱口令乌云漏洞

2011-05-07 12:56:39

数据访问

2015-10-15 09:37:50

桌面环境发行版Linux

2016-10-29 10:44:51

工具机器人聊天

2024-01-29 00:10:00

2011-05-10 16:44:43

数据访问层

2011-05-05 14:33:34

数据访问层

2015-09-01 09:49:28

2010-09-25 10:25:23

2010-12-02 10:10:02

2010-12-01 11:36:44

点赞
收藏

51CTO技术栈公众号