日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python對接 xray 和微信實現自動告警

系統 2092 0

Python對接 xray 和微信實現自動告警_第1張圖片 ?

xray 是什么

xray 是從長亭洞鑒核心引擎中提取出的社區版漏洞掃描神器,支持主動、被動多種掃描方式,自備盲打平臺、可以靈活定義 POC,功能豐富,調用簡單,支持 Windows / macOS / Linux 多種操作系統,可以滿足廣大安全從業者的自動化 Web 漏洞探測需求。

如何第一時間知道掃出了漏洞

對于安全工程師來說,掃描器發現了漏洞能第一時間給出告警是非常重要的,因為安全工程師使用的是 xray 的基礎爬蟲模式,爬蟲一直在爬也不會一直人工刷新和查看漏洞報告,也有可能是使用的被動代理模式,讓測試人員掛掃描器代理然后訪問各個業務頁面,但是不知道什么時間測試人員才開始和完成測試,也有可能是日志掃描模式,導入日志使用腳本進行 url 掃描,不知道什么時間才能重放完成。

還有很多公司自建了漏洞管理系統、工單系統等等,如果掃描器發現了漏洞可以自動同步這些系統也將會大大解放安全人員。針對這些場景 xray 有一種漏洞輸出模式叫 webhook-output ,在發現漏洞的時候,將會向指定的 url post 漏洞數據,demo 的代碼就是

            
import requests
requests.post(webhook, json=vuln_info)
          

如果我們寫一個中間的轉換和轉發層,就可以很方便的實現下面的功能了

  • 發送郵件、短信告警
  • 發送微信、企業微信、釘釘、slack告警
  • 漏洞信息同步到自己的數據庫中
  • 為該漏洞創建一個工單
  • 使用其他的工具去驗證漏洞是否存在

……

使用 webhook 做自動推送

本文就借助Server醬 和 企業微信機器人 ,來演示如何實時通知 xray 發現了漏洞。

xray 的 webhook 是什么

對于 xray,webhook 應該是一個 url 地址,也就是我們需要自己搭建一個 web 服務器,接收到 xray 發送的漏洞信息,然后在將它轉發,借助于 Python 的 flask 框架,我們很快寫了一個 webhook url 的 demo 出來。

            
from flask import Flask, request
import requests

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
def xray_webhook():
  print(request.json)
  return 'ok'

if __name__ == '__main__':
  app.run()
          

使用 xray webscan --url http://pentester-web.vulnet/sqli/example1.php?name=root --plugins sqldet --webhook-output http://127.0.0.1:5000/webhook 測試,然后發現成功打印出了漏洞信息。

            
* Serving Flask app "app.py"
 * Environment: development
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
{'create_time': 1566836256580, 'detail': {'host': 'pentester-web.vulnet', 'param': {'key': 'name', 'position': 'query', 'value': "root'and'lW'='lql"}, 'payload': "root'and'lW'='lql", 'port': 80, 'request': '', 'request1': 'GET /sqli/example1.php?name=root%27and%274w%27%3D%274w HTTP/1.1rnHost: pentester-web.vulnetrnUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169rnCookie: key=valuernAccept-Encoding: gziprnrn', 'request2': 'GET /sqli/example1.php?name=root%27and%27lW%27%3D%27lql HTTP/1.1rnHost: pentester-web.vulnetrnUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169rnCookie: key=valuernAccept-Encoding: gziprnrn', 'response': '', 'response1': 'HTTP/1.1 200 OKrn...', 'response2': 'HTTP/1.1 200 OKrn...', 'title': "Generic Boolean based case ['string']", 'type': 'boolean_based', 'url': 'http://pentester-web.vulnet/sqli/example1.php?name=root'}, 'plugin': 'sqldet', 'target': {'url': 'http://pentester-web.vulnet/sqli/example1.php', 'params': [{'position': 'query', 'path': ['name']}]}, 'vuln_class': ''}
127.0.0.1 - - [27/Aug/2019 00:17:36] "POST /webhook HTTP/1.1" 200 -
          

接下來就是解析 xray 的漏洞信息,然后生成對應的頁面模板就好了。需要參考 ?https://chaitin.github.io/xray/#/guide/vuln? ?的文檔。因為推送不適合發送太大的數據量,所以就選擇了基礎的一些字段。

            
from flask import Flask, request
import requests
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def xray_webhook():
  vuln = request.json
  content = """## xray 發現了新漏洞
url: {url}
插件: {plugin}
漏洞類型: {vuln_class}
發現時間: {create_time}
請及時查看和處理
""".format(url=vuln["target"]["url"], plugin=vuln["plugin"],
      vuln_class=vuln["vuln_class"] or "Default",
      create_time=str(datetime.datetime.fromtimestamp(vuln["create_time"] / 1000)))
  print(content)
  return 'ok'
if __name__ == '__main__':
  app.run()
          

Server 醬

Server醬是一款程序員和服務器之間的通信軟件,也就是從服務器推報警和日志到手機的工具。

開通并使用上它還是很簡單的

  • 登入:用 GitHub 賬號登錄 http://sc.ftqq.com/3.version ,就能獲得一個 SECKEY
  • 綁定:掃碼關注完成綁定
  • 發消息:往 http://sc.ftqq.com/{SECKEY}.send 發請求,就可以在微信里收到消息啦

我們先用 Python 寫一個簡單的 demo,以下所有的 SECKEY 的實際值我都使用 {SECKEY} 代替,大家需要修改為自己的值。

            
import requests
requests.post("https://sc.ftqq.com/{SECKEY}.send", 
       data={"text": "xray vuln alarm", "desp": "test content"})
          

很簡單就收到了消息,將上面 xray 的漏洞信息結合在一起,就是

            
from flask import Flask, request
import requests
import datetime
import logging
app = Flask(__name__)
def push_ftqq(content):
  resp = requests.post("https://sc.ftqq.com/SCU645T57f2913b7c0fc69372e997031f7cc4e0561b7f85f2b3d.send",
         data={"text": "xray vuln alarm", "desp": content})
  if resp.json()["errno"] != 0:
    raise ValueError("push ftqq failed, %s" % resp.text)
@app.route('/webhook', methods=['POST'])
def xray_webhook():
  vuln = request.json
  content = """## xray 發現了新漏洞
url: {url}
插件: {plugin}
漏洞類型: {vuln_class}
發現時間: {create_time}
請及時查看和處理
""".format(url=vuln["target"]["url"], plugin=vuln["plugin"],
      vuln_class=vuln["vuln_class"] or "Default",
      create_time=str(datetime.datetime.fromtimestamp(vuln["create_time"] / 1000)))
  try:
    push_ftqq(content)
  except Exception as e:
    logging.exception(e)
  return 'ok'
if __name__ == '__main__':
  app.run()
          

展示效果如圖

Python對接 xray 和微信實現自動告警_第2張圖片

企業微信群機器人

企業微信群機器人就像一個普通成員一樣,可以發言,可以 @ 人,如果我們接入企業微信群做 xray 的漏洞告警,也會大大方便漏洞的第一時間發現。

開通和使用方法

  • 點擊群聊右上角,然后找到 ‘群機器人',然后點擊'添加'
  • 復制 Webhook 的地址,保存備用

Python對接 xray 和微信實現自動告警_第3張圖片

調用的代碼也非常簡單,我們只需要展示主要的部分就可以了

            
def push_wechat_group(content):
  resp = requests.post("https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=9651234b-f90e-4064-80fd-0a69d6c1d867",
             json={"msgtype": "markdown",
                "markdown": {"content": content}})
  if resp.json()["errno"] != 0:
    raise ValueError("push wechat group failed, %s" % resp.text)
          

展示效果如圖

Python對接 xray 和微信實現自動告警_第4張圖片

總結

以上所述是小編給大家介紹的Python對接 xray 和微信實現自動告警,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 岑巩县| 云南省| 华容县| 马关县| 榆树市| 芒康县| 息烽县| 平果县| 黑龙江省| 唐山市| 房产| 宜城市| 邛崃市| 育儿| 金阳县| 金门县| 新乡市| 安平县| 宣汉县| 长汀县| 长顺县| 城市| 牡丹江市| 萝北县| 清徐县| 南通市| 绥阳县| 修武县| 镇安县| 晴隆县| 应城市| 宁南县| 伽师县| 巴青县| 襄垣县| 大英县| 定结县| 雷州市| 重庆市| 明星| 永善县|