ctfshow_愚人杯WEB之easy_flask

1、easy_flask

百度了下什么是flask,flask是一款非常流行的python web框架。

2、尝试步骤

(1)、搜索博文,查看该题是如何破解的

先注册账号,登录自己注册的账号,查看可访问内容(可以查看到部分源码,如app.py文件,泄露了flask的session加密秘钥),可以查看到当前用户的角色名称,管理员(admin)的角色名称;F12查看session结构(可以看到session放在了cookie中),使用flask的token生成规则解编码,尝试普通用户越权到管理员admin角色;越权到管理员角色后,发现有个下载功能,F12查看下载格式后,尝试下载已知的app.py源文件,查看文件发下eval(),可以远程执行系统命令。

(2)、自己注册的账号登录

ctfshow_愚人杯WEB之easy_flask_第1张图片

  如上图所示,点击“leran”,可以在线预览部分源代码,可以确认session编解码规则。

F12--》网络,可以查看Cookie中的session。

如下图所示,在github上获取flask-session的编解码源代码,将获取的session进行解码,以便查看session的结构。

mirrors / noraj / flask-session-cookie-manager · GitCode

(3)、将下载文件置于kali桌面进行编解码

ctfshow_愚人杯WEB之easy_flask_第2张图片

 发现session结构如下:{'loggedin':True,'role':'user','username':'abc'}

猜测构造admin结构的session如下:{'loggedin':True,'role':'admin','username':'admin'}

 编码后获得session的值,但是不清楚如何放到cookie里面去,F12时,无法修改已知cookie的值。

(4)、修改cookie中session的值

使用浏览器自带组件,搜索cookie,添加“Cookie Editor”组件后,F12后,可以新增cookie信息。

ctfshow_愚人杯WEB之easy_flask_第3张图片

 如上图所示,添加新的cookie信息后,在访问地址栏按回车,重新访问网页,发现返回到了登录页面,why?为啥不对呢?

再次浏览器下Cookie Editor,发现有2个session信息,一个普通用户登录的session,一个自己新增的管理员角色session,删除普通用户对应的session,再在地址栏回车,发现页面变成了如上截图所示。

(5)、下载app.y源代码文件

如下图所示,新出现了个下载功能,F12--》查看器,查看文件下载格式如下图所示。

ctfshow_愚人杯WEB之easy_flask_第4张图片

 尝试下载app.y源文件,下载成功。

ctfshow_愚人杯WEB之easy_flask_第5张图片

如下图所示,审计app.y源代码,发现有eval()可以执行远程命令。

(6)、尝试访问执行远程命令

尝试访问/hello/?eval=system('ls /'),结果只输出了hello,  

又麻瓜了!!

再百度,尝试访问/hello/?eval=__import__("os").popen("ls /").read()

ctfshow_愚人杯WEB之easy_flask_第6张图片

如上图所示,看到根目录下有个flag_is_h3re文件,猜测是flag文件,查看看看,

尝试访问/hello/?eval=__import__("os").popen("cat /f*").read()

ctfshow_愚人杯WEB之easy_flask_第7张图片3、其他修改Cookie的方法

最后发下hackBar也可以给当前访问设置Cookie信息,操作如下图所示。

ctfshow_愚人杯WEB之easy_flask_第8张图片

 另外一种,是火狐浏览器搜索ModHeader组件,也可以设置Cookie信息。

ctfshow_愚人杯WEB之easy_flask_第9张图片

 

你可能感兴趣的:(安全,flask,python,安全)