灯塔(ARL)指纹识别和POC编写

admin 2023年7月9日11:25:49评论400 views字数 4000阅读13分20秒阅读模式

一、简介

ARL(Asset Reconnaissance Lighthouse)旨在快速侦察与目标关联的互联网资产,构建基础资产信息库。协助甲方安全团队或者渗透测试人员有效侦察和检索资产,发现存在的薄弱点和攻击面。

灯塔(ARL)指纹识别和POC编写

增强指纹主要用来做更全面的资产发现,后续可以更准确的进行一些简单的poc探测

0x01、指纹识别

shirostruts2weblogicspringsolr

这里利用github上大佬的一个简单的脚本即可完成指纹增强

后台回复 灯塔 即可获取网盘提取链接自行下载即可。

usage:python3 ARL-Finger-ADD.py https://ip:5003/ username password

灯塔(ARL)指纹识别和POC编写

效果如下--->注:可自行在finger.json文件中添加额外的然后运行。

灯塔(ARL)指纹识别和POC编写

0x02、ARL poc 框架

docker exec -it arl_web /bin/bash
cd /opt/ARL-NPoC/xing/#可自行将NPoC进行打包拷贝到本地

本地使用效果如下

usage: xing [-h] [--version] [--quit]            [--log {debug,info,success,warning,error}]            {list,scan,sniffer,exploit,brute,listener,shell} ...
positional arguments: {list,scan,sniffer,exploit,brute,listener,shell} 子命令 list 显示插件 scan 扫描 sniffer 协议识别 exploit 漏洞利用 brute 弱口令爆破 listener 监听 shell 反弹Shell
optional arguments: -h, --help show this help message and exit --version, -V show program's version number and exit --quit, -q 安静模式 (default: False) --log {debug,info,success,warning,error}, -L {debug,info,success,warning,error} 日志等级 (default: info

对单一目标进行探测

xing scan -t http://218.*.*.*:8089/

0x03、如何编写

__init()__:初始化函数。

def __init__(self):    super(Plugin, self).__init__()    # 插件类型poc    self.plugin_type = PluginType.POC    # 插件name    self.vul_name = "泛微 Ecology getdata.jsp SQL注入漏洞"    # 探测组件name    self.app_name = 'Ecology'    # 探测协议?    self.scheme = [SchemeType.HTTP, SchemeType.HTTPS]

verify():验证函数。

def verify(self, target):   #参数target
### `http_req()`:请求函数。
```pythondef http_req(url, method = 'get', **kwargs): #传入url,请求方法get,post....

POST请求:

http_req(url, 'post', data=data)

http_req()的处理方法:

1. content(): # 获取响应包

conn = http_req(url, "get")
if b"GitLab" not in conn.content: return False

2. json(): # json处理响应包

conn = http_req(url, "get")data = conn.json()

3. status_code:#获取响应值

conn = http_req(url, "get", auth=(user, passwd))if conn.status_code == 200:     return True

4. text: #获取响应体。和content类似吧

conn = http_req(url, "get")pattern = r'<metas+name="csrf-token"s+content="([^"]+)+"s+/>'matches = re.findall(pattern=pattern, string=conn.text)

5. headers.get() # 获取响应头

conn = http_req(url, "get")
if self._check_str not in conn.headers.get("WWW-Authenticate", ""): return False

6.self.logger.debug() #信息回显

self.logger.debug("not Ecology {}".format(target))
def init_logger(): log_colors = { 'DEBUG': 'white', 'INFO': 'green', 'SUCCESS': 'red', 'WARNING': 'yellow', 'ERROR': 'red', 'CRITICAL': 'bold_red', }

0x04、如何快速编写

为了应对 快速把大量json文件和poc转化成符合arl格式的poc

采用大佬的python脚本

import json
finger_file = 'aspx.json'
str = """from xing.core.BasePlugin import BasePluginfrom xing.utils import http_req, get_loggerfrom xing.core import PluginType, SchemeTypeimport requestsimport hashlib
class Plugin(BasePlugin): def __init__(self): super(Plugin, self).__init__() self.plugin_type = PluginType.POC self.vul_name = "发现{{name}}" self.app_name = '{{name}}' self.scheme = [SchemeType.HTTP, SchemeType.HTTPS]
def verify(self, target):"""html = """ url = target + "{{uri}}" if b'{{html}}' in http_req(url).content: self.logger.success("found {{name}} {}".format(url)) return url"""md5 = """ url = target + "{{uri}}" con = http_req(url).content hl = hashlib.md5() hl.update(con) md5 = hl.hexdigest() if md5 == '{{poc_md5}}': self.logger.success("found {{name}} {}".format(url)) return url"""
def write_file(filename, str2): fo = open(filename, "a") fo.write(str2) fo.close()
def check(name, rule, file_name): if 'md5' in rule: tmp_md5 = '' tmp_md5 = md5.replace("{{poc_md5}}", rule['md5']) tmp_md5 = tmp_md5.replace("{{uri}}", rule['uri']) tmp_md5 = tmp_md5.replace("{{name}}", name) write_file(file_name, tmp_md5) elif 'html' in rule: tmp_html = html.replace("{{html}}", rule['html']) tmp_html = tmp_html.replace("{{uri}}", rule['uri']) write_file(file_name, tmp_html) else: None
def parser(finger_file): with open(finger_file) as f: fin_data = json.load(f) # print(fin_data)
for fin_dict in fin_data: name = fin_dict file_name = name.replace(" ", "_") + '_Identify.py' tmp_str = str.replace("{{name}}", name) write_file(file_name, tmp_str)
for i in range(len(fin_data[fin_dict])): rule = fin_data[fin_dict][i] check(name, rule, file_name)
parser(finger_file)

运行即可将指定的json指纹文件生成arl格式的指纹文件

0x05、指纹测试

把ARL-NPoC拷贝到本地之后,按照流程进行操作。确保本地测试不报红再同步到arl上的(arl_web和arl_work两个容器)

灯塔(ARL)指纹识别和POC编写

最后点击更新即可。

灯塔(ARL)--指纹识别和POC编写

部分参考链接

https://h11ba1.com/2021/07/01/arl_poc%E7%BC%96%E5%86%99/https://tophanttechnology.github.io/ARL-doc/scene_example/

接下来更新的有基础也会有漏洞挖掘或是代码审计或是工具使用,如有问题欢迎后台私信。喜欢的可以关注收藏、转发与身边的朋友分享,感谢。

原文始发于微信公众号(漏洞之星):灯塔(ARL)--指纹识别和POC编写

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月9日11:25:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   灯塔(ARL)指纹识别和POC编写http://cn-sec.com/archives/1861923.html

发表评论

匿名网友 填写信息