实战打靶集锦-021-glasgowsmile

news2024/12/23 1:04:40

提示:本文记录了博主的一次曲折的打靶经历。

目录

  • 1. 主机发现
  • 2. 端口扫描
  • 3. 服务枚举
  • 4. 服务探查
    • 4.1 手工访问
    • 4.2 目录枚举
    • 4.3 手工探查
    • 4.4 搜索EXP
    • 4.5 joomlascan
    • 4.6 用户猜测与密码爆破
    • 4.7 构建反弹shell
  • 5. 提权
    • 5.1 优化shell
    • 5.2 枚举系统信息
    • 5.3 探查/etc/passwd
    • 5.4 枚举定时任务
    • 5.5 枚举可执行文件
    • 5.6 linpeas扫描
    • 5.7 EXP提权
    • 5.8 密码爆破
    • 5.9 探索home目录
    • 5.10 登录mysql
    • 5.11 通过rob提权
    • 5.12 通过abner提权
    • 5.13 通过penguin提权
  • 6. 获取flag


1. 主机发现

目前只知道目标靶机在172.16.71.xx网段,通过如下的命令,看看这个网段上在线的主机。

$ nmap -sP 172.16.71.0/24

在这里插入图片描述
锁定目标靶机地址为172.16.71.135(kali逐渐是71.134,虚拟机网关是71.2)。

2. 端口扫描

用下面的命令扫描一下靶机上开放的端口。

$ sudo nmap –p- 172.16.71.135

在这里插入图片描述
靶机只开放了ssh端口和http端口。

3. 服务枚举

接下来通过下面的命令,枚举一下端口上运行着什么服务。

$ sudo nmap -p22,80 -A -sV -sT 172.16.71.135

在这里插入图片描述
又是OpenSSH和Apache,接下来探查一下Apache。

4. 服务探查

4.1 手工访问

先手工用浏览器访问一下看看。
在这里插入图片描述
额,是一个静态页面,没有什么特别的。

4.2 目录枚举

通过dirsearch枚举一下目录。

$ dirsearch –u http://172.16.71.135

在这里插入图片描述
貌似有管理控制台,先不急着下手,用dirb挂上big字典再扫一遍。

$ dirb http://172.16.71.135 /usr/share/wordlists/dirb/big.txt -X .php
$ dirb http://172.16.71.135 /usr/share/wordlists/dirb/big.txt -X .html
$ dirb http://172.16.71.135 /usr/share/wordlists/dirb/big.txt -X .htm
$ dirb http://172.16.71.135 /usr/share/wordlists/dirb/big.txt -R

在这里插入图片描述
没有扫描出太特别的内容,只是把joomla目录更进一步枚举了一下。

4.3 手工探查

既然扫出了这么多内容,接下来还是手工进去看看都包含些什么吧。
进入/joomla的时候,默认会进入如下所示的页面,还附带有登录表单。
在这里插入图片描述
尝试猜测用户名密码也没有效果,接下来看看下面的administrator目录。
在这里插入图片描述
嗯,这个基本上就是管理控制台的入口了,先查查joomla是个什么鬼吧,这竟然是个零代码建站的内容管理系统。不过到目前为止不知道joomla的具体版本,默认用户等相关内容,先继续往下看。通过/joomla/administrator/components/com_admin/admin.xml文件基本可以判断joomla的版本应该是3.1.1或者3.0.0。
在这里插入图片描述
除此之外,在手工探查的时候,没有找到任何有用的信息。

4.4 搜索EXP

感觉没啥招了,搜索一下EXP试试看。
在这里插入图片描述
搜索出来了海量的EXP,绝大部分都是跟component和plugin有关系的,不过这对我来说如同大海捞针,现在连joomla的版本号都还没有确定下来。不过有一个名为Admin Takeover的EXP引起了我的注意,直接弄下来试试,一直报如下的错误。
在这里插入图片描述
实际验证了一下,当前版本的joomla上,确实没有EXP中对应的URL(http://172.16.71.135/joomla/index.php/component/users/?view=registration)。

4.5 joomlascan

安装并使用joomscan进行扫描。

$ sudo apt install joomscan
$ joomscan --url http://172.16.71.135/joomla

在这里插入图片描述
其实这里面扫出来的内容,真正对我们有用的是版本号3.7.3。我们再扫描一下有没有对应版本的可以利用的EXP。
在这里插入图片描述
确实有个跨站的EXP,不过这个对我们构建反弹shell没啥帮助,暂时放弃。

4.6 用户猜测与密码爆破

到目前为止,没有任何进展,连用户名都没有锁定。初步的想法是分别对几个最可能的用户名进行爆破:admin、administrator、joker、joomla、glasgow。这里我们用到一个叫cewl的工具来构造密码字典,它的原理是爬取页面内容,进行密码字典构建,好处是具有针对性,命中率比较高。

$ cewl http://172.16.71.135/joomla > my_dic.txt

运行效果如下。
在这里插入图片描述
接下来,通过浏览器使用随意的用户名密码登录/joomla/administrator页面,并使用burp抓取交互过程,这里不再赘述。这里先用admin用户尝试爆破,相关配置如下图。
在这里插入图片描述
针对admin用户,没有爆破出来,status code一直是200,response消息都是Username and password do not match or you do not have an account yet.,如下图。
在这里插入图片描述
用同样的方法,爆破administrator、joker、joomla、glasgow。
在这里插入图片描述
最终,在爆破joomla的时候,有两个请求的status code是303(重定向),response中也没有报错信息,大概率是爆破成功了,我们手动试试,最终锁定用户名密码是joomla:Gotham。
登录到administrator下面看看。
在这里插入图片描述
是个控制台页面。

4.7 构建反弹shell

接下来,主要的目标是寻找构建反弹shell的突破口,最好是有能够编辑的.php文件这种,一般会在报错文件、模板文件等地方出现。
在这里插入图片描述
经过仔细查看,我们在上述菜单下找到了对应的模板管理,进去看看。

在这里插入图片描述
确实有两个模板,我们随便选一个进去看看,这里选择第二个吧。
在这里插入图片描述
也确实有一些php文件,我们进入index.php看看吧。
在这里插入图片描述
进来后,还可以编辑并保存,太好了。我们在开头添加下图所示的内容构建反弹shell,注意地址和端口号。
在这里插入图片描述
保存完成后,在kali建立针对8888端口的监听。
在这里插入图片描述
然后在前面保存php更改后的页面上点击下图所示的 Template Preview菜单。
在这里插入图片描述
这时候,成功构建了反弹shell,如下图。
在这里插入图片描述
这样,我们就完成了突破边界。

5. 提权

5.1 优化shell

通过python优化一下shell。

$ which python
$ /usr/bin/python -c "import pty;pty.spawn('/bin/bash')"

在这里插入图片描述

5.2 枚举系统信息

通过下面的命令枚举一下系统信息。

$ uname –a
$ cat /etc/*-release
$ getconf LONG_BIT

在这里插入图片描述
这就得到了目标靶机的系统详细信息,64为的debian 10,内核版本是4.19.118-2。

5.3 探查/etc/passwd

先手工看一下。

www-data@glasgowsmile:/var/www/html/joomla$ cat /etc/passwd | grep -v "nologin"

在这里插入图片描述
还是有几个看上去正常的账号的,实在不行的话回来爆破一下。这里先尝试写入一个用户试试看。

www-data@glasgowsmile:/var/www/html/joomla$ echo "testusr:$1$SPbFLyHT$R9OwyQlyRTARX4ujvNBGY0:0:0:root:/root:/bin/bash" >> /etc/passwd

在这里插入图片描述
嗯,权限不够。

5.4 枚举定时任务

在这里插入图片描述
没有可以直接利用的内容。

5.5 枚举可执行文件

$ sudo –l
$ find / -type f -user root -perm -o=w 2>/dev/null | grep -v "/sys/" | grep -v "/proc/"
$ find / -user root -perm -4000 2>/dev/null

在这里插入图片描述
貌似没有看到可以直接利用的内容。

5.6 linpeas扫描

实在没有别的招数了,还是用linpeas扫描一下吧。首先扫出来的是一个highly probable的CVE漏洞。
在这里插入图片描述
直接下载poc代码,并在kali本地编译。

$ wget https://raw.githubusercontent.com/bcoles/kernel-exploits/master/CVE-2019-13272/poc.c
$ gcc -Wall --std=gnu99 -s poc.c -o ptrace_traceme_root

上传到目标靶机后,赋予权限并运行。

ww-data@glasgowsmile:/tmp$ chmod u+x ptrace_traceme_root
www-data@glasgowsmile:/tmp$ ./ptrace_traceme_root

在这里插入图片描述
缺少库,现在旧版本的系统上编译一下,然后再上传靶机执行。
在这里插入图片描述
EXP利用失败,这个漏洞应该是补上了。接下来试试pkexec,直接下载EXP。

$ git clone https://github.com/Almorabea/pkexec-exploit.git

将pkexec-exploit文件夹下面的CVE-2021-4034.py文件上传到靶机。然后在靶机上直接运行一下。

$ chmod 775 CVE-2021-4034.py
$ python3 CVE-2021-4034.py

在这里插入图片描述
靶机上执行的时候,一直卡在这里不动,这个漏洞应该是确实堵上了。用另一个编译版本的EXP验证了一下,果真如此。
在这里插入图片描述

5.7 EXP提权

实在没啥招了,搜索一下EXP把,看看能不能直接通过系统漏洞进行提权,先从内核开始。

$ searchsploit kernel 4.19.118

在这里插入图片描述
主要就是上图中所示的两个,第二个我们刚刚试过了,没成功,接下来我们尝试试一下第一个。同样的办法,直接在低版本的linux上编译,然后拿到靶机上尝试。

$ gcc -static -o 50135 50135.c

在这里插入图片描述
应该是这个漏洞也堵上了,继续看debian 10的EXP。

$ searchsploit debian 10

在这里插入图片描述
上图中所示的两个,不过搜索了一下,这个两个漏洞只会在debian 9或者之前的版本中。

5.8 密码爆破

到目前为止,一直没有提权成功,不过我们知道home下除了joomla之外,还有三个用户:abner、rob、penguin。分别对这三个用户爆破一下试试看。这里使用hydra工具,先挂载前面爆破joomla的时候生成的密码字典。

$ hydra -l abner -P my_dic.txt -vV -e ns 172.16.71.135 ssh
$ hydra -l rob -P my_dic.txt -vV -e ns 172.16.71.135 ssh
$ hydra -l penguin -P my_dic.txt -vV -e ns 172.16.71.135 ssh
$ hydra -l abner -P /usr/share/wordlists/rockyou.txt -vV -e ns 172.16.71.135 ssh
$ hydra -l rob -P /usr/share/wordlists/rockyou.txt -vV -e ns 172.16.71.135 ssh
$ hydra -l penguin -P /usr/share/wordlists/rockyou.txt -vV -e ns 172.16.71.135 ssh

结果折腾了半天,始终没有爆破出来。还是回来看看home目录有没有什么遗漏吧。

5.9 探索home目录

/home目录下只有上述爆破的三个用户的目录,竟然没有joomla用户的目录,先找找joomla用户的默认反弹目录/var/www/html/joomla或者其上一级目录。
在joomla目录下没有发现特别有意义的内容,跟之前浏览器上找到的内容大差不差。不过在joomla的上级目录,有个how_to.txt文件指的让人怀疑。
在这里插入图片描述
看看内容再说。
在这里插入图片描述
感觉像是给Rob的一个留言,不过留言内容本身没啥稀奇的。再到更上层目录看一下,没有其它内容的话,就拿Rob开刀了。
在这里插入图片描述
有意思,再上层的目录下有个joomla2,这可能是备份目录啊,进去看看。
在这里插入图片描述
内容上感觉跟joomla目录的内容差不多,还是仔细逐个看看,不能掉以轻心。

在这里插入图片描述
功夫不负有心人,在joomla2的configuration.php文件中发现了上图所示的蛛丝马迹,貌似是mysql的登录登录信息,数据库信息。先不往下探查了,直接登录mysql吧。

5.10 登录mysql

www-data@glasgowsmile:/var/www/joomla2$ mysql -u joomla -p

在这里插入图片描述
本以为比较顺利,遗憾的是卡在这里了,一直没有反应,重新启动靶机还是同样的问题。

在这里插入图片描述
查看了一下进程和端口也是正常的,如上图所示。后来通过python3重新执行pty后,生效了,日了狗了,前面使用python3执行pty一直报错的啊(如下图)。
在这里插入图片描述
不过后面再次执行,很丝滑。

$ /usr/bin/python3 -c "import pty;pty.spawn('/bin/bash')"

在这里插入图片描述
进入joomla_db后,发现表挺多的,我们直接找跟用户有关的。
在这里插入图片描述
先看users表。
在这里插入图片描述
只有joomla用户的信息,这个我们已经不关心了。再看看其它的几个表。
在这里插入图片描述
最终在batjoke数据库的taskforce表中发现了我们感兴趣的内容,如上图,感觉像是经过base64编码后的用户密码。分别尝试解开看看吧。
在这里插入图片描述
妥妥的,如丝般顺滑。既然前面joomla给rob留了消息,那就拿Rob开刀吧。

5.11 通过rob提权

先进入到rob用户。
在这里插入图片描述
这里再次查看可执行程序,没有发现特殊的内容。接下来还是看看刚才没权限访问的rob的home目录下面的内容。
在这里插入图片描述
先看Abnerineedyourhelp里面有些啥。
在这里插入图片描述
未发现特殊的信息,不过有两点值得可疑:内容好像是做了字母的rot轮换,另外最后一串信息貌似是base64编码过的内容,先尝试解码最后的字符串看看。
在这里插入图片描述
是乱码,再尝试用rot还原一下上面的内容(工具地址:https://gchq.github.io/CyberChef)。
在这里插入图片描述
需要设置轮换数字试一下,幸运的是,轮换数字是1的时候,看上去输出的内容比较正常,这是发给Abner的消息,并且提到了密码,意思是用这个密码可以解决问题。重新把输出内容中最后的字符串进行base64解码。
在这里插入图片描述
这个密码有点长啊,既然有密码了,我们尝试且兑换到abner用户数进行提权试试。

5.12 通过abner提权

切换到abner用户,然后看看home目录下有些啥。
在这里插入图片描述
貌似没啥特别的,逐个看看。
在这里插入图片描述
.bash_history里面的信息有些意思,首先貌似这个用户可以运行systemctl指令,另外貌似这个用户跟penguin有些瓜葛。先搜索一下这里提到的.dear_penguins.zip文件。
在这里插入图片描述
还真是有这个文件,并且文件的属主就是abner,连切换用户都省了,直接拷到/tmp目录下解开看看是啥。

在这里插入图片描述
嗯,文件被加密了,并且abner用户的当前密码解压成功了,看一下具体的内容。
在这里插入图片描述
有意思,又是一个留言,感觉像是一段台词,没啥实际意义,不过最后的一个串可能是个密码。我们用这个密码尝试登录一下penguin用户试试。
在这里插入图片描述
真的登录成功了。

5.13 通过penguin提权

通用先看看home目录下有些啥。
在这里插入图片描述
也有些值得进一步查看的内容,逐个看看。最终在SomeoneWhoHidesBehindAMask目录下的PeopleAreStartingToNotice.txt文件中发现了一些蛛丝马迹,是Joker给Penguin的留言,貌似说正在编写一个程序,只能用root运行,完成以后joker将会考本到当前目录。
在这里插入图片描述
提到了root权限,感觉快要搞定了。继续往下看,在user3.txt文件中的内容也挺有意思,个人猜测应该是joker用户的密码。
在这里插入图片描述
尝试切换到joker用户试试。
在这里插入图片描述
貌似没有这个用户,搜索了一下/etc/passwd文件,确实没有类似的用户。不过SomeoneWhoHidesBehindAMask目录下还有个文件.trash_old,其内容类似于一个shell脚本,如下图所示。
在这里插入图片描述
但是肯定没啥实际意义,不管怎么样,执行一下吧。
在这里插入图片描述
确实没啥用,不过这个文件是属于root组的,有没有可能通过这个玩意儿提权呢?下你看看是哪个进程在用这个文件。
在这里插入图片描述
貌似查不到,换个工具试试看,这里使用pspy64($ wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.1/pspy64)。下载并上传到目标靶机的/tmp目录下。

$ chmod u+x pspy64 
$ ./pspy64 -p -i 2000

在这里插入图片描述
这次抓到了,发现root权限每分钟运行一次.trash_old程序。我们尝试直接将反弹shell写入到.trash_old文件中替换原来的“exit 0”,这个文件我们是有权限的,如下图所示。
在这里插入图片描述
在这里插入图片描述
在kali上的9999端口建立监听,可以建立反弹shell。
在这里插入图片描述
成功了,进一步验证一下。

在这里插入图片描述

6. 获取flag

在这里插入图片描述

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

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

相关文章

虚拟机VMware+Ubuntu配置DPDK环境并运行Helloworld

虚拟机VMwareUbuntu配置DPDK环境并运行Helloworld 文章目录 虚拟机VMwareUbuntu配置DPDK环境并运行Helloworld安装虚拟机虚拟机中安装DPDK运行Helloworld 首先需要强调的是,版本的影响很大,有可能会因为版本不匹配而导致无法成功配置DPDK环境。 安装虚拟…

【Leetcode -637.二叉树的层平均值 -671.二叉树中第二小的节点】

Leetcode Leetcode -637.二叉树的层平均值Leetcode -671.二叉树中第二小的节点 Leetcode -637.二叉树的层平均值 题目:给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10^(- 5) 以内的答案可以被接受。 示例 1&#xff1…

TCP服务器的C#实现

1、TCP实现类 internal class TcpServer{public Socket ServerSocket { get; set; }public Dictionary<string,Socket> Sockets { get; set; } new Dictionary<string,Socket>();public byte[] SendBuffer { get; set; }public byte[] ReceiveBuffer { get; set; …

Qt消息对话框

一、头文件及类型 #include<QMessageBox> 二、错误、信息、提示、警告演示 错误对话框 QMessageBox::critical(this,"critical","错误"); 信息对话框 QMessageBox::information(this,"info","信息"); 提问对话框 if(QMessageBo…

发布自己的第一个抖音小程序

结构与微信小程序一样 内嵌H5网页&#xff0c;适用于任何平台&#xff0c;同样也是使用web-view组件 <web-view src"https://some-domain/some/path"></web-view> 相比起来&#xff0c;它比微信小程序更加简化&#xff0c;开发会更方便了。 API查询地…

超越Java 7,迎接Java 8时代!掌握这些新特性提升你的编程技能!

大家好&#xff0c;我是小米&#xff0c;一个热衷于技术分享的小伙伴。今天&#xff0c;我将向大家介绍Java 8中的一些新特性。Java 8作为一次重大更新&#xff0c;引入了许多令人激动的新功能&#xff0c;让我们的编码变得更加简洁高效。接下来&#xff0c;我们将详细介绍这些…

【暂时解决】radio单选框的change事件执行两次

项目场景&#xff1a; 简单的单选框场景 选择国内地区&#xff0c;省市县的下拉框就显示&#xff0c;选择国外地区就隐藏。 问题描述 当我使用radio的change事件时&#xff0c;会执行两次 javascript&#xff1a; $(input[typeradio][nameoptionsRadios]).change(function …

黑产科普丨揭秘游戏黑灰产业链

自今年起&#xff0c;游戏版号已恢复常态化发放&#xff0c;游戏行业在官方发文肯定、重获资本青睐、AI降本增效等多方助力下持续回暖。暑期档将至&#xff0c;游戏厂商为了抢占更多的市场份额&#xff0c;占据更多的玩家视野&#xff0c;将有大量的游戏选择在这个时间上线。 …

datax-Oracle新增writeMode支持

1.在com.alibaba.datax.plugin.writer.oraclewriter.OracleWriter中注释此内容,以让oracle支持writeMode模式 2.在com.alibaba.datax.plugin.rdbms.writer.util.WriterUtil中,增加对oracle的判断,将getWriteTemplate修改为如下内容 public static String getWriteTemplate(List…

在文件夹中获取某个文件的绝对路径

#!/bin/bash -lpathfind $(pwd) -name *.ipaecho ${path}写成下面这样也是可以的 path$(find $(pwd) -name *.ipa)如图所示&#xff0c;Export 文件夹下有.ipa文件&#xff0c;我们目前想获取.ipa文件的绝对路径 执行结果如下 192:Jenkins liubo$ cd /Users/liubo/Desktop/…

C# 通过委托实现多个窗口之间的传值

之前用qt写的时候&#xff0c;都有信号和槽来实现&#xff0c;用C#的话应该也有类似的 大概实现的是我在父窗口当中new了两个子窗口&#xff0c;这个两个子窗口都可以将处理完的数据传递给父窗口&#xff0c;并且两个子窗口通过父窗口进行通信。 我这就按上面窗口名称来说明代…

pipeline实现二次还原

通过mode参数确定是否发布还是回滚&#xff0c;在满足rollback条件下&#xff0c;列举出我们的所有的备份的目录&#xff0c;根据回滚条件选择索要回滚的目录(目录是根据时间戳来判断创建的文件) pipeline {agent anyparameters {choice(name: mode, choices: [deploy,rollbac…

HA 自动化-通知提醒

配置->场景自动化->创建自动化 notify.notify

Gitlab群组及项目仓库搭建

1、新建群组 2、新建项目 3、克隆到Visualstudio 复制克隆地址&#xff0c;克隆到本地 这里会让你登录账号 可以添加成员并邀请ta进项目组 从已注册用户列表中选择 4、Git工作流 回顾一下Git工作流&#xff0c;工程人员只需要从Develop分支新建自己的分支即可。分支命名以姓名…

设计模式学习之抽象工厂模式

设计模式系列往期文章 设计模式学习之策略模式设计模式学习之策略模式在前端的应用设计模式学习之简单工厂模式设计模式学习之工厂方法模式 如果你已经理解了工厂方法模式&#xff0c;那你能够很快的明白抽象工厂模式。 温习&#xff1a;什么是工厂方法模式 我们先温习一下…

【面试题19】B-Tree和B+Tree的区别,以及B+Tree在MySQL中的应用

文章目录 一、前言二、关于B-Tree和B Tree2.1 B-Tree2.2 BTree 三、B Tree与B Tree的差异3.1 叶子节点的差异3.2 数据访问的差异3.3 范围查询的差异 四、Mysql中BTree的应用场景4.1 主键索引4.2 唯一索引4.3 普通索引 五、MySQL为什么使用BTree来做索引&#xff1f;总结 一、前…

【网络安全】IP地址定位技术的应用场景

随着科技的不断发展&#xff0c;网络空间已经成为人们生活中重要的一部分。而其中&#xff0c;IP地址定位技术又是网络空间不可或缺的一部分。IP地址定位技术是一种可以根据IP地址确定用户位置的技术这项技术不仅可以用于个人定位&#xff0c;也可以使用在商业领域、网络安全和…

【新星计划·2023】认识和学习BASH(一)

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、认识BASH 1、硬件、核心与Shell ①硬件 ②核心管理 ③应用程序 2、为何要学文字接口的shell&#xff1f; 3、系统的合法shel…

学习AQS

面试的时候被问到AQS会不会一脸懵逼呢?今天来学习一下AQS吧! 看看这个听起来高大上又难以回答的东西到底是个啥? 1.什么是AQS JUC包中 的很多同步器如ReentrantLock、Semaphore、CountDownLatch等等都是有一些基础的共同的行为,比如:等待队列、条件队列、独占获取、共享…

IntelliJ IDEA - IDEA 如何快速生成 serialVersionUID?

问题描述 今天遇到序列化问题的时候&#xff0c;需要用到 serialVersionUID 字段&#xff0c;如下。但是不知道如何快速自动生成这个&#xff0c;于是有了这篇博客&#xff0c;哈哈哈 private static final long serialVersionUID 6828716364537510652L; 解决方案 首先如图…