前置知识:

漏洞检测:

在了解漏洞概念前,应该先知道一下这个漏洞如何检测的,我们应该或多或少听过白盒测试(白盒),黑盒测试(黑盒)。

白盒测试:

白盒测试是对源代码和内部结构的测试,测试人员是可以知道内部的逻辑和结构的,差不多就是代码审计。

黑盒测试:

黑盒测试是对功能需求的测试,测试人员不知道系统内部如何实现的,只知道相应的功能和性能需求,通过模拟用户使用来进行测试。

了解Windows和Linux基本命令

Windows如

ping #测试连通性

tracert #追踪路由

telnet #远程连接

dir #列出目录

ipconfig #查看 ip

arp -a #查看路由表

calc #打开计算器

regedit #打开注册表

netstat -ano #查看服务器端口信息

Linux如

cd #切换目录

ls #显示当前目录下的文件

ifconfig #查看 IP 地址

cat /etc/passwd #查看 password 文件内容

id #查看当前用户的 id 号

cat /etc/group #查看用户组文件内容

pwd #显示当前目录

uname -a #查看当前系统版本

natstat -pantu #查看当前服务器的端口信息

netstat -nr #查看网关和路由

以及拼接符的使用

| 只执行|后面的语句

|| 如果前面语句是错的就执行后面的语句,否则只执行前面的语句

& &前面和后面的语句都会执行,无论前面真假

&& 如果我前面为假后面的语句就不执行了,如果前面为真则执行两条语句

; 前面都执行,无论前面真假

大致了解php语言(当然偶尔上网查一查很正常)

那么随便记录一下魔法变量吧

FILE(左右都是两个下划线的) 获取当前文件路径

LINE 获取当前代码所在行数

__

漏洞讲解:

漏洞产生原理:

有地方可以让攻击者对服务器进行远程的注入操作系统命令或者代码,从而到达控制后台系统的目的。

漏洞产生条件(利用条件):

1.可控变量(别人的一句话:无论是注入还是RCE都有传参数。。

2.对用户的输入过滤不严格。

3.用户的输入内容直接拼接到命令当中。

命令执行:

常见命令执行危险函数

PHP:exec、shell、system、popen 等

ASP.NET:System.Diagnostics.Start.Process、System.Diagnostics.Start.Process

StartInfo 等

Java:java.lang.runtime.Runtime.getRuntime、java.lang.runtime.Runtime.exec



以上除了PHP的,另外两种我还没有碰到过(抓头)。

讲解一下命令执行函数

system函数

该函数会将执行结果输出并将输出结果最后一行作为字符串返回,执行失败就返回false

<?php
highlight_file(__FILE__);
system('ipconfig',$result);
echo $result;
?>

exec函数

该函数没有输出结果,但是会将执行结果最后一行返回

<?php
highlight(__FILE__);
exec('pwd',$a);//此处$a存放着命令返回值
var_dump($b);
?>

passthru函数

该函数只调用命令,将运行结果输出,但是没有返回值

<?php
highlight(__FILE__);
passthru('pwd');
?>

shell_exec函数

该函数不会输出结果,但返回执行结果

<?php
highlight_file(__FILE__);
var_dump(shell_exec('pwd'));
?>

案例分析:

下面将从pikachu靶场来讲解

pikachu靶场



输入|dir,|是只执行后面语句,当然你也可以使用其他的拼接符如&等等,具体效果取决于对于用户输入内容过滤的情况

效果得到



至于拼接符过滤,可以去DVWA靶场根据难度调试来测试

代码执行

常见代码执行危险函数

PHP: eval、assert、preg_replace()、+/e 模式(PHP 版本<5.5.0)

Javascript: eval

Vbscript:Execute、Eval

Python: exec

讲解一下代码执行函数

${}执行代码

该格式会对中间的php代码进行解析

<?php
${phpinfo()};
?>

eval函数

该函数会将字符串当作代码执行,不过需要语句需要完整且以;结尾

<?php
eval('echo "Hello NIKO"; ');
?>

assert函数

该函数判断是否为字符串,如果是则代码进行执行,且可以被可变函数进行调用,不过在php7.0.29之后的版本都不支持动态调用

(可变函数即变量名加括号,PHP系统会尝试解析成函数,如果有当前变量中的值为命名的函数,就会调用。如果没有就报错。

可变函数不能用于例如 echo,print,unset(),isset(),empty(),include,require eval() 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。该段话摘抄自https://blog.csdn.net/weixin_43669045/article/details/107093451)

<?php
assert($_POST['a']);
?>
<?php
$a = 'assert';
$a(phpinfo());
?>

array_map函数

该函数是为数组每个元素应用回调函数

构造的payload

?a=phpinfo();

案例分析

继续使用pikachu靶场

操作exec‘‘eval’’

直接查看那一关的php代码



发现如果没有报错,代码将会直接执行

可以输出phpinfo();

记住一定要;结尾,因为使用的是eval()函数

也可以使用魔法变量

这种我们也可以用其他的方式来利用这个漏洞,比如用一句话木马,再用蚁剑连接

或者来读取文件内容

1)Windows

C:\boot.ini //查看系统版本

C:\windows\system32\inetsrv\MetaBase.xml //IIS 配置文件

C:\windows\repair\sam //windows 初次安装的密码

C:\program Files\mysql\my.ini //Mysql 配置信息

2)Linux

/etc/passwd //linux 用户信息

/usr/local/app/apache2/conf/httpd.conf //apache2 配置文件

/usr/local/app/php5/lib/php.ini //php 配置文件

/etc/httpd/conf/httpd.conf //apache 配置文件

/etc/my.cnf //Mysql

如这样构造a=var_dump(file_get_contents('C:\program Files\mysql\my.ini'));

闲聊:我发现有好多东西没有总结,确实不是很好,得开始写写了

RCE代码执行漏和命令执行漏洞的更多相关文章

  1. 菜刀(代码执行)函数和命令执行函数详解及Getshell方法

    i春秋作家:大家奥斯的哦 原文来自:https://bbs.ichunqiu.com/thread-41471-1-1.html 代码执行函数 VS 命令执行函数 一直想整理这两块的内容,但是一直没时 ...

  2. 【随笔】菜刀(代码执行)函数和命令执行函数详解及Getshell方法

    代码执行函数 VS 命令执行函数 一直想整理这两块的内容,但是一直没时间弄,直到前两天碰上一个写入了菜刀马但是死活连不上菜刀的站,顿时不知道怎么继续了,所以就趁这个机会整理了一下代码执行函数怎么get ...

  3. 夜神模拟器与HBuilder连接/cmd运行提示符/执行夜神模拟器命令/执行HBuilder命令

    第一步:启动HBuilder和夜神模拟器 第二步:通过运行电脑命令CMD进入(电脑运行命令的快捷键是:windows键+R2.Ctrl键与Alt键之间的那个键就是windows键或者点击左下角开始图标 ...

  4. php代码审计5审计命令执行漏洞

    命令执行漏洞:通过易受攻击的应用程序在主机操作系统上执行任意命令,用户提供的数据(表单,cookie,http头等)未过滤 挖掘思路:用户能够控制函数输入,存在可执行代码的危险函数 命令执行和代码执行 ...

  5. Apache SSI 远程命令执行漏洞复现

    Apache SSI 远程命令执行漏洞复现 一.漏洞描述 当目标服务器开启了SSI与CGI支持,我们就可以上传shtml,利用<!--#exec cmd=”id” -->语法执行命令. 使 ...

  6. NETGEAR 系列路由器命令执行漏洞简析

    NETGEAR 系列路由器命令执行漏洞简析 2016年12月7日,国外网站exploit-db上爆出一个关于NETGEAR R7000路由器的命令注入漏洞.一时间,各路人马开始忙碌起来.厂商忙于声明和 ...

  7. [web安全原理]PHP命令执行漏洞基础

    前言 PHP命令执行漏洞 应用程序的某些功能功能需要调用可以执行系统命令的函数,如果这些函数或者函数的参数被用户控制,就有可能通过命令连接符将恶意命令拼接到正常的函数中,从而随意执行系统命令,这就是命 ...

  8. ASP代码审计 -4.命令执行漏洞总结

    命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip" ...

  9. ASP代码审计学习笔记 -4.命令执行漏洞

    命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip" ...

  10. [WEB安全]代码/命令执行总结

    0x01 代码执行 1.1 概念 远程代码执行实际上是调用服务器网站代码进行执行. 1.2 常见执行方法 eval eval():将字符串当做函数进行执行(需要传入一个完整的语句) demo: < ...

随机推荐

  1. [转帖]SQL Server中查询CPU占用高的SQL语句

    本文导读:触发器造成死锁.作业多且频繁.中间表的大量使用.游标的大量使用.索引的设计不合理.事务操作频繁.SQL语句设计不合理,都会造成查询效率低下.影响服务器性能的发挥.我们可以使用sql serv ...

  2. Harbor修改默认网段以及设置开机启动的方法

    Harbor修改默认网段以及设置开机启动的方法 背景 docker 默认的网段是 172.16.xx.xx 网段. harbor进行设置时会自动加1 设置为 172.17.xx.xx 有时候这个网段是 ...

  3. [转帖]Rocksdb的优劣及应用场景分析

      研究Rocksdb已经有七个月的时间了,这期间阅读了它的大部分代码,对底层存储引擎进行了适配,同时也做了大量的测试.在正式研究之前由于对其在本地存储引擎这个江湖地位的膜拜,把它想象的很完美,深入摸 ...

  4. [转帖]三篇文章了解 TiDB 技术内幕 - 谈调度

    返回全部 申砾产品技术解读2017-06-06 为什么要进行调度 先回忆一下 三篇文章了解 TiDB 技术内幕 - 说存储提到的一些信息,TiKV 集群是 TiDB 数据库的分布式 KV 存储引擎,数 ...

  5. linux机制

    cpu Cache 工作原理:文中对Cache的一致性提出了两种策略:基于监听的和基于目录的.前者是所有Cache均监听各个Cache的写操作,当一个Cache中的数据被写了,其处理方式有:写更新协议 ...

  6. Go基础之指针

    Go语言中的指针 目录 Go语言中的指针 一.Go语言中的指针介绍 1.1 指针介绍 1.2 基本语法 1.3 声明和初始化 1.4 Go 指针的3个重要概念 1.4.1 指针地址(Pointer A ...

  7. log4cxx配置日期回滚策略中增加MaxFileSize属性

    目录 1.背景 2.实现方式 2.1.DailyRollingFileAppender新增MaxFileSize属性 2.2.TimeBasedRollingPolicy策略新增maxFileSize ...

  8. uniapp面试题

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  9. 优化算法之梯度下降|Matlab实现梯度下降算法

    题目要求: 使用Matab实现梯度下降法 对于函数: min ⁡ f ( x ) = 2 x 1 2 + 4 x 2 2 − 6 x 1 − 2 x 1 x 2 \min f(x)=2 x_{1}^{ ...

  10. AutoGPT是什么?超简单安装使用教程

    1.AutoGPT 最近几天当红炸子鸡的是AutoGPT,不得不说AI发展真快啊,几天出来一个新东西,都跟不上时代的脚步了. AutoGPT是一个开源的应用程序,展示了GPT-4语言模型的能力.这个程 ...