18个版本 (破坏性更新)
0.13.1 | 2022年7月17日 |
---|---|
0.12.1 | 2021年9月8日 |
0.11.0 | 2019年8月11日 |
0.10.1 | 2019年6月22日 |
0.3.0 | 2017年11月10日 |
#275 in 调试
每月291次下载
用于 6 个代码包
91KB
2.5K SLoC
boxxy-rs
"如果你实现了边界,但没有人去推动它们,它们甚至存在吗?" 你是否曾经想过你的沙箱内部看起来像什么?有没有想过测试你是否能从中逃脱,如果只是有一个shell来尝试一下呢?boxxy是一个库,可以链接到现有程序的调试构建中,并让你进入一个交互式shell。从那里,你可以逐步遍历沙箱的各个阶段,并验证它实际上包含™。
开发
cargo run --example boxxy
使用Rust进行链接
只需在你的Cargo.toml中添加dev-dependencies,并将examples/boxxy.rs
复制到你的examples/
文件夹。修改以包含你的沙箱。
[dev-dependencies]
boxxy = "0.*"
使用C进行链接
有一个示例程序,查看Makefile了解它是如何构建的。
make cboxxy
调用机器码
[%]> # just RET to prompt
[%]> jit ww==
[%]> # print ohai and exit
[%]> jit 6xpeuAEAAABIice6BQAAAA8FuDwAAABIMf8PBejh////b2hhaQo=
你可以使用objdump
实用程序从汇编代码生成shellcode
make sc/ohai && cargo run --example objdump sc/ohai
从PHP调用
请参阅autoboxxy,了解从PHP加载boxxy的工具,即使shell_exec
等已通过php.ini禁用。
静态二进制文件
您可能需要构建一个完全静态的二进制文件,这可以通过使用 x86_64-unknown-linux-musl
目标来实现。
cargo build --release --example boxxy --target x86_64-unknown-linux-musl
strip target/x86_64-unknown-linux-musl/release/examples/boxxy
调试systemd安全
有一个特殊的ipc二进制文件,它会自动将其stdio接口与Unix域套接字交换,因此可以用来调试systemd单元的安全设置。
准备 ipc-boxxy
cargo build --release --example ipc-boxxy
install -Dm755 target/release/examples/ipc-boxxy /usr/local/bin/ipc-boxxy
准备systemd单元
sudo tee /etc/systemd/system/[email protected] <<EOF
[Unit]
Description=ipc boxxy debugger
[Service]
User=root
ExecStart=/usr/local/bin/ipc-boxxy /run/boxxy-%i.sock
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
PrivateDevices=true
ProtectKernelTunables=true
ProtectKernelModules=true
ProtectControlGroups=true
RestrictAddressFamilies=AF_UNIX
MemoryDenyWriteExecute=true
CapabilityBoundingSet=
InaccessiblePaths=-/etc/ssh
EOF
附加到shell
sudo target/debug/ipc-listener /run/boxxy-foo.sock 'systemctl start ipc-boxxy@foo'
您可以使用 exec
运行任意命令
exec bash -i
AWS lambda
示例文件夹包含了一个对lambdash的重实现,它将boxxy作为aws lambda部署,并允许您在上面执行命令。客户端支持跨账户访问,但需要一个预配置的角色,lambda将使用该角色。您需要首先构建一个 静态二进制文件。
cargo run --features=aws --example lambdash -- \
--assume-role arn:aws:iam::133713371337:role/AdminRole \
--role arn:aws:iam::133337133337:role/lambda-test-role
eu-west-1 boxxy
示例
存在易受攻击的沙箱(examples/vuln-*
),作为挑战,可以使用boxxy shell进行利用(无需编译任何漏洞利用程序)。
不要发布剧透
例如,使用以下命令启动挑战:cargo run --example vuln-chroot
警告
shell是基本的人机输入界面,不要编写实际的脚本,这里可能有危险。
不要在生产构建中包含boxxy。
许可证
本项目是免费软件,根据LGPL3+许可证发布。
依赖关系
~7–23MB
~365K SLoC