该脚本主要针对网站c段进行扫描,我们在进行渗透测试的时候,一般功能少或者安全防护做的比较好的网站很难进行渗透,我们可以将目标放在他的c段上,看看同段的其他服务器搭载了一些什么业务,方便我们可以更好地进行渗透。
我们使用python编写这个脚本,设计方法是使用requests库+多线程,首先对段内存活ip进行探测,确定存活ip后,再对这些ip的端口进行请求,探测是否存在服务,如果有服务就返回存在,无的话就报无。
import requests import threading import queue import sys import ipaddr class PortScan(threading.Thread): def __init__(self,queue): threading.Thread.__init__(self) self._queue = queue self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',} def run(self): while True: if self._queue.empty(): break try: ip = str(self._queue.get(timeout=5)) url = 'http://' + ip r = requests.get(url=url,headers=self.headers,timeout=5) status = r.status_code if status: sys.stdout.write("%-27s " % (url)) except Exception: pass def main(): if len(sys.argv) != 2: print ('Usage: python %s 192.168.1.1/24'%(sys.argv[0])) else: threads = [] threadnum = 250 #线程数 queue = queue.queue() cidrip = sys.argv[1] #接收输入IP段 ips = ipaddr.IPNetwork(cidrip) for ip in ips: queue.put(ip) for i in range(threadnum): threads.append(PortScan(queue)) for t in threads: t.start() for t in threads: t.join() print ('ALL Finished!') if __name__ == '__main__': main()
这个脚本还有很多可以拓展的地方,如可以增加user-agent,或者可以使用字典对探测存活的端口的服务进行确认,后续我们可以功能进行扩展,完善。