DongTai-agent-python 是 洞态IAST 针对 Python 应用开发的数据采集端。在 Python 应用中,通过改写方法和函数的方式采集所需数据,然后将数据发送至 DongTai OpenAPI 服务,再由云端引擎处理数据判断是否存在安全漏洞。
DongTai-agent-python
dongtai_agent_python/api/
将 agent 采集的数据上报至 DongTai OpenAPI 服务。dongtai_agent_python/assess/
根据云端策略 hook python 方法。dongtai_agent_python/assess_ext/
根据云端策略 hook cpython 底层方法。dongtai_agent_python/cli/
控制 agent 版本的热更新。dongtai_agent_python/context/
请求上下文和上下文跟踪。dongtai_agent_python/middleware/
用于接入不同的 python 框架,目前支持 Django、Flask, 均以中间件方式引入。dongtai_agent_python/policy/
策略规则及污点数据处理。dongtai_agent_python/setting/
Agent 配置.dongtai_agent_python/config.json
用于配置 DongTai OpenAPI 服务地址、Token、项目名称等。
- DevOps流程
- 上线前安全测试
- 第三方组件管理
- 代码审计
- 0 Day挖掘
- Python: >=3.6
- CPython
- 编译依赖 (Agent 版本 >= 1.1.4)
- gcc (Linux/macOS)
- make (Linux/macOS)
- cmake >= 3.6
- Visual Studio (Windows)
- bash (Alpine Linux)
- libc-dev (Alpine Linux)
- linux-headers (Alpine Linux)
- Web 框架
- Django: 3.0-3.2, 4.0
- Flask: 1.0-1.2, 2.0
- Python 依赖包
- psutil: >= 5.8.0
- requests: >= 2.25.1
- pip: >= 19.2.3
请参考:快速开始
- Fork DongTai-agent-python 项目到自己的 github 仓库并 clone 项目:
git clone https://github.com/<your-username>/DongTai-agent-python
- 根据需求编写代码
- 修改配置文件
dongtai_agent_python/config.json
- iast.server.token: "3d6bb430bc3e0b20dcc2d00000000000000a"
- iast.server.url: "https://iast-test.huoxian.cn/openapi"
- project.name: "DemoProjectName"
url 与 token 从洞态 IAST-web 页面(eg: https://iast-test.huoxian.cn/deploy) > python-agent 部署页面,下载 agent 的 shell 命令中获取,分别替换 url 域名与 token
- 项目打包,在agent项目根目录执行
python3 setup.py sdist
- 安装探针
打包后会生成 dist 目录,在 dist 目录下找到安装包,将 dongtai_agent_python.tar.gz 安装包放入 Web 服务器所在机器上,执行 pip 安装pip3 install ./dongtai-python-agent.tar.gz
- 开启调试:
DEBUG=1
- 自动创建项目:
AUTO_CREATE_PROJECT=1
- 项目名称:
PROJECT_NAME=Demo
- 项目版本:
PROJECT_VERSION=v1.0
- Agent 名称:
ENGINE_NAME=test-flask
- 日志文件路径:
LOG_PATH=/tmp/dongtai-agent-python.log
也可以配置 dongtai_agent_python/config.json
中相关的配置项,同样生效
debug
project.name
project.version
engine.name
log.log_path
注意: 环境变量的配置优先级高于配置文件
- 进入app的主目录
- 打开
app/settings.py
文件,找到MIDDLEWARE
所在行 - 在该行的下面插入
dongtai_agent_python.middlewares.django_middleware.FireMiddleware
- 重启 app
- 修改项目的入口文件(如 app.py), 增加如下内容
app = Flask(__name__) from dongtai_agent_python.middlewares.flask_middleware import AgentMiddleware app.wsgi_app = AgentMiddleware(app.wsgi_app, app) if __name__ == '__main__': app.run()
- 重启app