首页 > 其他分享 >写了一个 SRE 调试工具,类似一个小木马

写了一个 SRE 调试工具,类似一个小木马

时间:2024-04-18 11:34:02浏览次数:12  
标签:8888 gohttpd SRE URL 调试 木马 HTTP curl ulric

远程操作机器有时会比较麻烦,我写了一个工具,主要功能:1.远程执行命令 2.上传下载文件。是一个 Web Server,通过 HTTP 请求来操作机器,类似一个小木马。当然,因为是一个 Web Server,所以也提供了打印 HTTP 请求的能力,方便调试 Webhook 场景。下面给大家演示一下。

安装

工具代码放到 Github 上了,感兴趣的朋友可以瞧瞧,没多少行代码。也给大家编译好了,下载地址在这里:https://github.com/UlricQin/gohttpd/releases。提供 x86 和 arm64 的 Linux 版本,下载后解压就可以直接运行。

# 我是 arm64 架构的机器,所以下载 arm64 版本,下载完了解压缩
tar zxvf gohttpd-v0.3-linux-arm64.tar.gz

# 进入解压缩出来的目录里
cd gohttpd-v0.3-linux-arm64

# 运行 gohttpd,监听 8888 端口,认证密码是 Pa55word
./gohttpd 8888 Pa55word

如上,运行 gohttpd 时,需要传入两个参数,第一个是要监听的端口号,第二个是认证密码。这里我传入的是 8888 和 Pa55word。我这个机器的 IP 是 10.211.55.3,下面给大家演示一下。

操作演示

命令执行

我先通过这个 HTTP Server 在目标机器执行个命令:

ulric@ulric-flashcat ~ % curl 10.211.55.3:8888/run -d 'hostname;uptime'
Authorization is blank

报错了,说 Authorization 为空,这是缺少认证信息,认证信息就是 Pa55word,所以我再加上认证信息(放 header 里):

ulric@ulric-flashcat ~ % curl -H "Authorization: Pa55word" 10.211.55.3:8888/run -d 'hostname;uptime'
ubuntu-linux-22-04-desktop
 11:01:56 up 2 days, 16:42,  3 users,  load average: 0.29, 0.15, 0.11

OK,正常输出了机器名和 uptime 信息。当然,通过 -d 的方式可能不方便编辑,尤其是在换行的时候,我们可以使用 postman 这类工具,更方便的编辑请求体。比如

20240410110756

下载文件

刚才命令执行的时候,调用的接口(URL路径)是 /run,我们不加任何 URL 路径,直接请求,就可以列出当前目录下的文件,比如:

20240410111420

点击对应的文件,就可以下载了。如果你在 Linux 根目录下运行 gohttpd,那么你就可以下载整个系统的文件了,所以要注意安全。

上传文件

上传文件的 URL 是 /upload,使用浏览器打开,如图:

20240410111625

可以选择多个文件,上传,完事去首页看看,就可以看到上传的文件了。

接口调试

有些产品对外提供 Webhook 能力,但是我想之后 Webhook 的具体内容格式,这时候可以用这个工具来打印 HTTP 请求,比如:

ulric@ulric-flashcat ~ % curl 10.211.55.3:8888/request
r.RequestURI: /request
r.URL.Path: /request
r.URL.Host:
r.URL.Hostname():
r.Method: GET
r.URL.Scheme:
gohttpd pid: 842085

Headers:
User-Agent: curl/8.4.0
Accept: */*

Payload:

ulric@ulric-flashcat ~ % curl 10.211.55.3:8888/request -d 'hello world'
r.RequestURI: /request
r.URL.Path: /request
r.URL.Host:
r.URL.Hostname():
r.Method: POST
r.URL.Scheme:
gohttpd pid: 842085

Headers:
User-Agent: curl/8.4.0
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded

Payload:
hello world

如上,通过 /request 接口,可以打印出 HTTP 请求的详细信息,包括 URL、Method、Headers、Payload 等。但是这个内容是通过 HTTP Response 直接返回的。不方便调试 Webhook 场景,Webhook 场景可以使用 /print 接口,别的服务调用 /print 接口的时候,就会在 gohttpd 的控制台打印出 HTTP 请求的详细信息。

比如我 curl 一下 /print

ulric@ulric-flashcat ~ % curl 10.211.55.3:8888/print -d 'hello world'
ok

然后到启动 gohttpd 的控制台看看:

root@ubuntu-linux-22-04-desktop:~/download/gohttpd-v0.2-linux-arm64# ./gohttpd 8888 Pa55word
2024/04/10 11:00:04 main.go:211: listening http on 8888
r.RequestURI: /print
r.URL.Path: /print
r.URL.Host:
r.URL.Hostname():
r.Method: POST
r.URL.Scheme:
gohttpd pid: 842085

Headers:
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded
User-Agent: curl/8.4.0

Payload:
hello world

对于调试 Webhook 的场景,这就比较方便了。

如上知识,希望对你有帮助。文末请允许我插播一个小广告。本人创业两年了,我们公司的业务如下,如果你有这方面的需求,欢迎联系我们做产品技术交流哈。

标签:8888,gohttpd,SRE,URL,调试,木马,HTTP,curl,ulric
From: https://www.cnblogs.com/ulricqin/p/18143138

相关文章

  • vscode+gdbserver远程调试ARM环境搭建
     一、编译gdbserver1.下载gdb  http://ftp.gnu.org/gnu/gdb/2.解压缩  tarxfgdb-8.0.tar.xz3.交叉编译  cdgdb/gdbserver/ ./configure--host=arm-none-linux-gnueabihf--target=arm-none-linux-gnueabihf--program-prefix=arm-none-linux-gnueabihf-......
  • 常见问题——VS调试出现:未加载mscorlib.pdb 的页面
    问题:VS在调试程序的时间,出现单独一个报错页面:未加载mscorlib.pdbmscorlib.pdb包含查找模块mscorlib.dll的源文件所需的调试信息解决方法:点击调试=>选项=>调试=>勾选:常规点击启用我的代码=》勾选:启用时若没有用户代码则发出警告(仅限托管)参考:https://www.cnblogs.com/Can-da......
  • react native调试相关技巧
    ReactNative的Debug基础:https://reactnative.dev/docs/next/debugging   调出开发菜单DevMenu。cmd+D或Device->Shake   在DevMenu上可以选择“ShowElementInspector”,显示UI上的组件,但是这是直接在app上显示,不清楚,最好在DevTools上来查看元素。 ......
  • 视频汇聚/安防监控平台EasyCVR调试pprof接口信息泄露如何处理?
    EasyCVR视频融合平台基于云边端架构,可支持海量视频汇聚管理,能提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、智能分析等视频服务。平台兼容性强,支持多协议、多类型设备接入,包括:国标GB/T28181协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SD......
  • 记录解决VS 2022调试C++ DLL项目时卡顿的问题
    项目结构运行时为DotNet6的C#通过Cli/C++去调用C++的DLL。问题表现在VisualStudio2022中调试C++DLL代码时,按下F5、F10、F11跳转到下一行时VS卡顿会2秒左右,体验非常不好。问题原因然后发现原因是项目的配置属性中,调试那一行,调试器类型选择的是“自动”。解决此问题的方法......
  • day04_我的Java学习笔记 (数组的静态初始化、数组的动态初始化,debug调试等)
    1.数组1.1数组的定义那python怎么定义数组的呢?Java:String[]names={"zhangsan","lisi","wangwu"}Python:names=["zhangsan","lisi","wangwu"]在python中,列表可以存储不同类型的数据,而在Java中,数组只能存储相同类型的数据。1......
  • 浏览器 自带打印调用以及样式修改与调试
    1.代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>print</title></......
  • 谷歌浏览器调试工具使用简介
    1.elements元素查看选中某个元素查看其样式直接调试修改样式选中元素右击给元素添加属性例如idclass等复制元素删除元素forcestate:添加active:hover样式将元素存储为全局变量storeasglobalvariable此时可以通过temp1对元素进行访......
  • vscode使用gdb插件调试二进制文件
    使用vscode访问虚拟机里面的代码。代码是在虚拟机的xshell编译的(必须的debug模式)。现在可以通过在vscode下面安装gdb插件。然后就可以在vscode下面使用gdb来启动这个二进制文件了,还可以在vscode里面,在函数上面打断点。 在vscode左侧栏,点击debug,可以创建launch.json文件。......
  • HBuildx如何启用IOS真机调试?
    制作标准基座:安装爱思助手(www.i4.cn),用爱思助手制作ipa签名。添加ipa文件: 添加Hbuildx所在目录:HBuilderX.3.7.3.20230223\HBuilderX\plugins\launcher\base下的iPhone_base.ipa 添加之后勾选,选择使用AppleID签名,这里需要登录你的苹果ID,然后点开始签名。签名成功之后打......