flask在debug模式下会生成一个Debugger PIN,比如: @ubuntu:~/Code/flask$ python3 app.py * Running on http://0.0.0.0:8080/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger pin code: 169-851-075 利用pin码可以在报错界面执行任意python代码 而观察这个pin码的...
最近搞SSTI,发现有的开发开了debug,由此想到了PIN,但一直没有对这个点做一个深入剖析,今天就完整的整理Flask Debug PIN码的生成原理与安全问题。 PIN是什么? PIN是 Werkzeug(它是 Flask 的依赖项之一)提供的额外安全措施,以防止在不知道 PIN 的情况下访问调试器。 您可以使用浏览器中的调试器引脚来启动交互式调...
研究Flask的PIN码生成机制,就是研究Werkzeug的PIN码生成机制。 继续向下跟,第251行和第262行之间 有一个判断操作,如果PIN启用的话,及self.pin存在值,则会通过_log()函数,将PIN码打印到终端。 ok,那我们现在只要在程序执行到ifself.pinis None:时。进入self.pin,查看其实现方式即可(这里用到了Property的概念,简...
在有些flask项目的控制台,如果看不到pin的信息“Debugger pin code: 323-115-793”,那么试着去日志里查看,因为这些信息会默认写入根log日志里 其实,一旦引入日志模块logging,控制台的很多信息(访问网站记录url、访问数据库信息、异常信息等)都会默认写入根log日志文件中 参考: 1、http://blog.51cto.com/xmdevops...
Flask库debug调试导致的pin码泄漏getshell 1. Flask库debug模式下的pin码机制 在Flask框架中,当开发者启用debug模式时,Werkzeug库(Flask的底层库)会提供一个交互式调试器,允许开发者在Web浏览器中直接调试Python代码。为了安全起见,Werkzeug引入了一个PIN码机制,用户需要输入正确的PIN码才能进入调试器界面。 PIN码的生...
这样就快速的定位到了问题的所在了。而且这个PIN值是不需要你每次都输入的,你只要输入一次,8小时以内都不需要再次输入的,因为flask会生成一个cookie信息,记录你的登录状态。 当然开启debug模式并不是只有上面一种方式: app.run(debug=True) 代码语言:javascript ...
(venv)microblog2 $ flask run*Serving Flask app"microblog"*Forcing debug mode on*Running on http://127.0.0.1:5000/(PressCTRL+Cto quit)*Restartingwithstat*Debugger is active!*DebuggerPIN:177-562-960 现在让应用再次崩溃,以在浏览器中查看交互式调试器: ...
Werkzeug更新带来的Flask debug pin码生成方式改变 复现2020GYCTF-FLASKAPP及 2019CISCN double_secret出现异常。题目本身有两个解题方式。 其中一个思路是: 当Flask开启debug模式时,可以在报错页面输入pin码来执行python命令。 pin码需要配合SSTI或文件包含等情况获取系统信息来构造。有SSTI即可执行python命令,因而题目...
在第5 行,app.run(debug = True),启动 Flask 程序的调试模式。运行程序,输出如下: $ python3 debug.py * Serving Flask app"debug"(lazy loading)* Environment: production * Debug mode: on * Restarting withstat* Debugger is active!* Debugger PIN: 316-471-540 * Running on http://127.0.0.1:50...
2. 给`app.deubg=True`也可以开启`debug`模式。 3. 通过配置参数的形式设置DEBUG模式:`app.config.update(DEBUG=True)`。 4. 通过配置文件的形式设置DEBUG模式:`app.config.from_object(config)`。 ### PIN码: 如果想要在网页上调试代码,那么应该输入`PIN`码。