< 渗透测试学习指南 > python编写目录遍历工具

< 渗透测试学习指南 > python编写目录遍历工具

转载请注明作者及出处:

        在编写目录遍历工具之前,我们首先要搭建一个WordPress框架环境,用以实践我们稍后编写出的工具。这里推荐大家通过在kali linux安装小皮面板搭建环境,毕竟用小皮搭环境是真方便(真香!)

一、环境搭建

打开终端,输入以下命令安装小皮面板

wget -O install.sh https://notdocker.xp.cn/install.sh && sudo bash install.sh

       在小皮面板安装完成后,会在最后的部分提示登录管理界面的URL,以及初始用户名和密码,大家记得保存

< 渗透测试学习指南 > python编写目录遍历工具

       如果重启设备之后发现小皮没有开机自启,可以在终端输入xp,打开小皮命令行管理界面进行开启,具体详情如下图

< 渗透测试学习指南 > python编写目录遍历工具

       然后浏览器登录小皮管理界面,开启MySQL和Apache,由于一会用来测试的WordPress5.4版本对PHP有依赖关系(php5.6以上),所以我们需要下载安装php5.6.40版本,并如图所示将网站php版本更换为5.6.40版本

注:如小皮面板未自动创建数据库,请手动创建数据库

< 渗透测试学习指南 > python编写目录遍历工具

< 渗透测试学习指南 > python编写目录遍历工具
 

< 渗透测试学习指南 > python编写目录遍历工具
 

       接下来我们前往WordPress官网,下载WordPress5.4版本并在小皮网站根目录解压,我的根目录是/www/admin/localhost_80/wwwroot

< 渗透测试学习指南 > python编写目录遍历工具

 

< 渗透测试学习指南 > python编写目录遍历工具

        然后进入WordPress解压目录修改如图所示配置文件,将数据库名、用户名、密码做相应配置(配置思路类似DVWA靶场搭建配置),修改完后将文件名修改为wp-config.php

< 渗透测试学习指南 > python编写目录遍历工具

< 渗透测试学习指南 > python编写目录遍历工具
 

 浏览器访问我们刚才搭建的WordPress,搭建成功

< 渗透测试学习指南 > python编写目录遍历工具

二、目录遍历工具编写

话不多说,上代码

import contextlib
import os
import queue
import requests
import sys
import threading
import time
FILTERED = [".jpg", ".gif", ".png", ".css"]
TARGET = "http://localhost/wordpress/"
THREADS = 10
answers = queue.Queue()
web_paths = queue.Queue()
def gather_paths():
    for root, _, files in os.walk('.'):
        for fname in files:
            if os.path.splitext(fname)[1] in FILTERED:
                continue
            path = os.path.join(root, fname)
            if path.startswith('.'):
                path = path[1:]
            print(path)
            web_paths.put(path)
@contextlib.contextmanager
def chdir(path):
    """
    在进入时将目录更改为指定路径.
    在退出时,回到原始目录.
    """
    this_dir = os.getcwd()
    os.chdir(path)
    try:
        yield
    finally:
        os.chdir(this_dir)
if __name__ == '__main__':
    with chdir("/www/admin/localhost_80/wwwroot/wordpress"):
        gather_paths()
    input('按下Enter键继续')

       首先,我们设置了目录遍历的URL(http://localhost/wordpress/),并且我们创建了一个列表,这个列表包含了我们想要在扫描时跳过的文件类型,因为这些类型的文件通常对我们的价值并不大。

      然后,我们使用os.walk函数遍历web应用安装目录中的所有文件和目录,在遍历过程中,我们会构建目标文件的完整路径,并且会通过FILTERED列表跳过我们不想要的文件类型。

       大家可能注意到,我们用作异常处理的代码块并没有使用try/except,而是使用了try/finally,它与前者的区别在于,不管try代码块出现什么问题,finally代码块都一定会被执行。

       在main代码块中,我们给定了WordPress的解压目录,也就是我们通过浏览器访问WordPress时访问的WordPress具体路径

让我们运行一下这个工具,看看它发挥的力量!

< 渗透测试学习指南 > python编写目录遍历工具

                       

点击阅读全文

上一篇 2023年 5月 26日 am10:25
下一篇 2023年 5月 26日 am10:29