文中摘自微信公众平台「 Bypass」,创作者 Bypass。转截文中请联络 Bypass微信公众号。
以内网检测中,弱口令扫描是不可缺少的阶段,挑选一个实用的弱口令扫描专用工具,至关重要。
我曾读过一款弱口令检测专用工具,常常有朋友在后台管理了解有关iscan源码的事儿,但实际上根据Python打造出自身的弱口令扫描专用工具是一件比较简单的事儿,无非便是将好几个Python扫描脚本集成化在一起。
今日,共享一些常用的端口号服务项目扫描脚本,可依据自身的需要来改变脚本,打造出一款是自身的弱口令检测专用工具,随后在实战演练中运用,并不是挺有趣的吗。
1、RDP 扫描模块
RDP协议相对性繁杂,要想应用Python完成RDP暴力破解密码,一直没找到非常简单完成的方法。之后,我还在impacket 实例文档下找到rdp_check.py,这一脚本可用于检测总体目标服务器上的账号是不是合理。那麼,根据它来改变Pyhton扫描脚本,就变的非常简单。
demo编码有点儿长,这儿也不贴了,演试截屏如下所示:
实际参照编码:
https://github.com/SecureAuthCorp/impacket/blob/master/examples/rdp_check.py
2、SMB 扫描模块
用于检测文件夹共享和smb弱口令。
fromimpacketimportsmbdefsmb_login(ip,port,user,pwd):try:client=smb.SMB('*SMBSERVER',ip)client.login(user,pwd)flag='[ ]IPC$weakpassword:' user,pwdexcept:print'[-]checkingfor' user,pwd 'fail'
3、FTP 扫描模块
用于检测FTP密名浏览和弱口令。
importftplibdefftp_anonymous(ip,port):try:ftp=ftplib.FTP()ftp.connect(ip,port,2)ftp.login()ftp.quit()print'[ ]FTPloginforanonymous'except:print'[-]checkingforFTPanonymousfail'defftp_login(ip,port,user,pwd):try:ftp=ftplib.FTP()ftp.connect(ip,port,2)ftp.login(user,pwd)ftp.quit()print'[ ]FTPweakpassword:' user,pwdexcept:print'[-]checkingfor' user,pwd 'fail'
4、SSH 扫描模块
用于检测SSH弱口令。
importparamikodefssh_login(ip,port,user,pwd):try:ssh=paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(ip,port,user,pwd,timeout=5)print'[ ]SSHweakpassword:' user,pwdssh.close()except:print'[-]checkingfor' user,pwd 'fail'
5、Telnet 扫描模块
仿真模拟Telnet 登陆认证全过程,用于telnet弱口令的检测。
importtelnetlibdeftelnet(ip,port,user,pwd): try: tn=telnetlib.Telnet(ip,timeout=5) tn.set_debuglevel(0) tn.read_until("login:") tn.write(user '\r\n') tn.read_until("assword:") tn.write(pwd '\r\n') result=tn.read_some() result=result tn.read_some() ifresult.find('LoginFail')>0orresult.find('incorrect')>0: print"[-]Checkingfor" user,pwd "fail" else: print"[ ]Successloginfor" user,pwd tn.close()
6、MySQL 扫描仪控制模块
用以检验MySQL弱口令。
importMySQLdbdefMysql_login(ip,port,user,pwd):try:db=MySQLdb.connect(host=ip,user=user,passwd=pwd,port=port)print'[ ]Mysqlweakpassword:' user,pwddb.close()except:print'[-]checkingfor' user,pwd 'fail'
7、MSsql 扫描仪控制模块
用以检验MSSQL弱口令。
importpymssqldefmssql_login(ip,port,user,pwd):try:db=pymssql.connect(host=ip,user=user,password=pwd,port=port)print'[ ]MSsqlweakpassword:' user,pwddb.close()except:#passprint'[-]checkingfor' user,pwd 'fail'
8、MongoDB 控制模块
用以检验MongoDB 匿名登录和弱口令。
frompymongoimportMongoClientdefmongodb(ip,port=27017):try:client=MongoClient(ip,port)db=client.localflag=db.collection_names()ifflag:print"[ ]Mongodbloginforanonymous"exceptException,e:passdefmongodb_login(ip,port,user,pwd):try:client=MongoClient(ip,port)db_auth=client.adminflag=db_auth.authenticate(user,pwd)ifflag==True:print'[ ]Mongodbweakpassword:' user,pwdexcept:print'[-]checkingfor' user,pwd 'fail'
9、phpmyadmin 扫描仪控制模块
仿真模拟http要求,检验phpmyadmin弱口令。
importrequestsdefphpMyAdmin_login(ip,port,user,pwd):try:url="http://" ip ":" str(port) "/phpmyadmin/index.php"data={'pma_username':user,'pma_password':pwd}response=requests.post(url,data=data,timeout=5)result=response.contentifresult.find('name="login_form"')==-1:print'[ ]findphpMyAdminweakpasswordin:' urlprint'[ ]findphpMyAdminweakpassword:' user,pwdelse:print'[-]Checkingfor' user,pwd "fail"time.sleep(2)except:print'[-]SomethingError' user,pwd "fail"
10、Tomcat 扫描仪控制模块
仿真模拟http要求,检验tomcat控制面板弱口令。
importrequestsdeftomcat_login(ip,port,user,pwd):try:url="http://" ip ":" str(port) "/manager/html"user_agent="Mozilla/4.0(compatible;MSIE5.5;WindowsNT)"Authorization="Basic%s"%(base64.b64encode(user ':' pwd))header={'User-Agent':user_agent,'Authorization':Authorization}request=urllib2.Request(url,headers=header)response=urllib2.urlopen(request,timeout=5)result=response.read()ifresponse.code==200:print'[Success]' url '' user ':' pwdexcept:print'[Loginfailed]' url '' user ':' pwd