menu Home chevron_right

SOC


一、效果图

1.目标预览

2.报告预览

3.自动化报告模板

二、文档

  • 运营

  • 前端

  • 设计

  • 开发

    • RPC

    • 双向base64编码可以避免绝大部分xml报错

    • 服务项

    • 通用功能模块

    • 妙用锁

    • 数据库真假用str类型的False和True,避免RPC错误,弃用bool类型, 减少歧义和转换过程

    • 手里剑

      • findindb -- 快速查找数据库中匹配字符所在的表和字段
      • main_worker_clear_alltask -- 清理掉消息队列的历史任务
    • API接口

    • 多线程

    • 任务控制

    • 锁机制

    • 数据有效性提前检查

    • 工作推送

      • celery变更了,需要重启RPC,因为RPC实例化了celery,因此不重启RPC还是旧的

      • celery模式说明

      • celery_api案例

      • celery-prefork排错

        • 执行 A1_common\B0_self\browserequest\undetected_chromedriver\dprocess.py下的 import multiprocessing

        • thread模式报错: signal only works in main thread of the main interpreter
          prefork模式报错: AssertionError: daemonic processes are not allowed to have children

        • 解决方案:

        #import multiprocessing
        import billiard as multiprocessing
    • filter双重检查,在task处也做: 除了在工作函数,在任务函数也做数据有效性检查,这样第一可以降低负载(避免API和RPC和celery负载),第二可以快速确认需要执行的目标,而不是浪费时间等待后端反馈,提升效率

    • 定时任务

      • 投料后需要定时任务多次执行,才会逐步更新

      • Connection to broker lost导致的 Task反复从消息队列获取并重复执行

        原因是Task结束要打回结果到 消息队列这个过程稳定失败

        解决方案: 1. 再配置中加上broker心跳,重试的配置,放宽 2. 检查网络,后面发现“排错-DNS和网络连接失败”导致的数据能进不能出,导致消息返回失败

    • 模块加锁

      webflow 已加

    • 爬虫模块

    • 主动扫描模块 -- 补充下

      • 测试发现宿主机配置的/etc/hosts是可以控制容器内的域名解析

      • 控制DNS解析

    • 数据结构

    • 漏洞处理

      • filter -- 标准化特征

      • toflow -- 部分漏洞转流量,在应用中关注

      • repeatcheck -- 去重复

    • 流量采集

    • 流量审计

      • webpack

      • normaljs 自己整理的正则

      • 整理如下 (参考Javascript-Files.ppt) -- 总结而言这几个项目的正则没啥用,还是要靠自己的
      • JSA endpoints_extraction, js_files_extraction 正则已分析,无啥用
      • LinkFinder 正则已分析,无啥用
      • subjs 正则已分析,无啥用
    • 应用分类

    • 开发事项表

    • crawler和scanner的数据有效检查还没做,等待功能测试通过记得补上

  • 排错

  • IAST

  • 调试

    • 关键服务-- 没有启动没法调的哈
    • worker 完成
      xray scanner 完成
      tasker node / main
      api 完成
      rpc 完成
  • 节点代码发布与部署

  • 测试

    • 爬虫测试用例
  • 使用手册

  • 分布式节点

    • 节点用RPC,主节点内全部直接调用,节省RPC开销
    • 本地节点全模块使用,外部节点使用backend_outsidescannode发布分支的代码,拷贝上去部署,上面的代码要求是功能最小化
    • 功能定位:
    • 只做产生漏洞的动作
    • 主节点生成任务,推送到分布节点,分布节点吐数据即可
    • 其他均不做, 保证代码机密性
      • 部署步骤
      • 安装模块推送,安装完成,清理干净
      • 部署功能模块
      • 开启服务
  • FAQ