首页 > 其他 > 详细

命令执行漏洞基础

时间:2021-08-11 09:26:46      阅读:20      评论:0      收藏:0      [点我收藏+]

命令执行漏洞

本次实验均在linux下测试:

1、命令执行(Command Execution)漏洞即黑客可以直接在Web应用中执行系统命令,从而获取敏感信息或者拿下shell权限

2、命令执行漏洞可能造成的原因是Web服务器对用户输入命令安全检测不足,导致恶意代码被执行

3、更常见的命令执行漏洞是发生在各种Web组件,包括Web容器、Web框架、CMS软件、安全组件等

可能存在漏洞的函数:system、exec、shell_exec、passthru、popen、proc_popen等

一.命令执行的原理和测试方法

源代码:

<?php
show_source(__FILE__);
echo"<pre>";
if(isset($_GET["cmd"])){
system($_GET["cmd"]);
echo"</pre>";
?>

 

传入?cmd=ipconfig

返回技术分享图片

 

 

 这边就是一个很典型的命令执行漏洞

接下来当命令改变时:

<?php
echo system("ping -c 2 " . $_GET[‘ip‘]);
?>

此时被限制为只能输入ip

使用&&,||等进行突破

技术分享图片

 

 

 

 这里的%26便是&的url编码,为了解决url中的歧义,会讲一些特殊字符进行编码

如果使用&&则不行

技术分享图片

 

 使用||

注意:&&与||均存在惰性,&&相当于and,当第一个命令返回真,则不执行第二个;||则相当于or,当第一个为假,便执行第二个,否则不执行第二个,因此这里url对应改变。

技术分享图片

 

二、命令执行基础

1.windows中的转义字符是^,linux中的转义字符是\

技术分享图片

 

技术分享图片

 

可见转义字符的作用。

2.多条命令执行。

windows下可用&&,||,%0a;linux下可用&&    ||    ;,    $()    ``    %0a    %0d    来连接多句命令

技术分享图片

 

技术分享图片

 

 3.注释符号:

windows为::,linux中为#

 三、存在过滤的绕过与技巧

空格过滤:

技术分享图片

 

 

 

则可以使用url编码进行绕过,可以进行一波Fuzz

当url编码都被过滤,还可以通过截取的方式获取空格:

1.windows下:

%ProgramFiles:~10,`%

~相当于截取符,表示从$ProgramFiles的值中截取,一般为C:\Program Files. 代表从第10个开始并获取一个字符,则是空格。

 技术分享图片

 

2.linux下:

$IFS$9        {cmd,args}          cat<>flag    $[IFS]

技术分享图片

 

 

 

变量拼接绕过黑名单:

linux:a=c;b=at;c=he;$a$b ${c}{c}

技术分享图片(cat 123.txt)

例子:/?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

 

 

 

 

使用通配符绕过:

?代表任意一个字符,*代表任意个字符串

技术分享图片

 

 

借用已有字符,用substr截取获得<>等符号

 

base64绕过

技术分享图片

 

 三、执行无回显

1.http通道

2.dns通道

3.时间盲注

4.写入文件,二次返回

 

命令执行漏洞基础

原文:https://www.cnblogs.com/fak1r2/p/15126244.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!