ToB企服应用市场:ToB评测及商务社交产业平台

标题: 写了一个 SRE 调试工具,类似一个小木马 [打印本页]

作者: 惊雷无声    时间: 2024-5-17 18:21
标题: 写了一个 SRE 调试工具,类似一个小木马
远程操作机器有时会比较麻烦,我写了一个工具,主要功能:1.远程实行下令 2.上传下载文件。是一个 Web Server,通过 HTTP 请求来操作机器,类似一个小木马。固然,因为是一个 Web Server,所以也提供了打印 HTTP 请求的能力,方便调试 Webhook 场景。下面给各人演示一下。
安装

工具代码放到 Github 上了,感爱好的朋侪可以瞧瞧,没多少行代码。也给各人编译好了,下载地点在这里:https://github.com/UlricQin/gohttpd/releases。提供 x86 和 arm64 的 Linux 版本,下载后解压就可以直接运行。
  1. # 我是 arm64 架构的机器,所以下载 arm64 版本,下载完了解压缩
  2. tar zxvf gohttpd-v0.3-linux-arm64.tar.gz
  3. # 进入解压缩出来的目录里
  4. cd gohttpd-v0.3-linux-arm64
  5. # 运行 gohttpd,监听 8888 端口,认证密码是 Pa55word
  6. ./gohttpd 8888 Pa55word
复制代码
如上,运行 gohttpd 时,必要传入两个参数,第一个是要监听的端口号,第二个是认证密码。这里我传入的是 8888 和 Pa55word。我这个机器的 IP 是 10.211.55.3,下面给各人演示一下。
操作演示

下令实行

我先通过这个 HTTP Server 在目标机器实行个下令:
  1. ulric@ulric-flashcat ~ % curl 10.211.55.3:8888/run -d 'hostname;uptime'
  2. Authorization is blank
复制代码
报错了,说 Authorization 为空,这是缺少认证信息,认证信息就是 Pa55word,所以我再加上认证信息(放 header 里):
  1. ulric@ulric-flashcat ~ % curl -H "Authorization: Pa55word" 10.211.55.3:8888/run -d 'hostname;uptime'
  2. ubuntu-linux-22-04-desktop
  3. 11:01:56 up 2 days, 16:42,  3 users,  load average: 0.29, 0.15, 0.11
复制代码
OK,正常输出了机器名和 uptime 信息。固然,通过 -d 的方式可能不方便编辑,尤其是在换行的时候,我们可以使用 postman 这类工具,更方便的编辑请求体。比如

下载文件

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

点击对应的文件,就可以下载了。假如你在 Linux 根目次下运行 gohttpd,那么你就可以下载整个体系的文件了,所以要留意安全。
上传文件

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

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

有些产品对外提供 Webhook 能力,但是我想之后 Webhook 的具体内容格式,这时候可以用这个工具来打印 HTTP 请求,比如:
  1. ulric@ulric-flashcat ~ % curl 10.211.55.3:8888/request
  2. r.RequestURI: /request
  3. r.URL.Path: /request
  4. r.URL.Host:
  5. r.URL.Hostname():
  6. r.Method: GET
  7. r.URL.Scheme:
  8. gohttpd pid: 842085
  9. Headers:
  10. User-Agent: curl/8.4.0
  11. Accept: */*
  12. Payload:
  13. ulric@ulric-flashcat ~ % curl 10.211.55.3:8888/request -d 'hello world'
  14. r.RequestURI: /request
  15. r.URL.Path: /request
  16. r.URL.Host:
  17. r.URL.Hostname():
  18. r.Method: POST
  19. r.URL.Scheme:
  20. gohttpd pid: 842085
  21. Headers:
  22. User-Agent: curl/8.4.0
  23. Accept: */*
  24. Content-Length: 11
  25. Content-Type: application/x-www-form-urlencoded
  26. Payload:
  27. hello world
复制代码
如上,通过 /request 接口,可以打印出 HTTP 请求的具体信息,包括 URL、Method、Headers、Payload 等。但是这个内容是通过 HTTP Response 直接返回的。不方便调试 Webhook 场景,Webhook 场景可以使用 /print 接口,别的服务调用 /print 接口的时候,就会在 gohttpd 的控制台打印出 HTTP 请求的具体信息。
比如我 curl 一下 /print:
  1. ulric@ulric-flashcat ~ % curl 10.211.55.3:8888/print -d 'hello world'
  2. ok
复制代码
然后到启动 gohttpd 的控制台看看:
  1. root@ubuntu-linux-22-04-desktop:~/download/gohttpd-v0.2-linux-arm64# ./gohttpd 8888 Pa55word
  2. 2024/04/10 11:00:04 main.go:211: listening http on 8888
  3. r.RequestURI: /print
  4. r.URL.Path: /print
  5. r.URL.Host:
  6. r.URL.Hostname():
  7. r.Method: POST
  8. r.URL.Scheme:
  9. gohttpd pid: 842085
  10. Headers:
  11. Accept: */*
  12. Content-Length: 11
  13. Content-Type: application/x-www-form-urlencoded
  14. User-Agent: curl/8.4.0
  15. Payload:
  16. hello world
复制代码
对于调试 Webhook 的场景,这就比较方便了。


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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4