SRCHunter一款基于python的开源扫描器



  • SRCHunter一款基于python的开源扫描器

    项目主页

    https://github.com/cnnetarmy/SRCHunter

    目前支持的功能

    全自动扫描: python webmain.py -a  target.com        -->  baidu_site && port/dir scan
    
    单目标扫描:python webmain.py -u  http://127.0.0.1  -->  webscan Portscan && scanDir
    
    多目标探测:python webmain.py -f  vuln_domains.txt  -->  webscan not scanDir
    
    多目标扫描:python webmain.py -d  vuln_domains.txt  -->  webscan Portscan && scanDir
    
    C段探测:  python webmain.py -cf 192.168.1.1       -->  C scan  not scanDir
    
    C段扫描:  python webmain.py -cd 192.168.1.1       -->  C scan  Portscan && scanDir
    

    运行环境

    python2.6.x或者python2.7.x
    

    依赖第三方库

    pip install requests[security]
    

    程序介绍

    扫描参数不区分大小写和顺序
    
    默认代理关闭
    
    随机无序扫描验证
    
    可跨平台使用
    

    全自动扫描

    全自动扫描,默认仅加载百度搜索引擎site:target.com,生成目标池,进行部分端口扫描、敏感资产和目录扫描功能,详细同理多目标扫描

    python webmain_debug.py -a target.com
    
    ┌─[hacker@parrot]─[~/Desktop/SRCHunter-master]
    └──╼ $python webmain_debug.py -a baidu.com
    [+] Get baidu site:domain > fanyi.baidu.com
    [+] Get baidu site:domain > index.baidu.com
    [+] Get baidu site:domain > gupiao.baidu.com
    [+] Get baidu site:domain > email.baidu.com
    [+] Get baidu site:domain > tieba.baidu.com
    [+] Get baidu site:domain > open.duer.baidu.com
    [+] Get baidu site:domain > kaoshi.baidu.com
    [+] Get baidu site:domain > image.baidu.com
    [+] Get baidu site:domain > ciyuanfan.baidu.com
    [+] Get baidu site:domain > qiao.baidu.com
    [+] Get baidu site:domain > music.baidu.com
    [+] Get baidu site:domain > baijiahao.baidu.com
    [+] Get baidu site:domain > wenku.baidu.com
    [+] Get baidu site:domain > map.baidu.com
    [+] Get baidu site:domain > zhidao.baidu.com
    [+] Get baidu site:domain > rj.baidu.com
    [+] Get baidu site:domain > su.baidu.com
    [+] Get baidu site:domain > yuedu.baidu.com
    [+] Get baidu site:domain > zp.baidu.com
    [+] Get baidu site:domain > mobads.baidu.com
    [+] Get baidu site:domain > lvshi.baidu.com
    [+] Get baidu site:domain > baike.baidu.com
    [+] Get baidu site:domain > www.youxi.baidu.com
    [+] Get baidu site:domain > lbsyun.baidu.com
    [+] Get baidu site:domain > jian.news.baidu.com
    [+] Get baidu site:domain > qvshi.baidu.com
    [+] Get baidu site:domain > kf.baijia.baidu.com
    [+] Get baidu site:domain > bshop.baidu.com
    [+] Get baidu site:domain > lavas.baidu.com
    [+] Get baidu site:domain > ihuisheng.baidu.com
    [+] Get baidu site:domain > militu.baijia.baidu.com
    [+] Get baidu site:domain > alpha.baidu.com
    [+] Get baidu site:domain > sales.baidu.com
    [+] Get baidu site:domain > pro.fanyi.baidu.com
    [+] Get baidu site:domain > auto.news.baidu.com
    [+] Get baidu site:domain > rules.baidu.com
    [+] Get baidu site:domain > v.baidu.com
    [+] Get baidu site:domain > youxi.baidu.com
    [+] Get baidu site:domain > bkso.baidu.com
    [+] Get baidu site:domain > iamge.baidu.com
    HTTPSConnectionPool(host='www.baidu.com', port=443): Read timed out. (read timeout=10)
    [+] Get 40 task.
    [*] Now is scanning: http://fanyi.baidu.com
    [*] Now is scanning: http://open.duer.baidu.com
    [+] Get url2ip: 106.39.162.57
    [+] Get url2ip: 220.181.57.158
    [+] Get IP:106.39.162.57  Port:80 open
    [+] Get IP:220.181.57.158  Port:80 open
    [+] Get IP:106.39.162.57  Port:443 open
    [+] Get IP:220.181.57.158  Port:443 open
    [+] Get open ports: [80, 443]
    [+] Get open ports: [80, 443]
    [*] Scan new_url: http://fanyi.baidu.com:80
    [*] Scan new_url: http://open.duer.baidu.com:80
    [*] Now regex emails,ips,alllinks
    [+] Get title: 百度翻译,status_code: 200,content lenth: 156567
    [*] Now scan http://fanyi.baidu.com:80/static/webpage weakfile
    [+] Get http://fanyi.baidu.com:80/static/webpage/.git/config 200 15821
    [*] Now regex emails,ips,alllinks
    [+] Get title: DuerOS开放平台,status_code: 200,content lenth: 25014
    [*] Now scan http://open.duer.baidu.com:80/didp/main weakfile
    [+] Get http://open.duer.baidu.com:80/didp/main/.DS_Store 200 15821
    [*] Now scan http://open.duer.baidu.com:80/didp/message weakfile
    [*] Now scan http://fanyi.baidu.com:80/static weakfile
    [+] Get http://fanyi.baidu.com:80/static/.git/config 200 15821
    [+] Get http://open.duer.baidu.com:80/didp/message/.DS_Store 200 15821
    [*] Now scan http://open.duer.baidu.com:80/didp/news weakfile
    [+] Get http://open.duer.baidu.com:80/didp/news/.DS_Store 200 15821
    [+] Get http://open.duer.baidu.com:80/didp/news/www.zip 200 256
    

    单目标扫描

    单目标扫描模式默认,加载敏感资产和目录扫描功能,例如:http://www.baidu.com

    python webmain_debug.py -u http://www.baidu.com
    
    ┌─[hacker@parrot]─[~/Desktop/SRCHunter-master]
    └──╼ $python webmain_debug.py -u http://www.baidu.com
    [*] Now is scanning: http://www.baidu.com
    [+] Get url2ip: 119.75.216.20
    [+] Get IP:119.75.216.20  Port:80 open
    [+] Get IP:119.75.216.20  Port:443 open
    [+] Get open ports: [80, 443]
    [*] Scan new_url: http://www.baidu.com:80
    [*] Now regex emails,ips,alllinks
    [+] Get title: 百度一下,你就知道,status_code: 200,content lenth: 115078
    [*] Now scan http://www.baidu.com/cache weakfile
    [+] Get http://www.baidu.com/cache/.git/config 200 15821
    [+] Get http://www.baidu.com/cache/www.zip 200 256
    [*] Now scan http://www.baidu.com/duty weakfile
    [+] Get http://www.baidu.com/duty/.git/config 200 15821
    [+] Get http://www.baidu.com/duty/www.zip 200 256
    [*] Now scan http://www.baidu.com/cache/sethelp weakfile
    [+] Get http://www.baidu.com/cache/sethelp/.git/config 200 15821
    [*] Now scan http://www.baidu.com/more weakfile
    [+] Get http://www.baidu.com/more/.git/config 200 15821
    [+] Get http://www.baidu.com/more/www.zip 200 256
    [*] Now scan http://www.baidu.com/gaoji weakfile
    [+] Get http://www.baidu.com/gaoji/.git/config 200 15821
    [*] Now is check waf: http://www.baidu.com:80/MC41MTc1MjY1NzQ4Nzk
    [+] Get http://www.baidu.com:80/robots.txt 200 2754
    [+] Get http://www.baidu.com:80/index.htm 200 112404
    [+] Get http://www.baidu.com:80/index.html 200 112440
    [+] Get http://www.baidu.com:80/index.php 200 112522
    HTTPConnectionPool(host='www.baidu.com', port=80): Read timed out.
    [+] Get http://www.baidu.com:80/www.zip 200 256
    [+] Get http://www.baidu.com:80/wwwroot.zip 200 256
    [+] Get http://www.baidu.com:80/wwwroot.7z 200 256
    [+] Get http://www.baidu.com:80/backup.rar 200 256
    [+] Get http://www.baidu.com:80/backup.zip 200 256
    [+] Get http://www.baidu.com:80/index.7z 200 256
    [+] Get http://www.baidu.com:80/index.rar 200 256
    [+] Get http://www.baidu.com:80/web.rar 200 256
    [+] Get http://www.baidu.com:80/web.zip 200 256
    [+] Get http://www.baidu.com:80/.htaccess 200 194
    

    端口扫描

    程序只扫11211,27017和小于10000的端口

    python webmain_debug.py -d vuln_domains.txt
    

    多目标探测

    python webmain_debug.py -f vuln_domains.txt
    

    使用介绍:

    快速探测,实现url转ip后,进行部分端口扫描,并且对每一个开放的端口进行存活探测,

    如果存活,进行getitle信息探测,小细节是加了个filter_ports,过滤掉常规端口,

    考虑到一种情况(旁站),多个url解析到一个ip上,程序加了filter_ips过滤已经扫描过端口的ip,

    同时,如果各种非预期的情况导致扫描scheme://netloc重复,程序加入filter_urls过滤已经扫描过的任务,

    程序还考虑到了一种情况,即:当url传过来的是存活,而且没有扫描出开放的端口,程序会自动探测default端口的信息,

    包括另外一种情况,当url传过来的非存活,但是扫描出其他开放的端口,程序会自动探测相应端口的信息,

    程序仅端口扫描,获取目标站点title,状态码,返回值长度,包括可能存在的合法ip地址,email资产信息,

    但是不探测解析到内网的ip,黑名单列表如下:

    10.x.x.x
    127.x.x.x
    172.x.x.x
    192.168.x.x
    

    多目标扫描

    python webmain_debug.py -d vuln_domains.txt
    

    使用介绍

    与多目标探测不同的是,加入敏感资产和目录扫描,

    敏感资产使用常用payloads集合进行探测,加上生成的日期备份文件,程序会先判断404页面的状态,然后对payloads进行遍历探测,

    判断条件是返回200,且返回内容大小不等于0,且payload与404界面的返回大小差的绝对值大于5(或者直接两者返回大小不相等),

    程序改版了之前的附加判断条件如果碰到waf,或者各种非预期的情况,导致跑的payloads返回大于40,这种情况程序会提示有可能碰到waf,并且返回空,

    进而增加探针计数器,计算结果个数,如果扫描结果很快超过25个,程序会直接结束此次扫描,节省时间,提高效率,

    新增加多级目录敏感资产扫描,即在原来获取网页所有超链接的前提下,进行目录分割扫描,

    关于结果中的Dirscan是常用payloads集合扫描和多级目录敏感资产扫描结果去重后的并集,

    如果出现[‘waf’],表示常用payloads集合扫描结果达到程序设置的默认阀值,

    如果出现[‘more_path’],表示多级目录敏感资产扫描结果达到程序设置的默认阀值,

    其他的情况,可直接点击查看验证结果,

    Allinks中,如果提示[more_link],意味着页面存在10个以上的超链接,

    默认只显示前25个字符,直接点击,则可显示详情

    C段探测

    python webmain_debug.py -cf 192.168.1.1
    

    使用介绍:

    程序会判断输入ip的合法性,自动生成c段列表,其余同理多目标探测

    C段扫描

    python webmain_debug.py -cd 192.168.1.1
    

    使用介绍:

    与C段探测不同的是,加入敏感资产和目录扫描,其余同理多目标扫描

    异常处理

    总会有各种非预期的情况,导致程序产生异常告警,debug模式默认全部输出异常,正常模式不会输出,

    以下是关于程序扫描过程中的异常处理,主要使用write_file进行错误日志记录,

    • write_file(ip,‘portscan_error’) 记录单个目标扫描出开放90个端口以上的ip

    • write_file(url,‘url2ip_error’) 记录单个目标未获取到ip的url

    • write_file(url,‘output_error’) 记录保存文件时参数编码不合法的url

    结果保存

    默认在当前目录下,新建report目录,并且根据扫描参数分别保存为html文件,

    关于扫描出开放的所有端口,根据扫描参数分别保存为csv文件,一些特殊端口保存为eg:mysql_3306.txt

    异常处理保存

    linux下建议使用nohup python webmain_debug.py -d targets.txt &后台运行,扫描日志见nohup.out,结果同上


Log in to reply