Skip to content

1.5

环境说明

环境概览

10.1.6.105

v0.4.3 Latest
python3.8.0 

软件版本

v0.4.3 Latest

// 下载地址
https://github.com/maurosoria/dirsearch/archive/master.zip

依赖环境

python3.8.0             // 低于此版本编译可能会抛出异常
/usr/bin/python3
/usr/bin/pip3

Python环境安装

yum install libffi-devel -y
yum install sqlite-devel
// 安装openssl
# mv /usr/bin/openssl /usr/bin/openssl.old
# mv /usr/lib64/openssl /usr/lib64/openssl.old
# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
# ln -s /usr/local/openssl/include/openssl /usr/include/openssl
# ln -s /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so
# echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
# openssl version
# ./configure --prefix=/usr/local/python3  -with-openssl=/usr/local/openssl
# make && make install
# ./configure --prefix=/usr/local/python3  -with-openssl=/usr/local/openssl
# make && make install
# ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

dirsearch依赖下载

pip3 install -r requirements.txt


// 可能涉及到饿安装
pip3 install psycopg-binary==3.1.18
pip3 install pysqlite3

命令执行示例

# pwd
/home/opt/dirsearch/dirsearch
# ls
CHANGELOG.md  CONTRIBUTORS.md  dirsearch.py  __init__.py  nohup.out    README.md  requirements.txt  setup.py  testing.py
config.ini    db               Dockerfile    lib          options.ini  reports    setup.cfg         static    tests

// 交互命令行执行
# python3 dirsearch.py -r -u https://rdp.zznode.com
// 后台执行
# nohup python3 dirsearch.py -r -u https://rdp.zznode.com &


# pwd
./reports/https_rdp.zznode.com
# du -sh *
640K    _24-04-28_16-39-00.txt
644K    _24-04-28_18-21-44.txt
# ll
total 1284
-rw-r--r-- 1 root root 655137 Apr 28 18:19 _24-04-28_16-39-00.txt
-rw-r--r-- 1 root root 656832 Apr 28 21:12 _24-04-28_18-21-44.txt
# more _24-04-28_18-21-44.txt 
# Dirsearch started Sun Apr 28 21:12:41 2024 as: dirsearch.py -r -u https://rdp.zznode.com

301   162B   https://rdp.zznode.com/js    -> REDIRECTS TO: http://rdp.zznode.com/js/
404    92B   https://rdp.zznode.com/api/
401    99B   https://rdp.zznode.com/api/api-docs
……此处省略……

此处执行了将近三个小时

命令参数

最基本:
python dirsearch.py -u URL

后面选项:
  -h, --help            显示此帮助消息并退出

  Mandatory:
    -u URL, --url=URL   URL目标    
    -L URLLIST, --url-list=URLLIST
                        URL列表目标                        
    -e EXTENSIONS, --extensions=EXTENSIONS
                        以逗号分隔的扩展列表(示例:php、asp)                        
    -E, --extensions-list
                        使用公共扩展的预定义列表

  Dictionary Settings:
    -w WORDLIST, --wordlist=WORDLIST
                        自定义单词表(用逗号分隔)
    -l, --lowercase
    -f, --force-extensions
                        强制扩展每个单词表条目(如DirBuster)

  常规设置:
    -s DELAY, --delay=DELAY
                        请求之间的延迟(浮点数)                        
    -r, --recursive     递归暴力    
    -R RECURSIVE_LEVEL_MAX, --recursive-level-max=RECURSIVE_LEVEL_MAX
                        最大递归级别(子目录)(默认值:1[仅限根目录+1目录])                        
    --suppress-empty, --suppress-empty
    --scan-subdir=SCANSUBDIRS, --scan-subdirs=SCANSUBDIRS
                        扫描给定-u |--url的子目录(分开逗号)                        
    --exclude-subdir=EXCLUDESUBDIRS, --exclude-subdirs=EXCLUDESUBDIRS
                        在递归过程中排除下列子目录扫描(用逗号分隔)                        
    -t THREADSCOUNT, --threads=THREADSCOUNT
                        线程数                        
    -x EXCLUDESTATUSCODES, --exclude-status=EXCLUDESTATUSCODES
                        排除状态代码,用逗号分隔(例如:301,500个)                        
    --exclude-texts=EXCLUDETEXTS
                        用逗号分隔的文本排除响应(示例: "Not found", "Error")                        
    --exclude-regexps=EXCLUDEREGEXPS
                        按regexp排除响应,用逗号分隔(示例: "Not foun[a-z]{1}", "^Error$")                        
    -c COOKIE, --cookie=COOKIE    
    --ua=USERAGENT, --user-agent=USERAGENT 
                        用户代理                        
    -F, --follow-redirects 
                        --遵循重定向                     
    -H HEADERS, --header=HEADERS 页眉,--页眉=页眉
                        要添加的标题 (example: --header "Referer:
                        example.com" --header "User-Agent: IE"                        
    --random-agents, --random-user-agents 
                        随机代理,--随机用户代理

  连接设置:
    --timeout=TIMEOUT   连接超时    
    --ip=IP             将名称解析为IP地址    
    --proxy=HTTPPROXY, --http-proxy=HTTPPROXY
                        Http代理 (example: localhost:8080                        
    --http-method=HTTPMETHOD
                        要使用的方法,默认值:GET,也可能是:HEAD;POST                        
    --max-retries=MAXRETRIES
                        最大重试次数                      
    -b, --request-by-hostname
                        默认情况下,dirsearch将通过IP请求速度。
                        这将强制按主机名请求

 报告:
    --simple-report=SIMPLEOUTPUTFILE 简单输出文件
                        只找到路径                        
    --plain-text-report=PLAINTEXTOUTPUTFILE 纯文本输出文件
                        找到带有状态代码的路径                        
    --json-report=JSONOUTPUTFILE JSON输出文件

扫描效率

命令执行示例,执行了将近三个小时

在使用dirsearch进行目录扫描工具时,默认的线程(或称为并发连接数)通常是X个线程,也就是说,dirsearch一次只会对X个目标发起扫描请求。如果你想要改变默认的线程数,可以在命令行中使用-t参数来指定。

python dirsearch.py -u http://example.com -t 10

扫描日志

// 上面的扫描示例,此过程执行时间长
// 流水线启动
[2024-04-29 12:33:49] Running
// 代码检出
[2024-04-29 12:33:56] Checking out
[2024-04-29 12:38:04] At revision 595211
// 代码编译阶段
[2024-04-29 12:38:19] + npm install 
[2024-04-29 12:55:03] 构建成功.
// 制品打包阶段
[2024-04-29 12:55:16] + tar 
[2024-04-29 12:55:19] + lftp
// 部署阶段
[2024-04-29 12:56:15] TASK [dev : 启动服务] 


主要耗时阶段:
代码检出:4分钟左右
编译阶段:16分钟左右

总计22分钟,这两个阶段占用近20分钟。

异常排错

ModuleNotFoundError: No module named '_sqlite3'
ModuleNotFoundError: No module named '_ctypes'
// 依赖如下环境
yum install libffi-devel -y
yum install sqlite-devel

历史事件

2024-04-28|创建说明文档