**0x00:简介**
banner 信息来表示欢迎语,其中会包含一些敏感信息,所以获取 banner 也属于信息搜集的范畴。在渗透测试中,典型的 4xx、5xx 信息泄露就属于 banner 泄露的一种。在 banner 信息中,可以获取到软件开发商、软件名称、服务类型、版本号等。而版本号有时候就会存在公开的 CVE 问题,可以直接进行利用。
banner 信息获取的基础是在和目标建立链接后的,只有建立的链接,才可以获取到相应的 banner 信息,当目标对 banner 信息进行隐藏或者配置了禁止读取时,这时的 banner 则获取不到。
**0x01:程序**
于是乎,我们可以写一个小脚本扫描服务器的banner信息,以获取有用的信息。
from socket import * from concurrent.futures import ThreadPoolExecutor,as_completed host=input('输入ip') def scan(port): sock= socket(AF_INET,SOCK_STREAM) try: sock.settimeout(5) sock.connect((host,port)) sock.send('hello\r\n'.encode()) result=sock.recv(1024) print(result.decode()) except Exception as e: print(e) finally: sock.close() def main(): with ThreadPoolExecutor(max_workers=int(input('设置线程数'))) as t: job_list = [] for port in range(int(input('起始端口')),int(input('结束端口'))): obj = t.submit(scan,port) job_list.append(obj) if __name__=='__main__': main()
**0x03:解释**
网上抄的:说一下细节,首先是 socket.socket 的参数,第一个参数是输入地址类型,第二个是输入套接字类型。socket.AF_INET 是用于服务之间的网络通信。socket.SOCK_STREAM 是用于 TCP,这两个参数的选择项如下:
第一个地址类型:
socket.AF_UNIX:用于 Unix 系统进程间的通信。
socket.AF_INET:服务器之间的网络通信。
socket.AF_INET6:使用 IPv6 进行通信。
第二个套接字类型:
socket.SOCK_STREAM:流式的 socket,用于 TCP。
socket.SOCK_DGRAM:数据包式的 socket,用于 UDP。
而经常组合用到的有两种,一种是 TCP 的 socket,一种是 UDP 的 socket,他们分别如下:
TCP:socket.socket(socket.AF_INET,socket.SOCK_STREAM)
UDP:socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
**0x04:结果**
**0x05:注意**
1.没啥注意的,脚本问题很多,练手用的,主要是想熟悉一下使用python编写工具的思路,想优化哪里自己改就行
2.相关教程https://www.runoob.com/python/python-socket.html (socket )https://www.jianshu.com/p/6d6e4f745c27 (线程池)
来源:freebuf.com 2020-11-16 18:54:51 by: 浪荡江湖郑某人
请登录后发表评论
注册