IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 使用python编写一个简单的渗透的脚本 -> 正文阅读

[Python知识库]使用python编写一个简单的渗透的脚本

信息收集概要

为什么越厉害的黑客越在意信息收集的过程,因为信息收集的完整性直接决定了渗透测试的结果。信息收集是指黑客为了更加有效地实施渗透攻击而在攻击前或攻击过程中对目标的所有探测活动。

信息收集的作用

1.了解组织安全架构
2.缩小攻击范围
3.描绘网络拓扑
4.建立脆弱点数据库

信息收集分类

(1)主动信息搜集:与目标主机进行直接交互,从而拿到目标信息,缺点是会记录自己的操作信息。
(2)被动信息搜集:不与目标主机进行直接交互,通过搜索引擎或者社会工程等方式间接的获取目标主机的信息。

常用的信息收集方法

在这里插入图片描述

whois信息查询

在这里插入图片描述
当然,kali里也可以使用whois进行查询:
在这里插入图片描述
当然,也不是所有的域名都可以进行whois查询,很多域名也都做了whois查询保护。如下图示:
在这里插入图片描述
当然,常见的在线查询工具还有很多包括,爱站,站长工具,天眼,c段查询等还可以使用超级Ping查询服务器是否使用了CDN。

Nmap介绍

为什么Nmap要单独介绍了,因为Nmap是一个查询服务器端口开放情况的软件,一般经验丰富的渗透大佬,根据端口开放情况就可以快速的判断出网站的服务类型,以及可能存在的漏洞。

主机发现

iR ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 随机选择目标

-iL ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 从文件中加载IP地址

-sL ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 简单的扫描目标

-sn ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? Ping扫描-禁用端口扫描

-Pn ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 将所有主机视为在在线,跳过主机发现

-PS[portlist] ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? (TCP SYN ping) 需要root权限

-PA[portlist] ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? (TCP ACK ping)

-PU[portlist] ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? (UDP ping)

-PY [portlist] ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? (SCTP ping)

-PE/PP/PM ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? ICMP回显,时间戳和网络掩码请求探测

-PO[协议列表] ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? IP协议Ping

-n/-R ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 从不执行DNS解析/始终解析[默认:有时]

–dns-servers ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 指定自定义DNS服务器

–system-dns ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 使用OS的dns服务器

–traceroute ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 跟踪到每个主机的跃点路径

扫描技术

-sS ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 使用TCP的SYN进行扫描

-sT ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 使用TCP进行扫描

-sA ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 使用TCP的ACK进行扫描

-sU ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? UDP扫描

-sI ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? Idle扫描

-sF ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? FIN扫描

-b<FTP中继主机> ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? FTP反弹扫描

端口规格和扫描顺序

-p ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 扫描指定端口

–exclude-ports ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 从扫描中排除指定端口

-f ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 快速模式-扫描比默认扫描更少的端口

-r ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 连续扫描端口-不随机化

–top-ports ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 扫描最常用的端口

服务/版本探测

-sV ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 探测服务/版本信息

–version-intensity ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 设置版本扫描强度(0-9)

–version-all ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 尝试每个强度探测

–version-trace ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 显示详细的版本扫描活动(用于调试)

脚本扫描

-SC ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 等效于 --script=defult

–script = , ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 以逗号分隔的目录,脚本文件或脚本类别

–script-args = <n1=v1, n2=v2> ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 为脚本提供参数

–script-args-file=文件名 ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 从文件名中加载脚本参数

–script-trace ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 显示发送和接受的所有数据

–script-updatedb ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 更新脚本数据库

–script-help= ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 显示有关脚本的帮助

操作系统检测

-o ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 启用os检测

–osscan-limit ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 将os检测限制为可能的目标

–osscan-guess ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 推测操作系统检测结果

时间和性能

–host-timeout ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 设置超时时间

–scan-delay ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 设置探测之间的时间间隔

-T <0-5> ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 设置时间模板,值越小,IDS报警几率越低

防火墙/IDS规避和欺骗

-f ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 报文分段

-s ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 欺骗源地址

-g ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 使用指定的本机端口

–proxies <url,port> ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 使用HTTP/SOCK4代理

-data ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 想发送的数据包中追加自定义的负载

–data-string ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 将自定义的ACSII字符串附加到发送数据包中

–data-length ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 发送数据包时,附加随机数据

–spoof-mac ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? MAC地址欺骗

–badsum ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 发送带有虚假TCP/UNP/STCP校验和的数据包

输出

-oN ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 标准输出

-oX ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? XMl输出

-oS ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? script jlddi3

-oG ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? grepable

-oA ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 同时输出三种主要格式

-v ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 信息详细级别

-d ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 调试级别

–packet-trace ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 跟踪发送和接收的报文

–reason ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 显示端口处于特殊状态的原因

–open ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 仅显示开放的端口

杂项

-6 ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 启动Ipv6扫描

-A ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 启动Os检测,版本检测,脚本扫描和traceroute

-V ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 显示版本号

-h ???????????????????????????????????????? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ???????????????????????????????????????? 帮助信息

使用案例

在这里插入图片描述

端口扫描脚本

import socket

from datetime import datetime
# 线程池
from multiprocessing.dummy import Pool as ThreadPool

# 目标IP
remote_server_ip = "47.99.142.216"
# 目标ip启用端口
ports = []
# 设置连接超时为0.5s,在校园网中使用时可以适当延长时间
socket.setdefaulttimeout(0.5)


# 端口扫描
def scan_port(port):
    try:
        # 创建套接字
        s = socket.socket()
        # connect()函数的扩展版本,出错时返回出错码,而不是抛出异常
        # connect_ex()和connect()一样都需要传入,ip和port
        # 连接成功时返回 0 ,连接失败时候返回编码,例如:10061
        res = s.connect_ex((remote_server_ip, port))

        if res == 0:  # 如果端口开启 发送 hello 获取banner

            print(f'Port {port}: OPEN')

        s.close()

    except Exception as e:

        print(str(e.message))


if __name__ == '__main__':

    for i in range(1, 65535):
        ports.append(i)

    # 显示扫描时间
    t1 = datetime.now()
    # 设置线程池
    pool = ThreadPool(processes=1000)
    # map() 会根据提供的函数对指定序列做映射。
    results = pool.map(scan_port, ports)

    pool.close()

    print('Multiprocess Scanning Completed in  ', datetime.now() - t1)

敏感文件扫描脚本

import urllib.request
import queue
import threading
import sys


def bytes2human(n):
    """
    >>> bytes2human(10000)
    9K
    >>> bytes2human(100001221)
    95M
    """
    symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
    prefix = {}
    for i, s in enumerate(symbols):
        prefix[s] = 1 << (i + 1) * 10

    for s in reversed(symbols):
        if n >= prefix[s]:
            value = int(float(n) / prefix[s])
            return '%s%s' % (value, s)
    return '%sB' % n


def gethtml(url, bak):
    try:
        urlbak = url + bak
        #print(urlbak)
        req = urllib.request.urlopen(urlbak, timeout=10)
        if req.code == 200:
            meta = req.info()
            file_size = int(meta.getheaders("Content-Length")[0])
            m = bytes2human(file_size)
            content_type = meta.getheaders('Content-Type')[0].split(';')[0]
            if file_size == 0:
                return False
            if 'html' in content_type:
                return False
            else:
                print('%s ---- %s ---- %s ' % (urlbak, m, content_type))
                return '%s ---- %s ---- %s ' % (urlbak, m, content_type)
        else:
            return False
    except:
        return False


def writefile(fileName, c):
    f = open(fileName, "a")
    f.write(c + "\n")
    f.close()


q = queue.Queue()


def scanner(url):
    for i in bekadd(url):
        c = gethtml(url, i)
        if c != False:
            writefile("bak.txt", c)


def worker():
    while not q.empty():
        url = q.get()
        scanner(url)
        q.task_done()


def bekadd(url):
    listbak = ['/1.zip', '/1.rar', '/web.rar', '/web.zip', '/www.rar', '/www.zip', '/wwwroot.rar', '/wwwroot.zip',
               '/backup.rar', '/backup.zip', '/database.rar', '/database.zip', '/databak.rar', '/databak.zip',
               '/databackup.rar', '/databackup.zip', '/databack.zip', '/sql.rar', '/sql.zip']
    wwwurl = url[url.find("http://") + 7:].rstrip("/")
    urldomain = url[url.rfind('.', 0, url.rfind('.')) + 1:].rstrip("/")
    urlcenter = urldomain[0:urldomain.rfind('.')].rstrip("/")
    wwwurl = "/" + wwwurl
    urldomain = "/" + urldomain
    urlcenter = "/" + urlcenter
    listbak.append(wwwurl + ".rar")
    listbak.append(wwwurl + ".zip")
    listbak.append(urldomain + ".rar")
    listbak.append(urldomain + ".zip")
    listbak.append(urlcenter + ".rar")
    listbak.append(urlcenter + ".zip")
    return listbak


if __name__ == '__main__':
    if len(sys.argv) < 2:
        # print('mOon:www.moonsec.com')
        print('python scanbak.py url.txt')
        sys.exit()

    lines = open(sys.argv[1], "r")
    for line in lines:
        line = line.rstrip()
        q.put(line)

    for i in range(100):
        t = threading.Thread(target=worker)
        t.start()

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:15:03  更:2021-12-15 18:16:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:47:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码