第161天:安全开发-Python-红队项目漏扫调用API推送微信任务自动添加并启动

目录

案例一:Python-红队项目-Xray调用推送微信

案例二:Python-红队项目-Awvs 调用自动添加

案例三: Python-红队项目-SQLMAP 调用自动添加


案例一:Python-红队项目-Xray调用推送微信

首先本地测试调用api发送信息给微信

api网站地址:(可以免费使用7天啊!)Server酱·Turbo版 | 一个请求通过API将消息推送到个人微信、企业微信、手机客户端和钉钉群、飞书群

api调用方式,直接访问就可以,desp后面跟的是你要发送的数据,最好以post方式请求,get数据会比较少,xxx替换为你的key

​https://sctapi.ftqq.com/xxxx.send?title=messagetitle&desp=messagecontent

这里我直接尝试访问,查看输出结果

 利用python请求

import requestsurl = "https://sctapi.ftqq.com/xxx.send?title= test!!!"content="""ip = "127.0.0.1",whoami = "admin",work = "say hello"
"""
data={'desp':content
}
print(data)
requests.post(url,data=data)

在本地搭建一个Flask模块搭建起来的微型网站,其中里面的request对象有很多用法

在Flask中,request对象是一个非常重要的全局对象,它封装了客户端发送给服务器的HTTP请求信息。通过request对象,你可以访问请求中的数据,比如查询字符串(query string)、表单数据(form data)、JSON数据、文件上传、头部信息(headers)、cookies等。

下面这个案例中搭建了一个微型的flask网站,当GET访问/x时就会触发test方法,接收请求中的headers信息

from flask import Flask,requestapp = Flask(__name__)@app.route('/x',methods=["GET"])
def test():x = request.headersprint(x)if __name__ == "__main__":app.run()

xray  -webhook-output参数介绍

在Xray中,使用--webhook-output参数来指定Webhook的URL地址。例如:

xray webscan --url http://example.com --webhook-output http://your-webhook-server.com/webhook

这个命令会启动Xray的web扫描模式,对指定的URL进行扫描,并将扫描结果发送到http://your-webhook-server.com/webhook这个地址。

Xray发送到Webhook的响应格式是JSON,包含了扫描结果的详细信息。响应的JSON结构大致如下:

{"type": "xxx","data": {}
}

利用这个参数把前面两个案例进行结合,把扫描出来的数据发送给自己搭建的建议网站,然后调用api接口,发送给微信

整合代码

from flask import Flask,request
import requestsapp = Flask(__name__)@app.route('/webhook',methods=["POST"])
def test():try:x = request.json#print(x['data']['target']['url'])url = "https://sctapi.ftqq.com/SCT257938Tua9PZKvryRYtsKHbNfgWacLg.send?title= vuln"content="""url : {url}插件: {plugin}vlun类型: {type}""".format(url=x['data']['target']['url'],plugin=x['data']['plugin'],type=x['type'])data={'desp':content}print(data)requests.post(url,data=data)except Exception as e:passif __name__ == "__main__":app.run()

把xray返回过来的这三段数据发送给wx

程序启动后,xray扫描漏洞网页

xray_windows_amd64.exe webscan --url http://testphp.vulnweb.com/artists.php?artist=1 --webhook-output http://127.0.0.1:5000/webhook

收到消息了

查看结果

每一条都会发送结果

案例二:Python-红队项目-Awvs 调用自动添加

参考文章:AWVS13批量脚本_awvs自定义脚本-CSDN博客

获取awvs的api-key

# 发送代码如下
api_add_url = "https://x/api/v1/targets"
headers = {'X-Auth': 'x','Content-type': 'application/json'
}data = '{"address":"http://vulnweb.com/","description":"create_by_reaper","criticality":"10"}'r = requests.post(url=api_add_url, headers=headers, data=data,verify=False).json()
print(r)

新增扫描任务

Method:POST
URL: /api/v1/targets

代码

import requests
# 发送代码如下
api_add_url = "https://x/api/v1/targets"
headers = {'X-Auth': 'x','Content-type': 'application/json'
}data = '{"address":"http://vulnweb.com/","description":"create_by_reaper","criticality":"10"}'r = requests.post(url=api_add_url, headers=headers, data=data,verify=False).json()
print(r)

尝试运行创建

添加成功

 创建成功后会有一个target-id号,以此来判断创建是否成功,包括后续也需要用到这个id来进行启动

开启扫描

Method:POST
URL: /api/v1/scans

代码

import requests
id = xxxxxxxx
data = '{"profile_id":"11111111-1111-1111-1111-111111111111","schedule":{"disable":false,"start_date":null,"time_sensitive":false},"target_id":"%s"}'% id
api_run_url="https://192.168.172.130:3443/api/v1/scans"
headers = {'X-Auth': '1986ad8c0a5b3df4d7028d5f3c06e936c4d6110fabd7542828c3deca8e7fee4f9','Content-type': 'application/json'
}
r = requests.post(url=api_run_url, headers=headers, data=data, verify=False).json()
print(r)

创建失败的返回码

创建成功的返回码,同样可以根据id号来判断

成功开启扫描

把这两个脚本结合一下,写一个把url写进文件夹,一键创建任务并且启动

import requests
# 发送代码如下
def touch_work(key,url):api_add_url = "https://127.0.0.1:3443/api/v1/targets"headers = {'X-Auth': key,'Content-type': 'application/json'}data = '{"address":"%s","description":"create_by_reaper","criticality":"10"}'% urlr = requests.post(url=api_add_url, headers=headers, data=data,verify=False).json()id =  r['target_id']if id is not False:print("任务创建成功,id号为: %s"%id)return id# 核心代码
def run_work(key,id):data = '{"profile_id":"11111111-1111-1111-1111-111111111111","schedule":{"disable":false,"start_date":null,"time_sensitive":false},"target_id":"%s"}'% idapi_run_url="https://127.0.0.1:3443/api/v1/scans"headers = {'X-Auth': key,'Content-type': 'application/json'}r = requests.post(url=api_run_url, headers=headers, data=data, verify=False).json()id = r["target_id"]if id is not False:print("启动扫描成功")if __name__ == "__main__":key = input("please input your api-key:")with open("url.txt","r") as urls:for url in urls:url = url.replace("\n","")print("扫描url:"+url)id = touch_work(key,url)run_work(key,id)print("==================================")

 成功启动

案例三: Python-红队项目-SQLMAP 调用自动添加

参考文章:深入了解SQLMAP API - FreeBuf网络安全行业门户

sqlmap安装完成以后,同一个目录下会有sqlmapapi.py,可以利用这个文件调用sqlmap的api接口

sqlmap的api参数

# 0.启用sqlmap-API服务  python sqlmapapi.py -s

# 1.创建新任务记录任务ID    @get("/task/new")

# 2.设置任务ID扫描信息    @post("/option/<taskid>/set    ")

# 3.开始扫描对应ID任务    @post("/scan/<taskid>/start")

# 4.读取扫描状态判断结果    @get("/scan/<taskid>/status")

# 5.如果结束删除ID并获取结果    @get("/task/<taskid>/delete")

# 6.扫描结果查看 @get("/scan/<taskid>/data")

python sqlmapapi.py -s 会启动一个本地端口,可以通过这个端口调用api

创建记录任务

设置扫描信息,数据必须使用json格式进行传输,因此需要利用json.dumps,将字典转化成为json格式,ua头中文本类型也必须是json格式

requests.post("http://127.0.0.1:8775/option/76a4c6fd0750fd10/set",data=json.dumps({'url':'http://testphp.vulnweb.com/artists.php?artist=1'}),headers={'Content-Type':'application/json'}).json()

如果返回true代表创建成功啊

开始扫描竟然也需要把目标url再次带入进去,我觉得有些繁琐,不应该通过id判断已经写入了嘛

requests.post("http://127.0.0.1:8775/scan/0b03a4d6d1560beb/start",data=json.dumps({'url':'http://testphp.vulnweb.com/artists.php?artist=1'}),headers={'Content-Type':'application/json'}).json()

返回true代表成功

读取扫描状态,这个读取结果,不用再次写入目标url,用过sqlmap的应该都知道sqlmap会有一段时间来反应

requests.get("http://127.0.0.1:8775/scan/b0717c18d0731951/status",headers={'Content-Type':'application/json'}).json()

如果状态时terminated证明成功了,如果是running就是还在跑

查看输出结果

requests.get("http://127.0.0.1:8775/scan/b0717c18d0731951/data",headers={'Content-Type':'application/json'}).json()

可以从中取出自己想要的数据,然后通过server酱酱把数据返回给微信

代码进行整合,优化

import requests,json
def create_task():header = {'Content-Type':'application/json'}r = requests.get("http://127.0.0.1:8775/task/new",headers=header).json()if r['success'] == True:return r['taskid']def set_task(id,scanurl):url = "http://127.0.0.1:8775/option/%s/set"%idheaders = {'Content-type': 'application/json'}data= {'url':scanurl}r = requests.post(url,data=json.dumps(data),headers=headers).json()if r['success'] == True:print("设置扫描信息完成,id为:"+id)def start_task(id,scanurl):url="http://127.0.0.1:8775/scan/%s/start"%idheaders = {'Content-type': 'application/json'}data= {'url':scanurl}r = requests.post(url,data=json.dumps(data),headers=headers).json()if r['success'] == True:print("开始扫描任务,id为:"+id)def status_task(id):url="http://127.0.0.1:8775/scan/%s/status"%idheaders = {'Content-type': 'application/json'}print("扫描还在进行中")while True:r = requests.get(url,headers=headers).json()if r['status'] == 'running':passif r['status'] == 'terminated':print("扫描已经结束,id为"+id)breakdef cat_data(id,scanurl):url="http://127.0.0.1:8775/scan/%s/data"%idheaders = {'Content-type': 'application/json'}r = requests.get(url,headers=headers).json()if r['data'][0]['status'] == 1:print("存在sql注入漏洞")for key in range(1,6):key = str(key)try:print("sql注入类型为:"+r['data'][1]['value'][0]['data'][key]['title'])print("sql注入payload为:"+r['data'][1]['value'][0]['data'][key]['payload'])print("\n")url1 = "https://sctapi.ftqq.com/SCT257938Tua9PZKvryRYtsKHbNfgWacLg.send?title= There is an SQL injection vulnerability!!!"content="""url : {url1}sql注入漏洞类型: {type}sql注入漏洞payload: {payload}""".format(url1=scanurl,type=r['data'][1]['value'][0]['data'][key]['title'],payload=r['data'][1]['value'][0]['data'][key]['payload'])data={'desp':content}requests.post(url1,data=data)except Exception as e:passprint("=================================python sqlmapapi by xiaodisec======================================")
if __name__ == "__main__":#print(id)#scanurl = "http://testasp.vulnweb.com/showthread.asp?id=0"with open("url.txt","r") as urls:for url in urls:scanurl = url.replace("\n","")print("正在扫描的url是:"+url)id = create_task()scanurl = scanurl.replace("\n","")set_task(id,scanurl)start_task(id,scanurl)status_task(id)cat_data(id,scanurl)

运行结果,这里我从结果里面设置了循环,因为同一个sql注入漏洞中可能,不同种类的sql注入类型都能够适用,需要都进行打印

并且设置了微信推送

感觉还是可以进行优化,可以把同一个url注入的信息同一次发送

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144922.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

面试复盘与 AI 大模型学习

面试相关 一、面试公司与岗位信息 面试公司&#xff1a;顺丰科技面试岗位&#xff1a;AI 方向产品经理工作地点&#xff1a;深圳面试结果&#xff1a;通过&#xff0c;但放弃了该 offer 二、面试过程 整体情况 整个暑期实习面试之旅包含三轮&#xff0c;其中两轮是专业面试…

OpenAI o1解决了Quiet-STaR的挑战吗?(下)

随着OpenAI o1近期的发布&#xff0c;业界讨论o1关联论文最多之一可能是早前这篇斯坦福大学和Notbad AI Inc的研究人员开发的Quiet-STaR&#xff0c;即让AI学会先安静的“思考”再“说话” &#xff0c;回想自己一年前对于这一领域的思考和探索&#xff0c;当初也将这篇论文进行…

选择Alluxio来解决AI模型训练场景数据访问的五大理由

在AI模型训练尤其是大模型领域&#xff0c;存储系统的性能和稳定性直接决定了模型训练、推理、部署任务的效率和成本。随着全球AI行业的爆发带来的数据规模的快速增长&#xff0c;如何高效管理和利用这些数据成为AI模型训练中的一大挑战。 AI模型训练场景面临的五大难题 1. 数…

Yolov8-pose关键点检测:一种新的自适应算法轻量级通道分割和变换(ALSS)模块,解决红外检测场景存在严重遮挡和重叠目标时的局限性

💡💡💡本文解决什么问题:红外检测场景存在严重遮挡和重叠目标时的局限性的问题点。 💡💡💡提出了一种新的自适应算法轻量级通道分割和变换(ALSS)模块。该模块采用自适应信道分裂策略优化特征提取,并集成信道变换机制增强信道间的信息交换。这改善了模糊特征的提…

小阿轩yx-SaltStack部署与应用基础

小阿轩yx-SaltStack部署与应用基础 前言 当今数字化时代&#xff0c;大规模 IT 系统的管理已经成为一个复杂而繁琐的任务。为了提高系统管理的效率和准确性&#xff0c;自动化工具成为各企业不可或缺的一部分。Saltstack 作为一款强大的自动化和配置管理工具&#xff0c;在业…

AI服务器是什么?为什么要用AI服务器?

AI服务器的定义 AI服务器是一种专门为人工智能应用设计的服务器&#xff0c;它采用异构形式的硬件架构&#xff0c;通常搭载GPU、FPGA、ASIC等加速芯片&#xff0c;利用CPU与加速芯片的组合来满足高吞吐量互联的需求&#xff0c;为自然语言处理、计算机视觉、机器学习等人工智…

巧用联合与枚举:解锁自定义类型的无限潜力

嘿嘿,家人们,今天咱们来详细剖析C语言中的联合与枚举,好啦,废话不多讲,开干! 目录 1.:联合体 1.1:联合体类型的声明 1.1.1:代码1 1.1.2:代码2(计算机联合体的大小) 1.1.3:代码3 1.2:联合体的特点 1.2.1:代码1 1.2.2:代码2 1.3:相同成员的结构体与联合体进行对比 1.3…

【SA8155P】AIS Camera相关内容的简单介绍

高通车载相机模块(AIS,Automotive lmage System)是专门针对车载系统特性而设计的一套车载视觉架构,可用于AVM、RVC、DMS等常见车载视频应用开发。车载Camera系统的图像大部分是给自动驾驶等使用,更多考虑的是远距离传输、多摄像头图像处理等场景。 本文仅对AIS Camera相关…

国庆头像制作教程,这几种方法轻松制作国庆头像

随着国庆佳节的临近&#xff0c;朋友圈里是不是已经开始弥漫着浓浓的节日气氛&#xff1f;想要让你的头像也加入这场盛宴&#xff0c;成为最吸睛的存在吗&#xff1f;别急&#xff0c;今天就为你揭秘4款超实用的头像制作神器&#xff0c;能够让你的头像显现出浓郁的国庆节气氛&…

竹云董事长董宁主持2024深商千人中秋晚会

9月13日&#xff0c;由深商会主办“湾区升明月&#xff0c;深商共此时”2024深商中秋千人晚会在洲际酒店隆重举行&#xff0c;TCL 集团、农商银行、资本运营集团、泸州老窖、中集车辆、三诺集团、雷曼光电、置富控股、顺络电子、北科生物、霖峰投资、中国南玻集团、兆驰股份、山…

如何衡量品牌在社媒平台的投放效果?

企业去评估在社媒上的投放效果&#xff0c;不仅仅是看投放内容数据、最终销量如何&#xff0c;要从数据去分析更深纬度的效果。比如对于整体品牌声量的提升&#xff0c;品牌行业占有率的上涨&#xff0c;品牌口碑的优化等等。我们可以用声量通对企业多平台上整体的品牌声量情况…

【数据结构-差分】力扣1589. 所有排列中的最大和

有一个整数数组 nums &#xff0c;和一个查询数组 requests &#xff0c;其中 requests[i] [starti, endi] 。第 i 个查询求 nums[starti] nums[starti 1] … nums[endi - 1] nums[endi] 的结果 &#xff0c;starti 和 endi 数组索引都是 从 0 开始 的。 你可以任意排列…

迁移学习+多模态融合,小白轻松发一区!创新性拉满!

多模态研究如今愈发火热&#xff0c;已成为各大顶级会议的投稿热门。今天&#xff0c;我为大家提供一个多模态的创新思路&#xff1a;迁移学习与多模态融合。 迁移学习多模态融合方向的优势 1.提升模型性能&#xff1a;综合更多维度优势&#xff0c;跨模态互补 2.快速适应新…

【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL17

用3-8译码器实现全减器 描述 请使用3-8译码器和必要的逻辑门实现全减器&#xff0c;全减器接口图如下&#xff0c;A是被减数&#xff0c;B是减数&#xff0c;Ci是来自低位的借位&#xff0c;D是差&#xff0c;Co是向高位的借位。 3-8译码器代码如下&#xff0c;可将参考代码添…

基于Java的房地产在线营销管理系统研究与实现

目录 前言 功能设计 系统实现 获取源码 博主主页&#xff1a;百成Java 往期系列&#xff1a;Spring Boot、SSM、JavaWeb、python、小程序 前言 随着信息技术的迅猛发展&#xff0c;互联网已经渗透到我们生活的方方面面&#xff0c;为各行各业带来了前所未有的变革。房地产…

Fiddler的下载(带安装包和安装配置教程)

1.安装包下载 1.1官网下载 https://www.telerik.com/download/fiddler 填上相应的信息即可 1.2安装包下载 安装包地址 提取码&#xff1a;uq2n 2.安装 选择路径 3.使用 3.1配置支持抓https的包 配置成功!!&#xff01;如果还是抓不到 重启一下&#xff01; 3.2抓包 双…

Flux【真人模型】:高p高糊反向真实质感!网图风格的Lora模型,超逼真的AI美女大模型!

大家好&#xff0c;我是画画的小强 今天和大家分享一款基于Flux训练的网图风格的lora模型&#xff1a;墨幽-F.1-Lora-网图&#xff0c;该Lora模型由墨幽团队出品&#xff0c;旨在生成高p高糊的反向真实质感图片&#xff0c;而非真实摄影图片。不过&#xff0c;在自己出图过程中…

车间生产电子看板系统在工厂中的高效运用

在当今竞争激烈的制造业领域&#xff0c;工厂不断寻求提高生产效率、优化管理流程的方法。车间生产电子看板系统的出现&#xff0c;为工厂带来了全新的管理模式和高效的生产方式。 车间生产电子看板系统通过数字化的显示方式&#xff0c;将生产进度、任务安排、质量状况、设备运…

已知曲线满足正余弦函数,根据其峰值,还原出整条曲线

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&am…

C++和OpenGL实现3D游戏编程【连载9】——纹理的镂空显示

1、本节实现的内容 前面的课程中,我们学会了加载纹理并显示纹理图案,但是纹理的图案都是长方形的图片,图片就会有白色或黑色背景,那么在游戏设计过程中,我们经常不需要显示图片的背景部分,那么这节课我们就来讨论一下如何实现剔除白色或黑色背景后的镂空图像,下图就是将…