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

目录

  • 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

实战打靶集锦-021-glasgowsmile相关推荐

  1. 实战打靶集锦-012-sar2HTML

    **写在前面:**记录博主的一次打靶经历. 目录 1. 主机发现 2. 端口扫描 3. 服务枚举 4. 服务探查 5. 搜索公共EXP 6. 文件上传研究 7. 提权 7.1 弱密码提权 7.2 枚举 ...

  2. 实战打靶集锦-018-decoy

    提示:本文记录了博主的一次打靶过程 目录 1. 主机发现 2. 端口扫描 3. 服务枚举 4. 服务探查 4.1 浏览器探查 5. 突破边界 6. 提权 6.1 rbash绕过 6.2 枚举系统信息 ...

  3. 实战打靶集锦-016-lampiao

    提示:本文记录了博主打靶过程中一次曲折的提权经历 目录 1. 主机发现 2. 端口扫描 3. 服务枚举 4. 服务探查 4.1 80端口探查 4.2 1898端口探查 4.3 EXP搜索 4.3.1 ...

  4. 实战打靶集锦-001-Funbox2

    **写在前面:**这应该是本人第一次自主成功完成的打靶,纪念一下下. 目录 1. 主机发现 2. 端口扫描 3. 服务枚举 4. 服务探查 4.1 Apache探查 4.1.1 浏览器访问 4.1.2 ...

  5. android简单app实例_Android安卓小项目实战视频教程集锦

    Android安卓小项目实战视频教程,点击进入视频教程: 一.安卓项目视频教程: 1蓝牙聊天APP介绍-分步骤介绍一个简单安卓蓝牙APP的开发过程 - 西瓜视频 2蓝牙聊天开发流程-分步骤介绍一个简单 ...

  6. OpenStack安装部署实战——问题集锦

    为什么80%的码农都做不了架构师?>>>    安装OpenStack是一个及其考验耐心的事情.最近前后花了一个月的时间,尝试手动.自动两种方式部署OpenStack.我想说的是,尼 ...

  7. 实战多种方式实现远程控制

    文章来源|MS08067 红队培训班 第5期 本文作者:山(红队培训班5期学员) 作业的思路是实现控制端(Server)对受控端(Client)的远程控制:在作业中,将以python代码 以及 jav ...

  8. Hadoop 2.X 从入门到精通系列视频课程套餐

    购买大数据Hadoop课程套餐,享八五折优惠!! 套餐地址:http://edu.51cto.com/pack/view/id-806.html 赵强老师博客地址:http://collen7788. ...

  9. 2022 年度「博客之星」评选TOP 200进100结果已出炉

    2022年「博客之星」年度评选马上进入专家评审阶段,「博客之星」评选TOP 200 进 100 结果也已出炉.具体名单以及评选规则如下: TOP 100 名单(按照码龄排序) CSDN ID 昵称 博 ...

最新文章

  1. 双11大幕拉开,菜鸟智能机器人也将测试运行
  2. Linux 操作系统原理 — 文件系统 — 存储布局
  3. 搜索引擎设计实用教程(5)-以百度为例
  4. 在传统行业做数字化转型之业务篇
  5. 10个实用的机器学习建议
  6. @SpringBootApplication(exclude={DataSourceAutoConfiguration.class})注解作用
  7. socket 网络编程
  8. 基于Xilinx FPGA实现PCIE2.0接口
  9. RandomAccessFile 随机存取文件任意位置数据
  10. LinuxDay19——加密与安全(2)
  11. 安卓桌面软件哪个好_有哪些好用的手机记事本软件?安卓手机便签哪个好用?
  12. 统计每个url访问的topN用户以及访问次数(sql)
  13. 【二】网络空间安全综述
  14. 视频编码解码(H264中的profile和level)
  15. 设置计算机网络文件共享,办公室电脑怎么设置共享文件夹?(其它电脑可直接访问共享的文件?...
  16. 【瑞芯微Rockchip Linux平台】SoftAp需求实现(3)动态获取BT Mac地址并更新beacon帧中的mac信息
  17. Tensorflow常见函数查询(一)
  18. Java里面for循环的几种用法
  19. OpenGIS中文文档
  20. android10官方刷机包下载,Android 11 喜讯!小米 10 率先尝鲜,官方刷机包发布下载...

热门文章

  1. 【VScode】vscode中用community server connecttor配置并部署基于Tomcat的Javaweb项目
  2. 【QML学习 01】 SystemTrayIcon 状态栏图标
  3. 山东省职称英语及计算机考试报名,山东职称英语考试
  4. “苹果云”,云计算的未来
  5. 国内可用的ChatGPT网站合集
  6. php socket 长链接 workerman 的使用
  7. 基于LED的温度检测(目标检测到--OCR)
  8. CSS练习3D的先旋转后移动和先移动后旋转的区别
  9. Exchange安装与配置
  10. Python 每日一题(猴子吃桃问题)