/airbug

Airbug(空气洞),收集漏洞poc用于安全产品

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

airbug

Airbug(空气洞),一个长期开放用于收集漏洞poc仓库,可用于相关安全产品,亮点是能够在线加载poc并进行验证。

所有PoC文件按照一定格式编写,且支持python3.x,为了方便操作,Airbug平台所有网络访问需要使用黑客们使用的http底层网络库 - hack-requests引擎编写。

  • 因为使用了hack-requests,需要安装 pip3 install HackRequests

如何使用

在安装了HackRequests之后,就可以通过一种非常hack的方法来使用在线poc

python3 -c "exec(__import__('HackRequests').http('https://raw.githubusercontent.com/boy-hack/airbug/master/airbug.py').text())" -u https://x.hacking8.com -r emlog
  • -u 指定目标
  • -r 确定cms名称,多个可用逗号分隔

目录结构

  • cms 存放web相关poc
  • common 存放通用程序poc
  • hardware 存放硬件漏洞poc
  • system 存放一些系统和知名程序poc

Poc文件格式

POC插件的格式设计崇尚简单易用,所有内容只需要用poc(arg,**kwargs)函数封装即可,不关注其他细节。

  • 当poc验证成功时可返回文本或Ture或字典,为了返回详细信息,推荐使用字典返回形式
  • 若poc验证失败,返回NoneFalse即可
# Author:w8ay
# Name:测试DEMO

def poc(arg, **kwargs):
    result = {
        "name": "Demo插件",  # 插件名称
        "content": "如果这个插件能显示出来,就说明w12scan框架测试成功了",  # 插件返回内容详情,会造成什么后果。
        "url": arg,  # 漏洞存在url
        "log": {
            "send": "send",
            "response": "response"
        },
        "tag": "demo"  # 漏洞标签
    }
    return result


if __name__ == "__main__":
    pass

参数传递

在调用poc函数时,有的poc需要传递多个参数,这里统一约定

序号 参数 解释
1 arg 传递一个url,格式:http[s]://xxx.xx 最后边没有/
2 ip 传递ip
3 port 传递端口

arg参数是必须的,如果有些情况只需要ip和端口,将arg置空,poc中读取ip,port即可,参考system/iis/iis_webdav.py

目前遇到的问题&困境

  • 期待更多人提交PoC,提交后该PoC便可被在线调用。Thanks
  • 参数的不统一,部分PoC需要提供额外参数,这种额外参数以什么形式传递进来,是airbug在线调用遇到问题之一,还未解决。
  • 需要使用dnslog验证的漏洞,需要提供一个外部的接口,但我更倾向于选择一个第三方开源且免费的平台(很显然没有),所以可能会自己造轮子。

参考