聲明
學習視頻來自B站UP主 瀧羽sec,如涉及侵權馬上刪除文章 筆記的只是方便各位師傅學習知識,以下網站只涉及學習內容,其他的都
與本人無關,切莫逾越法律紅線,否則后果自負
關于brupsuite的那些事兒-Brup-IP炮臺搭建
- 搭建炮臺
- 服務端安裝zmap
- 1、更新系統和安裝基礎依賴:使?包管理?具(如apt-get)更新系統并安裝必要的基礎依賴。例如,在Ubuntu上
- 2、安裝了一系列用于開發和構建軟件的工具和庫
- 3、克隆zmap項目倉庫,從GitHub克隆ZMap項目的源代碼到本地。
- 4、編譯和安裝ZMap,進?ZMap?錄后,執?以下命令來編譯和安裝Zmap。
- 5、驗證zamp安裝是否成功
- 6、使用zamp全網爬取ip地址
- 7、對zmap下來的代理ip進行初次篩選
- 初次篩選ip的腳本
- 8、子彈有效化
- 安裝Brup插件
- 1、在burp中載入jython包
- 2、添加自動化處理插件程序
- 3、接下來就是和驗證碼爆破時同樣的操作了,也就沒啥好說的了
- 4、同理,可以在攻擊列表中查看是否存在sql輸入,這個取決了字典的強大了
- 5、本次的目的主要時代理ip池子,那么我們看看是不是每一個段都的請求都是用不同的ip地址發送的請求即可
- 實踐是檢驗真理的唯一標準
搭建炮臺
首先這個有兩種方式可以進行實現Brip炮臺
這里我就用自己的云服務器進行實戰,沒有云服務器的哥們可以用kail安裝進行實驗,本質是一樣的
服務端安裝zmap
kail安裝
sudo apt update
然后下載zamp
sudo apt install zmap
我用的自己的云服務器,學習還是用kail好一些哈
1、更新系統和安裝基礎依賴:使?包管理?具(如apt-get)更新系統并安裝必要的基礎依賴。例如,在Ubuntu上
sudo apt-get update
2、安裝了一系列用于開發和構建軟件的工具和庫
sudo apt-get install -y build-essential cmake libgmp3-dev gengetopt libpcap-dev flex byacc
libjson-c-dev pkg-config libunistring-dev
3、克隆zmap項目倉庫,從GitHub克隆ZMap項目的源代碼到本地。
git clone https://github.com/zmap/zmap.git
4、編譯和安裝ZMap,進?ZMap?錄后,執?以下命令來編譯和安裝Zmap。
cd zmap
mkdir build
cd build
cmake ..這個命令用于生成構建系統。cmake 是一個工具,它根據項目中的 CMakeLists.txt 文件生成適合當前系統的構建配置文件(如 Makefile)。.. 表示在當前目錄的上一級目錄中查找CMakeLists.txt 文件。
make這個命令用于編譯項目。make 是一個工具,它根據上一步生成的 Makefile 文件來編譯源代碼,生成可執行文件或庫文件。sudo make install這個命令用于安裝編譯好的軟件。make install 是 make 的一個目標,它將編譯好的程序安裝到系統的標準目錄中,如 /usr/local/bin。sudo 是因為安裝軟件通常需要管理員權限,所以使用 sudo 來執行這個命令。
5、驗證zamp安裝是否成功
zmap --version
云服務的安裝就這里,這里我先聲明,本次學習用于實驗,出現問題,與本人無關。這里我還是建議大家用kail,虛擬環境練練手即可
6、使用zamp全網爬取ip地址
這里可以掃描幾十萬條數據
如果你想要掃描多個不連續的端口,你需要為每個端口或每個端口范圍分別指定 -p 參數。
zmap -p 80 -o raw_ips.txt
如果你想要掃描一系列連續的端口,比如從80到443
這里注意哈,不能使用逗號,zmap沒有這個格式哈,-短橫線也沒有這個格式化,zmap只支持
7、對zmap下來的代理ip進行初次篩選
使?多線程優化了驗證效率,使?多個驗證URL提?可?性,兩種腳本進行篩選,首先是80端口進行添加端口,其次是存在80和443端口的進行添加,然后我們需要替換為:冒號
1、·一種就是只掃了80端口的,需要用add_port_to_ips
函數添加端口
2、還有一種就是掃了80,443端口的有端口號但是中間是 , (逗號)需要用到replace_comma_with_colon
函數進行替
換。
這里想必不用我多說了吧,都懂的,用kail哈
初次篩選ip的腳本
import requests
from concurrent.futures import ThreadPoolExecutor, as_completed
import threading
# 指定輸入和輸出文件路徑
raw_input_file = 'raw_ips.txt' # 原始包含逗號的IP文件
processed_output_file = 'ip.txt' # 字符處理后的IP文件
available_proxy_file_path = 'InProxyPool.txt' # 可用代理輸出文件
# 多個驗證URL,包含國內和國外常見網站,用于更嚴格地驗證代理IP是否可用
test_urls = [
'http://www.baidu.com',
'http://www.jd.com/',
'http://www.taobao.com/'
]
# 線程鎖
lock = threading.Lock()
# 標記是否是第一次寫入可用代理文件,初始化為True表示第一次
first_write = True
def replace_comma_with_colon(raw_input_file, output_file):
"""
替換文件中逗號為冒號,并保存到新文件。
"""
with open(raw_input_file, 'r') as file:
lines = file.readlines()
# 替換逗號為冒號
modified_lines = [line.replace(',', ':').strip() for line in lines]
# 寫入新的文件,'w'模式會自動清空原有內容再寫入
with open(output_file, 'w') as file:
for line in modified_lines:
file.write(line + '\n')
print(f"IP格式處理完成,結果已保存到 {output_file}")
# IP添加:端口號
def add_port_to_ips(input_file_path, output_file_path, port=80):
try:
with open(input_file_path, 'r') as infile, open(output_file_path, 'w') as outfile:
for line in infile:
ip = line.strip() # 去除每行的空白字符(如換行符等)
new_ip = f"{ip}:{port}"
outfile.write(new_ip + "\n")
except FileNotFoundError:
print(f"輸入文件 {input_file_path} 不存在,請檢查文件路徑。")
驗證之后形成第?代理池,但是?到?標?站還是會有許多其他的狀態碼,不能訪問的錯誤,所以我們針對
?標指定?站再進?篩選
def test_proxy(proxy):
"""
測試單個代理IP是否可用,通過多個URL驗證,只有全部驗證通過才認定可用,并實時寫入文件。
"""
global first_write
proxy = proxy.strip() # 移除行尾的換行符
if not proxy: # 跳過空行
return None
# 設置代理
proxies_dict = {
'http': f'http://{proxy}',
'https': f'https://{proxy}'
}
is_available = True
for url in test_urls:
try:
# 發送請求,設置超時時間為5秒
response = requests.get(url, proxies=proxies_dict, timeout=5)
if response.status_code!= 200:
is_available = False
break
except requests.RequestException as e:
is_available = False
break
if is_available:
print(f'代理IP {proxy} 可用')
with lock:
# 根據是否第一次寫入來決定文件打開模式
mode = 'w' if first_write else 'a'
with open(available_proxy_file_path, mode) as file:
file.write(f'{proxy}\n')
if first_write:
first_write = False # 第一次寫入后標記設為False
return proxy
else:
print(f'代理IP {proxy} 不可用')
return None
def main():
# 第一步:處理IP文件
# replace_comma_with_colon(raw_input_file, processed_output_file)
add_port_to_ips(raw_input_file,processed_output_file)
# 第二步:讀取替換后的IP文件,驗證代理IP
with open(processed_output_file, 'r') as file:
proxies = file.readlines()
# 使用ThreadPoolExecutor并發執行
with ThreadPoolExecutor(max_workers=20) as executor:
future_to_proxy = {executor.submit(test_proxy, proxy): proxy for proxy in proxies}
for future in as_completed(future_to_proxy):
proxy = future_to_proxy[future]
try:
future.result() # 觸發驗證邏輯
except Exception as e:
print(f'代理IP {proxy} 驗證過程中出現錯誤: {e}')
print(f"\n代理驗證完成,可用代理IP已寫入文件: {available_proxy_file_path}")
if __name__ == "__main__":
main()
驗證之后形成第?代理池,但是?到?標?站還是會有許多其他的狀態碼,不能訪問的錯誤,所以我們針對?標指定?站再進?篩選
8、子彈有效化
使?這個腳本指定?標?站為驗證?站,還可以指定Response數據包的?度,來決定確實是正常訪問。篩選有效和無效的ip
import requests
from concurrent.futures import ThreadPoolExecutor, as_completed
import threading
# 最小響應包長度
MIN_LENGTH = 100
# 最大線程數
MAX_WORKERS = 100
# 輸出文件路徑
OUTPUT_FILE_PATH = 'FProxies.txt'
# 輸入文件路徑
input_file_path = 'InProxyPool.txt'
def check_proxy(proxy):
"""驗證代理網址"""
test_url = "http://www.google.com"
proxies = {"http": f"http://{proxy}", "https": f"http://{proxy}"}
try:
response = requests.get(test_url, proxies=proxies, timeout=2)
if response.status_code == 200 and len(response.content) >= MIN_LENGTH:
return proxy # 返回可用代理
except Exception:
pass
return None # 無效代理
def validate_proxy(proxy, lock):
"""驗證單個代理并寫入文件"""
valid_proxy = check_proxy(proxy)
if valid_proxy:
with lock:
with open(OUTPUT_FILE_PATH, 'a') as outfile:
outfile.write(f"{valid_proxy}\n")
print(f"有效代理: {valid_proxy}")
else:
print(f"無效代理: {proxy}")
def validate_proxies_from_file(input_file_path):
"""從文件中讀取代理并驗證其有效性,同時將有效代理輸出到另一個文件"""
lock = threading.Lock()
with open(input_file_path, 'r') as infile:
proxies = [line.strip() for line in infile]
with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:
futures = [executor.submit(validate_proxy, proxy, lock) for proxy in proxies]
for future in as_completed(futures):
future.result() # 等待所有任務完成
validate_proxies_from_file(input_file_path)
這里咱們的字典文件就篩選準備好了,下面開始bripsuite使用
咱就是說這種腳本都讓gpt寫好吧
主打一個不動手。
安裝Brup插件
1、在burp中載入jython包
2、添加自動化處理插件程序
之后會出現一個 Proxy Switcher 選項,那就是插件了
注意點:這里指定路徑記得時字典的txt的url路徑哈
先輸入路徑(主要文件中的數據需要是每行ip:port
的形式否則解釋失敗),然后加載,最后啟用,在后面有每
次請求代理 1 就是請求一次換一個,后面還有HTTP、SOCKS5 協議
3、接下來就是和驗證碼爆破時同樣的操作了,也就沒啥好說的了
設置一個payloads,用來加載一些基本的sql注入測試字典即可
4、同理,可以在攻擊列表中查看是否存在sql輸入,這個取決了字典的強大了
5、本次的目的主要時代理ip池子,那么我們看看是不是每一個段都的請求都是用不同的ip地址發送的請求即可
這里因為用的zmap掃描的ip,其實很多zmap掃描的地址都是不能訪問國內的網站的哈,都懂,除非指定地區,那么掃描的ip就大部分應該可以通過py腳本檢測。總之,思路就是zmap獲取一些ip,使用兩次py或者多個腳本進行多次篩選,最終獲得可以用的ip字典(也就是IP代理池了),但是這個有局限性,真正的代理池是不端發生ip代理變化且全自動化獲取的哈
下期分析偽造ip,也就是假ip,但是呢,還是真實ip有用且必須自動變化