利用burp爆破auth,资产去重,sqlmap插件trips
in PentestPythonLinux with 0 comment

利用burp爆破auth,资产去重,sqlmap插件trips

in PentestPythonLinux with 0 comment

利用burp爆破401 auth basic认证

在一些场景中,会遇到401auth basic认证进行弱口令测试的场景,由于这种情况下用户名密码认证的格式是 admin:123456 这种格式的,相较于平常的爆破有点不一样。其实这种情况burp也是可以解决的。
QQ截图20180101144534.jpg

如图对认证信息进行了base64编码
QQ截图20180101144052.jpg

sendto intruder 模块,对所有编码过的添加选择。
QQ截图20180101144209.jpg

在payload type选项选择cusctom iterator(自定义迭代器)
QQ截图20180101144230.jpg

position 可以选择多个,这里是 admin:123456 格式,因此在1种选择你的用户名字典列表,2中一个 : ,3中选择密码字典列表。
QQ截图20180101144243.jpg
QQ截图20180101144249.jpg
QQ截图20180101144256.jpg

添加payload processing base64 编码规则
QQ截图20180101145459.jpg

由于base64中会有 = 符号,burp默认选择url编码这种字符。取消

QQ截图20180101144347.jpg

python,linux 脚本,文本去重复与排除

在一些场景下,需要对收集到的资产等信息进行去重,比对排除操作。利用手工不现实,linux,python是好的选择(windows execl 也可以)

例如: 有两个文本文件 drop1.txt drop2.txt 其中drop1.txt 是已经完善,去重结束,规范的资产列表,drop2.txt 是新爬去,不规范,有重复的列表。 现在需要将drop2.txt去重,然后与drop1.txt中的每一项进行对比,如果有重复,丢弃,没有重复则保留。

去重: linux一个命令搞定

sort -u drop2.txt

排查排除

用一个python脚本跑以下即可:

obuff = []
for ln in open('drop1.txt'):
    if ln in obuff:
        continue
    obuff.append(ln)
for ln in open('drop2.txt'):
    if ln in obuff:
        obuff.remove(ln)
        continue
    obuff.append(ln)
for ln in obuff:
        print (ln.strip())

sqlmap配合burp查看实时请求日志,同时防止阿里云waf由于请求频率过高被封ip

sqlmap -r 1.txt --level 2 --time-sec=50 --random-agent --proxy "http://192.168.220.1:8081"; --dbms mysql -D *** -T ***** -C username,password --dump

burp2sqlmap插件

提供一个直接编译好的jar扩展
链接:https://pan.baidu.com/s/1hsw86ri 密码:fkyj

这个插件直接在扩展中添加就好了
QQ截图20180101152008.jpg
使用这个插件先配置好你sqlmap.py的环境变量,然后在burp中有一个选择 sendto sqlmap ,插件会将你右键所在的包保存在临时文件,然后利用sqlmap -r 进行测试
QQ截图20180101152031.jpg

文本批量每行增加

在一些场景下,需要对字典列表的每一行的首部或者尾部添加一个相同字符串。利用sed命令即可

sed 's/^/drop&/g' pass.txt > rpass.txt

在列表的头部加上drop

批量url检测存活,获取title


# -*- coding:utf-8 -*-

import requests
import sys
import re
import urllib
import threading
import queue

thread=5
urls=[]
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0'}

def gettitle|TITLEUrlCode(url):
    try:
        if "http://" not in url and "https://" not in url:
            url="http://"+url
        print(url)
        try:
            res=requests.get(url,headers=headers,timeout=3)
        except:
            return 'null'+'@-@'+url+'@-@'+'null'
        else:
            enc=res.encoding
            try:
                text=res.text.encode(enc).decode('utf-8')
            except:
                text=res.text.encode(enc).decode('gbk')
                
            if re.search(r'window.location.href="(.*)"',text):
                href=re.search(r'window.location.href="(.*)"',text).group(1)
                if url not in href:
                    urlHref=urllib.parse.urljoin(url,href)
                try:
                    res=requests.get(urlHref,headers=headers,timeout=3)
                except:
                    return 'null'+'@-@'+url+'@-@'+'null'
                    exit()
                enc=res.encoding
                try:
                    text=res.text.encode(enc).decode('utf-8')
                except:
                    text=res.text.encode(enc).decode('gbk')
                
            code=res.status_code
            if code==200 or code==301 or code==302:
                if re.search(r'<title|TITLE|title|TITLE>(.*?)<title|TITLE|title|TITLE>',text) != None:
                    title|TITLE=re.search(r'<title|TITLE|title|TITLE>(.*?)</title|TITLE>',text).group(1)
                else:
                    title|TITLE='unll'
                return str(title|TITLE)+'@-@'+url+'@-@'+str(code)
            elif code==404:
                return 'null'+'@-@'+url+'@-@'+str(code)
            elif code==503:
                if re.search(r'<title|TITLE>(.*?)</title|TITLE>',text) != None:
                    title|TITLE=re.search(r'<title|TITLE>(.*?)</title|TITLE>',text).group(1)
                else:
                    title|TITLE='unll'
                return str(title|TITLE)+'@-@'+url+'@-@'+str(code)
            else:
                if re.search(r'<title|TITLE>(.*?)</title|TITLE>',text) != None:
                    title|TITLE=re.search(r'<title|TITLE>(.*?)</title|TITLE>',text).group(1)
                else:
                    title|TITLE='unll'
                return str(title|TITLE)+'@-@'+url+'@-@'+str(code)
    except:
        return 'null'+'@-@'+url+'@-@'+'null'

def fwrite(content):
    f=open('test.txt','a')
    f.write(content+'\r\n')
    f.close()


def main():
    while not urlQueue.empty():
        url=urlQueue.get()
        content=gettitle|TITLEUrlCode(url)
        fwrite(content.rstrip())

threadList=[]
urlQueue=queue.Queue()
print('Start read txt')
for url in open(sys.argv[1]):
    url=url.rstrip()
    urlQueue.put(url)
print('Over read txt')
for i in range(thread):
    threadList.append(threading.Thread(target=main))
for t in threadList:
    t.start()
for t in threadList:
    t.join()

QQ截图20180103161936.jpg
QQ截图20180103162022.jpg

Responses