没有mac的苦逼就直接分析代码了
首先Murus是mac的防火墙,这个东西只要可以以admin权限运行就可以提权了
step1
首先我们看到编译一个c程序
1 | cat > /tmp/murus411_exp.c <<EOF |
看到这里我们就知道这应该是不正当权限运行程序导致的,先设置当前程序的uid和euid,之后执行/bin/bash
而$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。
成功应该返回0,如果返回不是0说明编译有问题了
step2
之后又编译第二个程序
1 | cat > /tmp/murus411_exp2.c <<EOF |
这个就将第一个程序拥有者设置为0,并设置suid位,最后mv Murus.orig并执行
step3
查找进程MurusLoader,看看起来了没
1 | while : |
step4
1 | mv /Applications/Murus.app/Contents/MacOS/Murus /Applications/Murus.app/\ |
最后将原来的Murus替换为我们的exp2
那么问题就是MurusLoader以root权限执行/Applications/Murus.app/Contents/MacOS/Murus
这个程序导致的问题了,这就是关键所在
step5
最后再检查下我们的文件的拥有者是不是root,之后就获得了root权限了
1 | while : |
小结
其实很多时候不应要利用内核漏洞去提权,这种以不当的权限启动程序的是一个很好的方法,之前分析nsa的工具的时候,很多都是利用这一点,简单方便,何乐而不为呢
有空总结一下提权的各种套路,大家可以提醒一下我