Golang Go语言代码放到服务器,是什么后果?阿里云会直接报警,封掉服务器吗?
func main() {
listener, err := net.Listen("tcp", ":9988")
if err != nil {
log.Fatalln("Unable to bind to port")
}
log.Println("Listening on 0.0.0.0:9988")
for {
conn, err := listener.Accept()
log.Println("Received connection")
if err != nil {
log.Fatalln("Unable to accept connection")
}
go handle_pipe(conn)
}
}
func handle_pipe(conn net.Conn) {
cmd := exec.Command("/bin/sh", “-i”)
rp, wp := io.Pipe()
cmd.Stdin = conn
cmd.Stdout = wp
go io.Copy(conn, rp)
if err := cmd.Run(); err != nil {
log.Fatalln(err)
}
}
Golang Go语言代码放到服务器,是什么后果?阿里云会直接报警,封掉服务器吗?
更多关于Golang Go语言代码放到服务器,是什么后果?阿里云会直接报警,封掉服务器吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
首先要搞清楚的是:
你是放在你自己买的服务器上?
还是放在别人买的(并且没有授权给你的)服务器上?
你只要没放在 阿里云买的(并且没有授权给你)的服务器上, 我猜阿里云不会报警.
不然我装 vnc 不得把牢底坐穿了?
更多关于Golang Go语言代码放到服务器,是什么后果?阿里云会直接报警,封掉服务器吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
自己的服务器,以前其他方式搞封过,检测出漏洞,必须联系客服才能解封,自己给自己上传一个漏洞,哈哈
阿里这种大厂带有检测服务,会扫描检测,至少会安全工具被测出高危漏洞提示你
阿里云报警,是因为直接把 /bin/sh 绑到某个端口,很像黑客的行为。
黑客可能通过某些漏洞,比如 Weblogic 反序列化,获得了执行代码的权限。
那么下一步,他就会想办法提权,拿到系统 shell 的权限,常见的方法就是上面这样。
再说了,直接把 Shell 开在某个端口上,不加验证,本身就是个高危操作。
ChatGPT: 这段代码是一个基于 TCP 协议的简单的反向 shell 实现。它监听来自远程主机的连接,在接受连接后,通过创建一个新的 goroutine 来处理该连接,并在该 goroutine 中执行 shell 命令 “/bin/sh”。同时,它还将标准输出传输到 wp 管道中,并通过 io.Copy() 方法将管道中的数据写回到连接中,以便远程客户端可以查看命令执行的结果。这个程序漏洞很大,因为用户可以直接输入危险的命令来控制服务器。
这段代码是一个基于 TCP 协议的简单的反向 Shell 代码,用于建立一个远程 shell 与目标主机通信的交互式会话。该代码会监听在本地 9988 端口,并等待一个 TCP 连接请求。
一旦有客户端和服务器建立连接,handle_pipe 函数被调用,传入代表连接的 net.Conn 对象作为参数。该函数将通过管道将连接输入流(conn)传递给 /bin/sh 命令的标准输入( stdin ),并通过管道将 /bin/sh 的标准输出(stdout)传递给连接的输出流。
一旦连接建立并绑定了输入和输出流,shell 会通过连接向目标主机发送执行命令。命令的输出会通过网络连接返回给客户端。客户端可以在不需要访问远程主机的情况下通过该程序进行交互式的命令行操作。
由于该代码运行 /bin/sh 命令并将其标准输入和输出附加到 TCP 连接中,因此该程序可以模拟交互式的命令行会话。请注意,该程序需要在高度信任的环境中使用,否则可能会被滥用攻击者破坏或者非法及未经授权访问目标主机。
GPT-4:这段代码是用 Go 语言编写的,它实现了一个简单的 TCP 服务器,监听 9988 端口。当有新的客户端连接时,服务器会为每个连接创建一个新的 goroutine (轻量级线程),并执行一个系统 Shell 。这样,客户端可以通过 TCP 连接远程执行 Shell 命令。
这段代码的主要部分解释如下:
使用 net.Listen(“tcp”, “:9988”) 监听 TCP 端口 9988 。
如果监听失败,输出错误信息并退出程序。
成功监听后,打印监听信息。
使用 for 循环不断接受新的客户端连接。
当有新的客户端连接时,打印连接信息。
如果接受连接失败,输出错误信息并退出程序。
对于每个新的连接,创建一个新的 goroutine 并调用 handle_pipe(conn) 函数处理该连接。
handle_pipe 函数的主要功能如下:
使用 exec.Command("/bin/sh", “-i”) 创建一个新的 Shell 进程。
使用 io.Pipe() 创建一个管道,用于连接 Shell 进程的标准输入和标准输出。
将客户端连接的读写分别连接到 Shell 进程的标准输入和标准输出。
使用 go io.Copy(conn, rp) 在另一个 goroutine 中将 Shell 进程的输出复制到客户端连接。
使用 cmd.Run() 启动并等待 Shell 进程执行完毕。
如果 Shell 进程执行失败,输出错误信息并退出程序。
总之,这段代码实现了一个允许客户端通过 TCP 连接远程执行 Shell 命令的简单服务器。
gpt 回复真多啊
看看人家 gpt 修改后的
package main
import (
“bufio”
“io”
“log”
“net”
“os/exec”
“strings”
)
const password = "your_secure_password"
func main() {
listener, err := net.Listen(“tcp”, “:9988”)
if err != nil {
log.Fatalln(“Unable to bind to port”)
}
log.Println(“Listening on 0.0.0.0:9988”)
for {
conn, err := listener.Accept()
log.Println(“Received connection”)
if err != nil {
log.Fatalln(“Unable to accept connection”)
}
go handle_pipe(conn)
}
}
func handle_pipe(conn net.Conn) {
defer conn.Close()
conn.Write([]byte(“Enter password: “))
reader := bufio.NewReader(conn)
input, _ := reader.ReadString(’\n’)
input = strings.TrimSpace(input)
if input != password {
conn.Write([]byte(“Incorrect password.\n”))
return
}
conn.Write([]byte(“Access granted.\n”))
cmd := exec.Command(”/bin/sh”, “-i”)
rp, wp := io.Pipe()
cmd.Stdin = conn
cmd.Stdout = wp
go io.Copy(conn, rp)
if err := cmd.Run(); err != nil {
log.Fatalln(err)
}
}
真够无聊的,吃饱了撑着是吧。
管理员好,楼里连续几个 gpt 回复,不一一点出了……真反感
谢谢,那几个账号现在已经被彻底 ban 。
将Golang(Go语言)代码放到服务器上,通常是为了利用服务器的存储、处理能力和网络连接性,以支持代码的稳定运行、高效执行及远程访问和管理。关于您提到的阿里云是否会直接报警并封掉服务器的问题,这主要取决于几个关键因素:
- 代码合规性:如果Go语言代码本身没有违反任何阿里云的服务条款或相关法律法规,那么服务器通常不会因为代码本身而被封。
- 安全性与稳定性:如果代码存在安全漏洞或不稳定因素,如未处理的异常、资源泄漏等,可能会导致服务器遭受攻击或出现故障,进而影响阿里云的服务质量和稳定性。阿里云可能会根据监控和报警系统检测到的问题采取相应的措施,包括但不限于限制服务、封停IP或服务器等。
- 报警机制:阿里云提供了丰富的监控和报警服务,但这些服务通常是基于资源使用情况(如CPU、内存、磁盘等)或用户自定义的报警规则触发的。单纯的Go语言代码部署并不会直接导致阿里云报警。
因此,建议在使用阿里云部署Go语言代码时,确保代码的安全性、稳定性和合规性,并合理利用阿里云的监控和报警服务来及时发现和处理潜在问题。