Perun 內網滲透掃描神器

luckyzmj發表於2020-09-27

0X01 工具介紹

Perun是一款主要適用於乙方安服、滲透測試人員和甲方RedTeam紅隊人員的網路資產漏洞掃描器/掃描框架,它主要適用於內網環境,載入漏洞檢測Vuln模組後能夠快速發現安全問題,並根據需要生成報表,以方便安全人員對授權專案完成測試工作。

  • 專案地址:https://github.com/WyAtu/Perun

0x02 工具特點

Perun由Python2.7和Python標準庫開發,所有功能(埠掃描,漏洞檢測,控制檯輸出,生成Html報告)相容Windows系統和*nix系統,Html報告採用Vue+Element,支援對掃描結果的排序、搜尋、分頁。

Perun工作流程如下:

  • 載入-l引數指定路徑下的專案程式碼
  • 解析-t引數指定的目標
  • 進行ping掃描活躍主機(使用–skip-ping引數將跳過ping掃描階段)
  • 根據預設掃描埠或-p引數對指定埠進行埠掃描,預設掃描178個埠,詳見Perun/conf/globallistconf.py
  • 解析–vuln和–search(包括–filter和–exclude)引數指定的漏洞檢測Vuln模組
  • 根據各Vuln模組預設掃描埠或–set-port指定各Vuln模組掃描埠,匹配目標主機開放埠,生成待掃描目標列表
  • 載入各漏洞掃描Vuln模組Payload,進行漏洞掃描
  • 生成報告(使用–skip-report引數將跳過生成報告)

0x03 工具使用

1. 使用引數

usage: Perun     [-h] [-t TARGET [TARGET ...]] [-p PORT [PORT ...]]
                 [--timeout TIMEOUT] [--thread THREAD] [-l LOAD_FILE_PATH]
                 [--vuln VULN [VULN ...]] [--all-list] [--selected-vuln]
                 [--search SEARCH [SEARCH ...]] [--filter FILTER [FILTER ...]]
                 [--exclude EXCLUDE [EXCLUDE ...]]
                 [--set-port SET_PORT [SET_PORT ...]] [--search-list]
                 [--user-path USER_PATH] [--pass-path PASS_PATH]
                 [--add-web-path ADD_WEB_PATH] [--skip-ping] [--report REPORT]
                 [--skip-report]

Perun

optional arguments:
  -h, --help            顯示幫助
  -t TARGET [TARGET ...], --target TARGET [TARGET ...]
                        設定目標或目標檔案,支援URL/IP/IPa-IPb段/CIDR,以及前述型別的混雜輸入,多個目標使用空格分隔
  -p PORT [PORT ...], --port PORT [PORT ...]
                        設定埠,支援單個埠和埠段(PortA-PortB),以及前述型別的混雜輸入,多個埠使用空格分隔
  --timeout TIMEOUT     設定超時時間
  --thread THREAD       設定執行緒數量
  -l LOAD_FILE_PATH, --load-file-path LOAD_FILE_PATH
                        設定載入路徑,本地檔案路徑或者遠端URL地址
  --vuln VULN [VULN ...]
                        選擇Vuln模組,多個Vuln模組名使用空格分隔,預設會針對各模組內預設埠進行掃描,掃描指定埠
                        可以使用activemq.activemq_weakpwd=8161這樣的形式輸入,'='後指定的埠也支援單個埠和
                        埠段的形式,多個埠使用','分隔
  --all-list            顯示所有支援的Vuln模組
  --selected-vuln       顯示已選擇的Vuln模組(包括vuln指定/search搜尋/filter篩選/exclude排除操作後的結果)和Vuln模
                        塊資訊,設定此引數是為了方便使用者確定需要執行的模組是否符合預期
  --search SEARCH [SEARCH ...]
                        設定關鍵詞,用於搜尋匹配的Vuln模組(或關係),多個關鍵詞使用空格分隔
  --filter FILTER [FILTER ...]
                        設定關鍵詞,用於搜尋匹配的Vuln模組(和關係),多個關鍵詞使用空格分隔
  --exclude EXCLUDE [EXCLUDE ...]
                        排除執行指定的Vuln模組,多個Vuln模組名使用空格分隔
  --set-port SET_PORT [SET_PORT ...]
                        設定搜尋匹配的Vuln模組的埠,支援單個埠和埠段的形式,多個埠使用','分隔
  --search-list         顯示搜尋後的Vuln模組結果(僅包含search搜尋/filter篩選操作的結果),設定此引數是為了便於使用
                        者檢視搜尋結果是否符合預期
  --user-path USER_PATH
                        設定用於爆破一些弱口令的username字典檔案路徑(各模組已內建精簡字典)
  --pass-path PASS_PATH
                        設定用於爆破一些弱口令的password字典檔案路徑(各模組已內建精簡字典)
  --add-web-path ADD_WEB_PATH
                        追加web掃描時的web路徑,此引數用於解決如phpMyAdmin未處於web根目錄等情況
  --skip-ping           忽略ping掃描
  --report REPORT       設定生成報告名,預設以時間戳命名
  --skip-report         忽略報告生成操作

2. 實用命令

全埠掃描命令

python Perun.py -l . -t 192.168.126.129  -p 1-65535 --skip-ping

全埠掃描並載入全部vuln模組檢測

python Perun.py -l . -t 192.168.126.130 -p 1-65535 --skip-ping --search innet

弱口令爆破載入自定義字典

# 以mysql服務為例
python Perun.py -l . -t 192.168.0.0/24 --search mysql --filter weakpassword --pass-path password.txt --skip-report

3. 使用案例

本地載入同目錄下專案檔案, 掃描目標 192.168.126.129 的全部埠

python Perun.py -l . -t 192.168.126.129  -p 1-65535 --skip-ping

本地載入同目錄下專案檔案, 掃描192.168.0.1/24、192.168.1.10-192.168.1.30、https://www.google.com、192.168.2.100的預設埠

python Perun.py -l . -t 192.168.0.1/24 192.168.1.10-192.168.1.30 https://www.google.com 192.168.2.100

遠端載入http://Perun.com Web上的專案檔案,掃描192.168.0.0/24的80、443、8000-9000、81-90埠

python Perun.py -l http://Perun.com -t 192.168.0.0/24 -p 80 443 8000-9000 81-90

本地載入並列出所有支援Vuln模組

python Perun.py -l . --all-list

本地載入掃描192.168.0.0/24的預設埠,並檢測是否存在javarmi.javarmi_rce和weblogic.rce_cve201710271漏洞,其中javarmi.javarmi_rce模組掃描該Vuln模組預設埠,weblogic.rce_cve201710271掃描80、90、8000-9000埠

python Perun.py -l . -t 192.168.0.0/24 --vuln javarmi.javarmi_rce weblogic.rce_cve201710271=80,90,8000-9000

本地載入並指定關鍵詞為smb/rce進行搜尋,並列出搜尋結果,不進行掃描,Perun將列出所有關鍵詞為smb和rce的Vuln模組和Vuln模組資訊

python Perun.py -l . --search smb rce --search-list

python Perun.py -l . -t 192.168.0.0/24 --search smb rce --search-list

本地載入並指定關鍵詞為innet/rce進行搜尋,從搜尋結果中篩選出所有dangers關鍵詞Vuln模組,不進行掃描,Perun將列出所有同時具有innet&dangers、rce&dangers的Vuln模組和Vuln模組資訊

python Perun.py -l . --search innet rce --filter rce --search-list

本地載入並針對target.txt檔案內的目標,忽略ping掃描和Html報告生成操作,進行預設埠掃描,然後載入所有內網Vuln模組(關鍵詞為innet)進行掃描,所有Vuln模組僅掃描各模組預設埠

python Perun.py -l . -t target.txt --search innet --skip-ping --skip-report

本地載入,指定選擇Vuln模組nexus_repository.nexus_weakpwd,搜尋所有innet關鍵詞Vuln模組,從選擇和搜尋的結果中排除Vuln模組tomcat.tomcat_put和zabbix.zabbix_weakpwd,列出已選擇的Vuln模組(包括vuln指定/search搜尋/filter篩選/exclude排除操作後的結果)和Vuln模組資訊,不進行掃描

python Perun.py -l . -t 192.168.0.0/24 --vuln nexus_repository.nexus_weakpwd --search innet --exclude tomcat.tomcat_put zabbix.zabbix_weakpwd --selected-vuln

本地載入掃描192.168.0.0/24的預設埠,載入所有關鍵詞有rce的Vuln模組,各Vuln模組不掃描其預設埠,改為掃描80、1000-8000埠,其中需要訪問Web服務的Vuln模組設定Web路徑為http://target.com/wwwtest/

python Perun.py -l . -t 192.168.0.0/24 --search rce --set-port 80,1000-8000 --add-web-path wwwtest

本地載入掃描192.168.0.0/24的預設埠,載入MySQL的弱口令掃描Vuln模組,針對該模組預設埠(3306)進行弱口令掃描,棄用該模組內建精簡密碼字典,改為使用password.txt密碼字典進行爆破,不生成報告

python Perun.py -l . -t 192.168.0.0/24 --search mysql --filter weakpassword --pass-path password.txt --skip-report

0x04 Vuln 模組

Perun目前支援57個Vuln模組

Vuln模組名Vuln模組說明資訊
activemq.activemq_weakpwd檢測ActiveMQ弱口令
activemq.activemq_upload檢測ActiveMQ任意檔案上傳漏洞(CVE-2016-3088)
axis2.axis2_file_read檢測Axis2任意檔案讀取漏洞
cerio.cerio_auth_rce檢測CERIO路由器認證後的RCE漏洞(CVE-2018-18852)
confluence.confluence_ssti檢測confluence SSTI(CVE-2019-3396)
docker.docker_unauth檢測Docker未授權訪問漏洞
elasticsearch.rce_cve20143120檢測Elasticsearch遠端程式碼執行漏洞(CVE-2014-3120)
elasticsearch.rce_cve20151427檢測Elasticsearch遠端程式碼執行漏洞(CVE-2015-1427)
elasticsearch.read_cve20153337檢測Elasticsearch任意檔案讀取漏洞(CVE-2015-3337)
elasticsearch.read_cve20155531檢測Elasticsearch任意檔案讀取漏洞(CVE-2015-5531)
ftp.ftp_weakpwd檢測FTP弱口令
glassfish.glassfish_file_read檢測Glassfish任意檔案讀取漏洞
glassfish.glassfish_weakpwd檢測Glassfis弱口令
grafana.grafana_weakpwd檢測Grafana弱口令
iis.iis_webdav_put檢測IIS WebDav PUT任意檔案上傳漏洞
iis.iis_webdav_rce檢測IIS WebDav遠端命令執行漏洞(CVE-2017-7269)
iis.short_filename檢測IIS短檔名漏洞
javarmi.javarmi_rce檢測Java RMI遠端命令執行漏洞
jboss.jboss_readonly檢測是否存在JBoss路徑/invoker/readonly,路徑存在即可能存在漏洞CVE-2017-12149
jboss.jboss_jmxconsole檢測是否存在JBoss路徑/jmx-console/HtmlAdaptor,路徑存在即可能存在漏洞CVE-2006-5750/CVE-2007-1036/CVE-2010-0738
jboss.jboss_webconsole檢測是否存在JBoss路徑/web-console/Invoker,路徑存在即可能存在漏洞CVE-2013-4810
jboss.jboss_adminconsole檢測是否存在JBoss路徑/admin-console/,路徑存在即可能存在漏洞CVE-2010-1871
jboss.jboss_jbossmq_httpil檢測是否存在JBoss路徑/jbossmq-httpil/HTTPServerILServlet,路徑存在即可能存在漏洞CVE-2017-7504
jboss.jboss_EJBInvokerServlet檢測是否存在JBoss路徑/invoker/EJBInvokerServlet,路徑存在即可能存在漏洞CVE-2012-0874/CVE-2013-4810
jboss.jboss_JMXInvokerServlet檢測是否存在JBoss路徑/invoker/JMXInvokerServlet,路徑存在即可能存在漏洞CVE-2007-1036/CVE-2012-0874/CVE-2013-4810/CVE-2017-7501
jenkins.unauth2rce檢測Jenkins pre-auth 遠端命令執行漏洞
jenkins.user_enumeration檢測Jenkins使用者名稱列舉漏洞
memcache.memcache_unauth檢測Memcache未授權訪問漏洞
mikrotik.winbox_cve_2018_14847檢測MikroTik RouterOS Winbox未經身份驗證的任意檔案讀/寫漏洞(CVE-2018-14847)
mongodb.mongodb_unauth檢測MongoDB未授權訪問漏洞
mysql.mysql_weakpwd檢測MySQL弱口令
mssql.mssql_weakpwd檢測MSSQL弱口令
nexus_repository.nexus_weakpwd檢測Sonatype Nexus Repository Manager弱口令
nginx.nginx_httproxy檢測Nginx配置不當導致正向代理
tomcat.tomcat_put檢測Tomcat PUT遠端命令執行漏洞(CVE-2017-12615)
phpmyadmin.phpmyadmin_weakpwd檢測phpMyAdmin漏洞
phpmyadmin.phpmyadmin_setup_rce檢測phpMyAdmin Scripts/setup.php遠端命令執行漏洞
postgresql.postgresql_weakpwd檢測PostgresSQL弱口令
redis.redis_weakpwd_unauth檢測Redis弱口令和未授權訪問漏洞
rsync.rsync_weakpwd_unauth檢測Rsync弱口令和未授權訪問漏洞
smb_netbios.computer_info獲取主機資訊,如主機名/域名/作業系統資訊,類似於nbtscan
smb_netbios.ms17_010檢測MS17-010遠端命令執行漏洞
smb_netbios.new_ms17_010檢測MS17-010遠端命令執行漏洞新版本
thinkphp.thinkphp5_rce檢測ThinkPHP 5.* 遠端程式碼執行漏洞
thinkphp.thinkphp5010_rce檢測ThinkPHP 5.0.*(低於5.0.10) 遠端程式碼執行漏洞
thinkphp.thinkphp5023_rce檢測ThinkPHP 5.0.*(低於5.0.23) 遠端程式碼執行漏洞
thinkphp.thinkphp5152_rce檢測ThinkPHP 5.1./5.2.(5.1.x - 5.1.31, 5.2.0beta1) 遠端程式碼執行漏洞
web.directory_listing掃描列目錄漏洞
web.git_or_svn_disclosure掃描Git和SVN原始碼洩露漏洞
web.web_sensitive掃描敏感檔案和目錄
weblogic.rce_cve201710271檢測WebLogic WLS遠端命令執行漏洞(CVE-2017-10271)
weblogic.rce_cve20182628檢測WebLogic WLS遠端命令執行漏洞(CVE-2018-2628)
weblogic.rce_cnvdc201948814檢測WebLogic wls9-async RCE漏洞(CNVD-C-2019-48814)
weblogic.ssrf_cve20144210檢測WebLogic SSRF漏洞(CVE-2014-4210)
zabbix.zabbix_weakpwd檢測Zabbix弱口令
zimbra.zimbra_xxe2rce檢測Zimbra從XXE到RCE(CVE-2019-9670)
zookeeper.zookeeper_unauth檢測Zookeeper未授權訪問

參考文章

  • https://www.uedbox.com/post/55520/
  • https://github.com/WyAtu/Perun

相關文章