当前位置:网站首页>命令执行漏洞及防御
命令执行漏洞及防御
2022-07-23 05:40:00 【GSflyy】
命令执行漏洞的原理
程序应用有时需要调用一些执行系统命令的函数,如php中的system,exec,shell exec,passthru,popen,proc popen等,当用户可以控制这些函数的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令注入攻击
两个条件
(1)用户可以控制函数输入
(2)存在可以执行代码的危险函数
命令执行漏洞产生原因
1.开发人员编写源码时,未针对代码中可执行的特殊函数入口作过滤,导致客户端可以恶意构造语句,并提交服务端执行
2.命令注入攻击中,web服务器没有过滤类似system,eval,exec等函数,是该漏洞攻击成功的主要原因。
命令执行漏洞的危害
1.继承web服务程序的权限去执行系统命令或读写文件
2.反弹shell
3.控制整个网站甚至服务器
4.进一步内网渗透
实例
<?php echo shell_exec($_GET['a']); ?>将url中的参数a作为cmd命令行指令执行
危险函数导致代码执行
<?php
$arr = $_GET['arr'];
$array = $_GET['array'];
$new_array = arraymap($arr,$array);
?>arraymap是一个危险函数,它会默认将参数作为php代码执行

PHP一些可调用外部程序的危险函数
eval攻击
eval函数将输入的参数当成php代码来执行
mixed eval(string code str)
<?php
$var = "var";
if(isset($_GET["arg"]))
{
$arg = $_GET["arg"];
eval("\$var = $arg;");
echo "\$var = ".$var;
}
?>preg_replace()函数
preg_replace()函数执行一个正则表达式的搜索和替换
在php版本为5.5.0以下时有一个漏洞,当该函数使用了一个不安全的修饰符"\e"时,preg_replace()会对替换字符串的反向引用进行正常替换,将其作为php代码进行计算,并使用 结果替换搜索字符串。

此处/e的用处是引用括号里的字符 也就是以参数a去替代括号里的字符
ps:不要忘记代码两侧的中括号
call_user_func
函数用法:
call_user_func($_GET["a"] , $_GET["b"])
将a作为函数执行,b作为函数参数传递进去

在命令注入时,常有需要多命令执行的情况
在linux下,可以使用|或||代替
|是管道符,显示后面的执行结果
||当前面命令执行出错时再执行后面的
在Window下,可以使用&、&&、|、||代替
&前面的语句为假则执行后面的
&&前面的语句为假则直接出错,后面的也不执行
|直接执行后面的语句
||前面出错执行后面的语句
命令执行的防御手段
1.尽量不要执行外部命令
2.使用自定义函数或函数库替代外部函数功能
3.使用escapeshellarg函数来处理命令参数

4.使用safe_mode_exec_dir:指定可执行文件路径 ,这样可以将会使用的命令提前放入此路径内
safe_mode_exec_dir = /usr/local/php/bin
DVWA介绍
DVWA平台:
用来进行安全脆弱性鉴定的PHP/Mysql Web应用
为安全专业人员测试总结的专业技能和工具提供合法环境
帮助web开发者更好的理解web应用安全防范的过程
DVWA的搭建
DVWA是基于php/mysql环境开发的
下载地址:
Buy Steroids Online UK - Anabolic Steroids For Sale UK
GitHub - digininja/DVWA: Damn Vulnerable Web Application (DVWA)
DVWA练习命令注入
使用靶场自行练习
边栏推荐
猜你喜欢

Spark常见面试问题整理

【uiautomation】键指令大全(以及三种调用方式)+常用鼠标动作+SendKeys+Inspect学习

PyGame realizes the airplane war game

Custom formula input box

大厂面试机器学习算法(5)推荐系统算法

Getting started with RPC and thrift

动态设置卡片的主题色

The problem that GBK codec cannot decode may be caused by the file name

自定义MVC(下)
![[metric]使用Prometheus监控flink1.13org.apache.flink.metrics](/img/9a/f6ef8de9943ec8e716388ae6620600.png)
[metric]使用Prometheus监控flink1.13org.apache.flink.metrics
随机推荐
BurpSuite学习笔记
js的call、apply、bind
js高阶函数
check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ord
First meet flask
Dynamically set the theme color of the card
C语言之二分查找法或折半查找法剖析(经典例题,经典解析)
Points for attention when using El table to lazy load tree tables
slice()和splice()区别
Custom formula input box
PyGame realizes the airplane war game
【C语言】什么是函数?函数的分类和侧重(帮你快速分类和记忆函数)
Sorting out common SQL interview questions and answers
TypeScript 高级类型
gbk编解码器无法解码的问题,有可能出题出在文件名上
js的继承方式
[Python flask note 5] Blueprint simple à utiliser
Large factory interview machine learning algorithm (0): Feature Engineering | data preprocessing
Pytorch white from zero uses North pointing
First blog