首页 > 技术文章 > python安全编程之c段扫描器

lzlzzzzzz 2020-11-10 21:58 原文

该脚本主要针对网站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\n" % (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,或者可以使用字典对探测存活的端口的服务进行确认,后续我们可以功能进行扩展,完善。

推荐阅读