基本配置
VulnHub上下载靶机DC9:
攻击机使用Kali2020.3,网络配置如下:
信息搜集
扫描虚拟局域网192.168.187.0/24:
发现靶机192.168.187.142,进一步扫描:
用TCP SYN多扫描出来一个22端口?查一下原因,很可能是使用了knockd保护了SSH端口,先记录下来。
接下来现访问http://192.168.187.142:
使用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
一个一个访问过去,在访问到session.php的时候发生了很有趣的事情:
似乎是直接登陆成了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
确定有文件包含,那么接下来,由于之前怀疑靶机使用了knockd保护了SSH,那么先找一找配置文件/etc/knockd.conf:
http://192.168.187.142/manage.php?file=../../../../etc/knockd.conf
确实有这个配置文件,那么就先用knock命令使得靶机的SSH端口对我的攻击机开放:
sudo apt-get install knockd # 安装knockd工具,其中包括knock命令
knock 192.168.187.142 7469 8475 9842 # 使用序列号knock靶机
可以看到,knock之后,靶机的22端口状态由filtered变为了open。
SQL注入
文件包含漏洞的利用暂时难以继续,那么就先搁置,看看其他的页面有没有可以利用的点。
在Search页面有一个按名字搜索信息的搜索框:
这里的实现肯定涉及数据库,但是查询数据库不在URL上由?体现,那么现在可以用burosuite抓个包看看:
把search的参数后加上单引号没有异常,但是构造成如下字段时发生异常:
输出了所有人的信息,这不符合预期的查询结果,可以判断这个网页存在SQL注入漏洞:
那么接下来,由于这个查询带了cookie,那么就先把burpsuite抓到的包保存到sqlQuery.txt文件中,然后使用sqlmap探测数据库:
sqlmap -r sqlQuery.txt --dbs --batch --risk 3 --level 5
找到三个可用的数据库,有用的信息应该在Staff和users数据库中,先探测Staff的表:
把两个表都dump下来:
sqlmap -r sqlQuery.txt -D Staff --dump --batch --risk 3 --level 5
有一个admin账户密码的hash值,还有显示在网页上的Staff的信息,对我来说用处不大。
再看看users数据库:
得到所有用户的用户名和密码(用户密码一定不要明文存啊!),把用户名分别存放到dc9users.txt和dc9pass.txt文件中。
试试用这些用户名和密码登录SSH,使用hydra进行爆破:
hydra -L dc9users.txt -P dc9pass.txt ssh://192.168.187.142
破解出两个符合的密码:
进入靶机
分别用两个账号登录靶机,其中chandlerb没有什么有效的信息,但是通过janitor的账号登录可以得到如下的文件。
有一个奇怪的目录.secrets-for-putin,打开可以得到一个存放有密码的文件:
把这几个密码放入dc9pass.txt中,再使用hydra爆破一次SSH:
可以得到一个新的密码。接下来登录fredf账户,以求获得更多的信息。
提权
登录fredf账户,收集一点基本的信息:
接下来准备提权。先看有没有自带root权限的指令:
没有什么特殊的,那接下来查看有没有可以sudo执行的指令:
发现这样一条指令(?)先执行以下看看是什么东西:
应该是一个test.py python脚本,找找看:
find / -name test.py -print 2>/dev/null
看看第一个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:
总结
这是DC系列的最后一个靶机,DC系列靶机的学习告一段落,通过这一系列靶机的学习,我能明显地感觉到自己对实际的渗透测试的流程有了一个比较全面的、粗浅的理解,发现了很多需要学习的方向,希望以后保持学习热情,继续学习下去。
总结一下这一次的DC9靶机
学到的知识:
-
再次熟悉了一下gobuster的用法
-
熟悉了sqlmap的用法
-
对文件包含漏洞的表现以及利用加深了印象
-
再次熟悉了hydra的用法
-
加深了对/etc/sudoers文件的理解
还需学习的知识:
-
对sql注入漏洞的敏感程度不够,了解还比较粗浅,手动判断方法还不是很熟悉
-
对/etc/passwd文件的配置不熟悉,刚开始想用修改这个文件提权,但是一直没能成功
来源:freebuf.com 2020-11-04 22:43:27 by: FFFcaptain328
请登录后发表评论
注册