记一次vulnhub|渗透测试 DC-9

vulnhub DC-9


  • 0X01 Main Point
    1.Sqlmap的基本使用
    2.LFI的利用
    3.Port Knocking–端口敲门服务
    4.hydra的基本使用–爆破ssh
    5.sudo权限的枚举

  • 0X02 前期嗅探和端口探测
    kali下使用arp-scan获取靶机IP
    在这里插入图片描述
    得到靶机IP 172.20.10.10, nmap探测靶机开放的端口服务;
    在这里插入图片描述
    靶机开放了80和22端口,80端口是HTTP,22端口提供SSH,先尝试SSH连接,看能否使用弱口令直接登录,发现是显示无法连接的,这就很奇怪了,SSH也没有修改端口,疑惑先放在这里。先看80端口的服务。

    一个显示职员的页面,但是在manage.php中可以进行登录,这里我们肯定要得到管理员账户密码,每个页面进行fuzz,发现在results.php中存在严重的POST类型SQL注入。

在这里插入图片描述
在这里插入图片描述
--is-dba虽然是false,但是我们可以常规进行跑表,跑字段,得出如下账户和密码,其中admin账户密码hash值用Sqlmap自带的字典能够解密出来,其他账户存储以明文形式。
在这里插入图片描述
在这里插入图片描述
成功以admin账户进入mange.php页面后,并没有任何其他的区别,只是可以增加能Add Record,并没有任何实质功能,但是在主页面发现:
在这里插入图片描述
页面底下发现file doesn't exist,这里很蹊跷,想到是不是存在 LFI ,如何判断?构造../../../../../etc/passwd,至于传入的名称,这里Burpsuite可以进行fuzz常用LFI名称即可,发现确实存在LFI漏洞,可以读取/etc/passwd,要是能还能读取/etc/shadow就好了,但是发现读取不出。
在这里插入图片描述
继续进行fuzz,其实可以读出靶机很多本地文件:
在这里插入图片描述
但是最关键的文件在本地文件并不常见,那就是/etc/knockd.conf文件,这个文件是配置好端口敲门服务后产生的,关于端口敲门,有如下说明:

如果你有一台公众可访问的服务器,黑客可以轻松扫描其IP地址,查找服务器上的开放端口(尤其是用于SSH的端口22)。将服务器隐藏起来、不让黑客看见的一种方法是使用knockd。knockd是一种端口试探服务器工具。它侦听以太网或其他可用接口上的所有流量,等待特殊序列的端口命中(port-hit)。telnet或Putty等客户软件通过向服务器上的端口发送TCP或数据包来启动端口命中。

端口敲门服务,即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。

换句话说,如果知道自定义的端口,逐个进行敲门,这样我们就能够开启SSH端口,从而进行连接,所以利用LFI来查看knock.conf文件配置,得到自定义端口。
在这里插入图片描述
这样得知依次需要打开的端口分别为:7469、8475、9842,knock打开端口需要nmap,从攻击机中打开端口:
在这里插入图片描述
也可以使用

nmap -p 7469 172.20.10.10	
nmap -p 8475 172.20.20.10
nmap -p 9842 172.20.20.10

成功打开敲门后使用nmap查看22端口是否打开,发现已经打开。
在这里插入图片描述
可以使用SSH进行连接了,这里不知道用户名和密码,但是可以根据Sqlmap跑出来的用户和密码进行爆破,可能存在此用户,这里使用Hydra爆破神器进行爆破

Hydra 使用方法

使用 “-l” 选项指定单个登录名,使用 “-p” 选项指定单个密码。使用 “-L” 选项指定一个文件来指定多个登录名,使用 “-P” 选项指定一个文件来指定多个密码,“-t”表示使用线程.

hydra -l admin -p password ftp://localhost/
hydra -L default_logins.txt -p test ftp://localhost/
hydra -l admin -P common_passwords.txt ftp://localhost/
hydra -L logins.txt -P passwords.txt ftp://localhost/

Hydra默认对iPv4攻击,但是也支持iPv6 ,-6则表示对iPv6攻击,爆破可得:
在这里插入图片描述
得到三个用户,登录SSH,遍历目录后(注意应该使用ls -la查看隐藏文件或目录),发现只有janitor用户存在隐藏可读文件,打开后是其他密码。


根据给的描述,很可能是其他用户的密码,我们在Hydra进行爆破,果然得到fredf用户,登录!
在这里插入图片描述
在之前的所用用户中,都进行了sudo权限的枚举,但是没有权限,而在fredf账户中,发现可以NO Passwd可以执行root权限的文件,进行查看发现是一个python脚本:
在这里插入图片描述
拥有root执行权限,当Python传入的参数是三个的时候,可以把第二个的读出,并写入到第三个的尾端,而第一个参数就是test.py,如何构造好这两个参数就是重点。
由于我们需要root账户,那我们可以构造一个有root权限的账户放入/etc/passwd中进行存储,利用这个账户登录后,自然得到root权限。这里要熟悉/etc/passwd存储账户的规则,利用OpenSSH可以先本地创建账户,得到加密的密文后再导入到靶机的/etc/passwd即可。

先将存储值放入fredf用户的/tmp目录下
保存为echo ‘pavan: 1 1 pavan$qv9M3fBmtDPrOTBZflNl81:0:0::/root:/bin/bash’ >> /tmp/raj
然后利用 test.py 将raj写入到/etc/passwd下存储,此时应该使用sudo命令。
在这里插入图片描述
成功得到root权限,这是我们可以在root用户下的/etc/passwd找到pavan用户的相关存储信息了,最后得到flag!
在这里插入图片描述

发布了17 篇原创文章 · 获赞 3 · 访问量 1078

猜你喜欢

转载自blog.csdn.net/crisprx/article/details/103985898
今日推荐