查看原文
其他

干货|从无到有学习Golang编写poc&exp

听风安全 2023-11-28

The following article is from 戟星安全实验室 Author A404


免责声明
由于传播、利用本公众号听风安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号听风安全及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

公众号现在只对常读和星标的公众号才展示大图推送,

建议大家把听风安全设为星标,否则可能就看不到啦!

----------------------------------------------------------------------



本文约1683字,阅读约需5分钟。


前言

1、确定目标:

首先要明确你的目标是什么。你是想编写一个POC来验证某个漏洞的存在,还是想编写一个EXP来利用该漏洞?

2、漏洞研究:

在编写POCProof of Concept,概念验证)或EXPExploit,漏洞利用)之前,深入研究目标漏洞是至关重要的。了解漏洞的工作原理、漏洞利用条件和可能的影响。查阅相关文档、安全公告、漏洞报告以及专业博客和论坛上的讨论。

3、环境设置:

根据目标漏洞的类型和相关应用程序或系统的环境,搭建一个合适的实验环境。这可能包括虚拟机、容器或者专门用于漏洞测试的平台。

4、编写POC

如果你的目标是编写一个POC来验证漏洞,你需要着重考虑漏洞的关键特征和触发条件。POC应该能够在实验环境中重现漏洞,并提供足够的证据来证明漏洞的存在。

确定漏洞的输入点:找到漏洞所接受的输入,这可能是网络请求、文件、用户输入等。分析这些输入的结构和预期的行为。

构造恶意输入:基于对漏洞的理解,构造一个恶意输入,以触发漏洞。这可能包括修改输入数据的特定字段、发送恶意请求或者注入恶意代码等。

目标验证:验证POC是否能成功触发漏洞。在实验环境中运行POC,并观察结果。如果漏洞成功被验证,确保记录下复现过程和验证结果。

5、编写EXP

如果你的目标是编写一个EXP来利用漏洞,你需要深入理解目标系统的内部工作机制和漏洞利用技术。

漏洞利用技术:了解常见的漏洞利用技术,例如、SQL注入、远程代码执行等。根据目标漏洞的类型选择合适的利用技术。

编写利用代码:基于漏洞利用技术和目标系统的特点,编写利用代码。这可能包括构造特定的数据包、利用内存布局、绕过安全机制等。

利用验证:在合适的实验环境中


编写



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.492.4.50版本对路径规范化所做的更改中存在一个路径穿越漏洞,攻击者可利用该漏洞读取到Web目录外的其他文件,如系统配置文件、网站源码等,甚至在特定情况下,攻击者可构造恶意请求执行命令,控制服务器。

漏洞验证:

在服务端开启了cgicgid这两个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函数判断漏洞是否存在,如果漏洞存在,则循环执行命令,



至此,简单的漏洞验证和漏洞利用编写完成。






不可错过的往期推荐哦


记一次打穿云上内网的攻防实战

渗透实战|记一次曲折的EDU通杀漏洞挖掘

Windows内网多级渗透

记一次SRC未授权influxdb数据库任意命令执行

谷歌插件之navigator修改

我是如何用GPT自动化生成Nuclei的POC

针对Vue前后端分离项目的渗透思路

点击下方名片,关注我们
觉得内容不错,就点下“”和“在看
如果不想错过新的内容推送可以设为星标
继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存