Python编写渗透工具①

python是门简单易学的语言,强大的第三方库让我们在编程中事半功倍,今天我们就来谈谈python在渗透测试中的应用,让我们自己动手打造自己的渗透工具集。

信息搜集--py端口扫描小脚本

端口扫描是渗透测试中常用的技术手段,发现敏感端口,尝试弱口令或者默认口令爆破也是常用的手段,之前自学python时候百度着写了个小脚本。

端口扫描小脚本:

对于端口扫描技术,其实分很多种,通常是利用tcp协议的三次握手过程(从网上偷张图。。)

放出的那个脚本,是利用了tcp connect() 即完成了tcp三次握手全连接,根据握手情况判断端口是否开放,这种方式比较准确,但是会在服务器留下大量连接痕迹。

当然,如果不想留下大量痕迹,我们可以在第三次握手过程,将ack确认号变成rst(释放连接),连接没有建立,自然不会有痕迹,但是这种方法需要root权限好了,先讲解一下我们的py端口扫描小脚本:

核心代码:

这段代码是定义了要扫描的端口,并且用for ..in .. 来进行遍历

这段代码,是利用了socket套接字,建立tcp连接,socket.socket()就是s = socket.socket(socket.AF_INET, socket.SOCK_STREAM),用于tcp连接建立。

实用爆破小脚本--压缩文件密码爆破&&ftp爆破

对于压缩文件,py有自己的处理模块zipfile,关于zipfile的实例用法,在violent python里有实例脚本,模仿书里写了个小脚本

其实脚本很简单,核心就一个地方:

ZipFile是zipfile模块重要的一个类,zfile就是类的实例,而extractall(pwd)就是类里的方法,用于处理带有密码的压缩文件;当pwd正确时,压缩文件就打开成功。

而此脚本就是利用了zipfile模块的类和方法,加载字典不断尝试pwd,直至返回正确的密码,爆破成功python在爆破方面也很有优势,比如ftp,py也有ftplib模块来处理,一次ftp连接过程如下:

connect(ip, port, timeout)用于建立ftp连接;

login(user,pwd)用于登陆ftp;

retrlines()用于控制在服务器执行命令的结果的传输模式;quit()方法用于关闭ftp连接

是不是觉得和zipfile的套路很像?没错,你会写一个,就会写另外一个,就会写许许多多的爆破脚本,脚本我就不放出来了,大家自己动手去写一写

(p.s:关于ftp爆破,在加载字典之前,请先尝试空密码,即ftp.login(),万一成功了呢。。)

目录探测--py低配版御剑

昨天写了个小脚本,用来探测目录,实现和御剑一样的效果,脚本是写好了,开了多线程,但是还算很慢。。之后我会再次修改:

能run起来,速度较慢。。

说一下主要思想吧,之后我改完再细讲。。

加载1个或者多个字典,将字典中的内容与输入的url进行拼接得到完整url;关于加载多个字典,代码实现如下:

利用sys.argv,我们输入python yujian.py dir.txt就加载dir.txt,输入dir.txt php.txt,因为有for i in range(1,syslen):,syslen=3,range(1,3)返回[1,2];

with open(sys.argv, 'r') as f:它就会自动加载输入的两个txt文件(sys.argv[1]、sys.argv[2]);也就是说,我们输入几个文件,它就加载几个文件作为字典当我们遇到php站点时,完全可以把御剑的字典拿过来,只加载php.txt dir.txt,这点和御剑是一样的:

通过python的requests.get(url)的状态返回码status_code来对是否存在该url进行判断;如果返回200就将该url打印出来,并且存进txt文本里目前是这么个想法。。

爬虫爬取整站连接

这个爬虫是慕课网上的蚂蚁老师讲的,感觉做的非常好,就改了一下,本来是用来爬取百度百科python1000条词条的(现在还是能爬的,要是之后目标更新了,就得制订新的爬虫策略了,大的框架不需要变),改成了爬取网站整站连接,扩展性还是很好的。

爬虫的基本构成,抓一张蚂蚁老师的图:

1.调度器:调度器用来对各个部分进行调度,如将url取出,送给下载器下载,将下载是页面送给解析器解析,解析出新的url及想要的数据等

2.url管理器:url管理器要维护两个set()(为啥用set(),因为set()自带去重功能),一个标识已抓取的url,一个标识待抓取的url,同时,url管理器还要有将解析器解析出来的新url放到待抓取的url里的方法等

3.下载器:实现最简单,抓取静态页面只需要r = requests.get,然后r.content,页面内容就存进内存了,当然,你存进数据库里也是可以的;但是同时也是扩展时的重点,比如某些页面需要登陆才能访问,这时候就得post传输账号密码或者加上已经登陆产生的cookie

4.解析器:BeautifulSoup或者正则或者采用binghe牛的pyquery来解析下载器下载来的页面数据

5.输出器:主要功能输出想得到的数据

调度器:

spider_main.py

其中__init__是初始化,url_manager, html_downloader, html_outputer, html_parser是自己写的模块,各个模块里有各自的类和方法,通过初始化得到相应类的实例;craw是调度器对各个模块的调度:

分别对应着:

1.从待爬取url列表中取出一个url

2.将改url送往下载器下载,返回页面内容

3.将页面送往解析器解析,解析出新的url列表和想要的数据

4.调度url管理器,将新的url添加进带爬取的url列表

5.调度输出器输出数据

url管理器:

url_manager.py:

url_manager模块里的类,及类的方法

下载器:

html_downloader.py

本来蚂蚁老师用的urllib,我给改了,改成requests:

html解析器:

html_parser.py

把抓取策略给改了,现在是解析所有链接,即a标签href的值

html_outputer.py

这个看情况,可要可不要,反正已经能打印出来了:

运行效果:

这款爬虫可扩展性挺好,之后大家可以扩展爬取自己想要的内容当然要是只需要爬取某个页面的某些内容,完全不必要这么麻烦,一个小脚本就好了:

比如我要爬取某二级域名接口中的二级域名结果:

小脚本用正则就好了,写的快

python在exp中的应用

之前海盗表哥写过过狗的一个php fuzz脚本

http://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=16134表哥写的php版本的:

我在本地搭了个环境,然后用python也写了下,还是挺好写的:

文章作者:xiaoye

文章来源:i春秋社区

博主

Bu8ug与CTF爱才网的运营之一

相关推荐

嗨、骚年、快来消灭0回复。