深信服EDR RCE分析

0x00 前言

该漏洞是去年20年hw的时候爆的,最近正好在学习php代码审计就翻出来看看

0x01 分析

漏洞文件位置:/tool/log/c.php

image-20210113101846866

可以看到在第67和78行的地方定义了两个匿名函数$strip_slashes$show_input

$show_form 函数中直接引入了上面两个匿名函数

然后在第91行可以看到 extract 函数

image-20210113102153004

extract 函数会将数组中的key当作变量名,value当作变量值 ,容易造成变量覆盖

举个例子 :

<?php
  $flag = 'xxxx';
    extract($_GET);

原先代码中flag的数值是xxx

extract将get获取的参数和数值作为数组的key和value,如果我们传入了?flag=bbbb 数组就会变成如下

'flag'=>'bbbb'

这时候flag会作为参数名覆盖之前的flag参数,所以最后flag值为bbbb

再来看这里的代码

$show_form 接受的参数 $params 直接传给了extract函数,那么如果$params可控那么我们就可以RCE了

image-20210113102841722

搜索 $show_form ,我直接好家伙。。。

$show_form$params直接从 $_REQUEST中获取

image-20210113103019451

那我们可以直接覆盖 strip_slashes 实现RCE

/tool/log/c.php?strip_slashes=system&host=id

image-20210113103259638

通过对函数的覆盖导致原来的

$strip_slashes($host) 在我们控制参数的情况下

变为了

system(id)

0x02 总结

看下来蛮奇妙的,不知道为啥开发定义的时候非要用匿名函数,然后也没有进行任何过滤,感觉大厂不应该写出这样的代码,估计这套EDR还有很多漏洞后面再去康康去

评论

  1. 4 年前
    2021-3-24 13:32:20

    师傅这是vpn把

  2. 4 年前
    2021-3-24 13:32:37

    呸,edr

    • KpLi0rn 博主
      4 年前
      2021-3-25 8:03:05

      嗯嗯 感谢指正,是edr

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇