geminishkv/course_labs

GitHub: geminishkv/course_labs

一套面向安全冠军计划和应用安全工程师的系统化实践培训课程,涵盖从基础工具链到SAST/DAST/SCA的完整安全技能体系。

Stars: 17 | Forks: 20

Лабораторные работы Course

GitHub Docs Markdown Unicode Shields RA RA Contributor Badge Git Python Docker MkDocs Shell (Bash) Markdown Ruff
![Repo Size](https://img.shields.io/github/repo-size/geminishkv/course_labs)![License](https://img.shields.io/github/license/geminishkv/course_labs)![CI](https://img.shields.io/github/actions/workflow/status/geminishkv/course_labs/ci.yml?branch=develop)![Status](https://img.shields.io/badge/status-active-success)![Release](https://img.shields.io/github/v/release/geminishkv/course_labs)![Contributor Badge](https://img.shields.io/badge/Contributor-%D0%A8%D0%BC%D0%B0%D0%BA%D0%BE%D0%B2_%D0%98._%D0%A1.-8b9aff?style=flat)![Contributors](https://img.shields.io/github/contributors/geminishkv/course_labs)![Open pull requests](https://img.shields.io/github/issues-pr/geminishkv/course_labs)![Commit Activity](https://img.shields.io/github/commit-activity/m/geminishkv/course_labs)![Last commit](https://img.shields.io/github/last-commit/geminishkv/course_labs)

大家好 :wave:,
在此说明主要几点: * 目标 - 培养使用 `git`, `CI`, `CD`, `docker`, `packages`, `appsec toolchain`, `yml` 等的技能。 * *部分作业基于 `Go`, `Python`, `JAVA`, `Shell` 等。 * 涵盖 `SAST`, `SCA`, `Container Security`, `DAST`, `Secret Detection` 等工具。 * 作业旨在深化和学习风险分析及应用程序安全评估的相关材料,这些对于迭代开发是必要的,同时也为学习编程模式和原型设计提供了额外的机会。 * 每个迷你项目必须按照提供的实验作业格式构建,并托管在 `GitHub` 服务上,同时生成相应的 `gistup` 格式报告以演示已完成的工作及结果截图(**在需要的地方**)。 * 对于每项实验作业,应创建自己的仓库(可以使用父仓库的 `fork`),其中包含项目的源代码,然后以 `gistup` 格式为其编写报告。 * 所有实验作业必须在 develop 分支中完成,并需要向 [geminishkv](https://github.com/geminishkv) 发起 `pull request` 并获得 [approve](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review),以此最终确认对远程提交的更改和修正的审批。 ![Logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/de9b592710014913.jpg) **注意:** * 实验作业 - 无论基础水平如何,都必须参加、完成并进行迭代开发。 * 必须复制实施步骤并标记出自己已完成的具体内容。 * 每项作业最初应将更改迭代拆分为提交以便追踪。 * 每份报告需单独提交并进行答辩,使用的每条命令都必须在 `gistup` 报告中包含描述(解释),并附上终端输出及对控制台命令的解释。 * 实验作业中还涉及使用需要安装额外开源包的工具。 * 对于所有报告,应避免使用截图,而是插入控制台输出以及所使用的命令和标志的描述,并说明其含义以理解其工作原理。

敬请期待 ;)

### 步骤 1. 查阅[讲座](artifacts/ppt/)的学习资料 2. 查看[示例](artifacts/exmpls/) 3. 每个仓库必须包含 `.gitignore`, `code of condact`, `contributing`, `license`, `notice`, `security`,并且必须针对具体的实验作业或项目进行调整。 * **请注意**,在复用项目材料时,必须正确选择许可证类型,并应额外阅读相关许可协议。 * 报告示例在[这里](https://gist.github.com/MishaBary/21ab63f83292a86268e039d484a86411) 4. 按顺序完成以下作业: - [ ] lab01 - [本实验作业旨在学习 **gitscm** 及后续作业的准备材料](labs/lab01/README.md) - 作业材料在[这里](labs/lab01/) - [ ] lab02 - [本实验作业旨在学习 *nix、权限控制及进程操作](labs/lab02/README.md) - 作业材料在[这里](labs/lab02/) - [ ] lab03 - [本实验作业旨在学习 **nmap** 及分析已发现的漏洞](labs/lab03/README.md) - 作业材料在[这里](labs/lab03/) - [ ] lab04 - [本实验作业旨在实际**分析并确定**信息安全风险的缓解措施](labs/lab04/README.md) - [ ] lab05 - [本实验作业旨在学习 **Docker** 及其使用方法](labs/lab05/README.md) - 作业材料在[这里](labs/lab05/) - [ ] lab06 - [本实验作业旨在学习 **Docker CIS Benchmark** 以发现漏洞、检查 Docker-host 及其使用方法](labs/lab06/README.md) - 作业材料在[这里](labs/lab06/) - [ ] lab07 - [本实验作业旨在学习 SAST, SCA 以发现漏洞,并通过 Semgrep, Checkov, Dependency Check 进行实践](labs/lab07/README.md) - 作业材料在[这里](labs/lab07/) - [ ] lab 08 - [本实验作业旨在学习 DAST OWASP ZAP 及对易受攻击应用程序的手动测试](labs/lab08/README.md) - 作业材料在[这里](labs/lab08/) - [ ] lab 09 - *更新将稍后提供** - [ ] lab 10 - [本实验作业旨在评估信息安全风险分析并实践相关知识](labs/lab10/README.md) 5. 完成最终作业并撰写报告 - [ ] pet_project - [本实验作业旨在评估信息安全风险分析并实践 Application Security 工具的相关技能](labs/pet_project/README.md) *更新将稍后提供** ### 规范要求 - ✔️ 统一的代码风格 - ✔️ 所有处理树结构的函数必须位于命名空间中 - ✔️ 根据项目内容设计 `README.md` - ✔️ 根据项目内容设计 `.gitignore` - ✔️ 根据项目内容设计 `.dockerignore` - ✔️ 为项目使用合适类型的 `LICENSE` 和 `NOTICE` - ✔️ 创建并使用脚本以自动化项目构建、示例、测试和打包 - ✔️ 使用 `GitHub Actions` 服务确保项目的持续构建流程 - ✔️ 使用 **doxygen** 工具编写项目文档 - ✔️ 确保在 `develop` 分支成功合并后,将项目包发布到 `GitHub Release` 服务 - ✔️ 在流程活动中对实验作业进行重构和维护 - ✔️ 所有命令必须严格从 `终端/控制台` 执行,除非涉及处理 tokens、密钥和特定设置,否则不得使用 `WebUI` ### 教程 * 准备环境 ``` $ python3 -m venv .venv $ source .venv/bin/activate $ pip install -r requirements.txt $ ruff format . $ pip install mkdocs-include-markdown-plugin $ python -m mkdocs serve --livereload # 或 $ mkdocs serve -a 127.0.0.1:8001 # прямое обозначение адреса $ pip show mkdocs # debug ``` * 清理本地仓库 ``` $ rm -rf __pycache__ scripts/__pycache__ # etc. $ lsof -i :8000 $ kill ``` * Release ``` $ git tag -a v1.0.0 -m “Основные изменения: …” $ git push origin v1.0.0 # 使用的替代方案是 RELEASE_NOTES $ git tag -a v1.0.0 -m "v1.0.0" $ git add "Release Notes.md" && git commit -m "Update notes for v1.0.0"  $ git tag -a v1.1.0 -m "v1.1.0" # текущий релиз $ git push origin v1.1.0 $ git tag -d v0.1.0 # удалить локальный тег $ git push origin :refs/tags/v0.1.0 # удалить тот же тег на GitHub ``` * 本地测试 ci.yml ``` $ act -l $ act -j имя_job # или общий act push $ act push -b -v $ act push -j build -b $ act pull_request -j linter_checks_ruff_shell # конкретный job $ act pull_request -j docs-preview -b # docs-preview и все зависимые job $ ACT_SKIP_CHOWN=true act push -j linter_checks_ruff_shell -b ``` * 测试 ``` $ abandit -r labs $ aruff check . $ anpx eslint "docs/**/*.js" "javascripts/**/*.js" npx stylelint "docs/**/*.css" "stylesheets/**/*.css" $ agit ls-files '*.sh' \ | grep -v 'labs/lab08/dast/zap_scan.sh' \ | grep -v 'labs/lab07/sca/dependency-check.sh' \ | grep -v 'labs/lab06/audit.sh' \ | xargs -r shellcheck -e SC2086,SC1090,SC1091 $ ayamllint .github/workflows mkdocs.yml $ anpx markdownlint-cli2 "docs/**/*.md" "labs/**/*.md" "README.md" $ mkdocs build --strict --clean --config-file mkdocs.yml --site-dir /tmp/mkdocs-check ``` ### 仓库结构 ``` ├── assets │   └── logotype │   ├── logo.jpg │   └── logo2.jpg ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── docs │   ├── about.md │   ├── APPENDIX.md │   ├── appsec_tt.md │   ├── artifacts │   │   ├── assets │   │   │   ├── favicon.ico │   │   │   ├── logo.png │   │   │   └── logotypemd.jpg │   │   ├── cheatsheet │   │   │   ├── CHEATSHEET_DOCKER.md │   │   │   ├── CHEATSHEET_DOCKERIGNORE.md │   │   │   ├── CHEATSHEET_GH_CLI.md │   │   │   ├── CHEATSHEET_GIT.md │   │   │   └── CHEATSHEET_GITIGNORE.md │   │   ├── exmpls │   │   │   ├── risk-analysis.png │   │   │   ├── table1.png │   │   │   └── transaction.png │   │   ├── owasp │   │   │   ├── Authentication.pdf │   │   │   ├── Authorization.pdf │   │   │   ├── Client-side_Attacks.pdf │   │   │   ├── Command_Execution.pdf │   │   │   ├── Information_Disclosure.pdf │   │   │   ├── Logical_Attacks.pdf │   │   │   └── OWASP_Top_10_CICD_Risks.pdf │   │   └── ppt │   │   └── Лекция_Управление Рисками ИБ_intro.pdf │   ├── channel.md │   ├── index.md │   ├── javascripts │   │   ├── custom-title.js │   │   └── typewriter-target.js │   ├── labs │   │   ├── lab01.md │   │   ├── lab02.md │   │   ├── lab03.md │   │   ├── lab04.md │   │   ├── lab05.md │   │   ├── lab06.md │   │   ├── lab07.md │   │   ├── lab08.md │   │   ├── lab09.md │   │   ├── lab10.md │   │   └── pet_project.md │   ├── licenses.md │   ├── materials │   │   ├── examples │   │   │   ├── exmpl.md │   │   │   ├── Multisignature.md │   │   │   ├── PrintNightmare.md │   │   │   └── RA.md │   │   └── OWASPTOP10 │   │   ├── Authentication.md │   │   ├── Authorization.md │   │   ├── Client-side Attacks.md │   │   ├── Command Execution.md │   │   ├── Information Disclosure.md │   │   ├── Logical Attacks.md │   │   └── OWASP_Top_10_CICD_Risks.md │   ├── RELEASE_NOTES.md │   ├── robots.txt │   ├── Security.md │   └── stylesheets │   ├── burger.css │   ├── clipboard.css │   ├── footer.css │   ├── header.css │   ├── layout.css │   ├── mobile-logo.css │   ├── search.css │   ├── sidebar.css │   ├── tools-overlay.css │   └── typeset.css ├── eslint.config.js ├── labs │   ├── lab01 │   │   ├── README.md │   │   └── typersteel.py │   ├── lab02 │   │   ├── exmpl_hello.py │   │   ├── pygamesteel.py │   │   └── README.md │   ├── lab03 │   │   ├── exmp_targets.txt │   │   └── README.md │   ├── lab04 │   │   └── README.md │   ├── lab05 │   │   ├── client │   │   │   ├── client.py │   │   │   ├── Dockerfile │   │   │   └── requirements.txt │   │   ├── docker-compose.yml │   │   ├── README.md │   │   ├── server │   │   │   ├── app.py │   │   │   ├── Dockerfile │   │   │   └── requirements.txt │   │   └── source │   │   ├── Dockerfile │   │   ├── hello.py │   │   ├── image.tar │   │   └── requirements.txt │   ├── lab06 │   │   ├── audit_reports │   │   ├── audit.sh │   │   ├── config │   │   │   └── nginx.conf │   │   ├── docker-compose.yml │   │   ├── README.md │   │   └── vulnerable-app.yml │   ├── lab07 │   │   ├── cheat_check_yuorself.sh │   │   ├── docker-compose.yml │   │   ├── README.md │   │   ├── sast │   │   │   ├── checkov-config.yaml │   │   │   └── semgrep-rules.yml │   │   ├── sca │   │   │   ├── dependency-check.sh │   │   │   └── pom.xml │   │   └── vulnerable-app │   │   ├── app.py │   │   ├── config.yaml │   │   ├── Dockerfile │   │   └── requirements.txt │   ├── lab08 │   │   ├── dast │   │   │   ├── convert_reports.py │   │   │   ├── reports │   │   │   ├── zap_scan.sh │   │   │   └── zap-baseline.conf │   │   ├── docker-compose.yml │   │   ├── README.md │   │   ├── requirements.txt │   │   └── vulnerable-app │   │   ├── app.py │   │   ├── Dockerfile │   │   ├── files │   │   │   └── secret.txt │   │   └── requirements.txt │   ├── lab09 │   │   └── README.md │   ├── lab10 │   │   └── README.md │   └── pet_project │   └── README.md ├── LICENSE.md ├── mkdocs.yml ├── mypy.ini ├── NOTICE.md ├── README.md ├── RELEASE_NOTES.md ├── requirements.txt ├── ruff.toml ├──  scripts │   └── generate_sitemap.py ├── SECURITY.md ├── sitemap.xml └── stylelint.config.cjs ``` Copyright (c) 2025 Elijah S Shmakov ![Logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/3810bc5fbc014920.jpg)
标签:AppSec, Bash, CISA项目, CTI, DevSecOps, Docker, Git, Markdown, MkDocs, Python, Security Champion, 上游代理, 安全实验室, 安全教育, 安全课程, 安全防御评估, 工具链, 应用安全, 教学资源, 文档, 无后门, 编排, 网络安全研究, 请求拦截, 逆向工具, 防御加固, 风险分析