随记靶机渗透-KiraCTF

发布时间:2020-12-30      来源:

靶机详情

靶机名称:KiraCTF

靶机作者:Bassam Assiri

靶机难度:简易(作者没说明,但我认为是这样没错)

靶机发布时间:2020-11-04

靶机环境

系统:Ubuntu

平台:Vmware

网卡:桥接模式

信息收集

靶机部署好了之后,我们使用Kali自带的arp-scan去对其局域网存活主机进行识别

arp-scan -l

发现靶机ip为:192.168.0.103,接着下一步对目标进行端口扫描

-sS:半开放扫描

-T4:扫描速度为第四级

-p 1-65535: 全端口扫描

-v:列出扫描详情

nmap -sS -T4 -p 1-65535 -v 192.168.0.103

 

Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-08 15:47 CST
Initiating ARP Ping Scan at 15:47
Scanning 192.168.0.103 [1 port]
Completed ARP Ping Scan at 15:47, 0.05s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 15:47
Completed Parallel DNS resolution of 1 host. at 15:47, 0.00s elapsed
Initiating SYN Stealth Scan at 15:47
Scanning 192.168.0.103 [65535 ports]
Discovered open port 80/tcp on 192.168.0.103
Completed SYN Stealth Scan at 15:47, 1.18s elapsed (65535 total ports)
Nmap scan report for 192.168.0.103
Host is up (0.00055s latency).
Not shown: 65534 closed ports
PORT   STATE SERVICE
80/tcp open  http
MAC Address: 00:0C:29:01:47:D9 (VMware)

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 1.38 seconds

行叭,就开放了个80端口,那就当作我们的第一突破口,直接访问80端口

访问之后发现有一个文件上传的功能,以及一个不知道能干嘛的东西

那既然有上传,那就先尝试上传php,看看能不能上去

好家伙如我所愿,php上不去,系统提示我们上传的文件不是jpg文件,那接着上张图片

成功上去了,还返回了路径,访问康康

不错,但是没啥用,还没能Getshell呢,想到还有另一个功能点,去康康

发现了什么,LFI!文件包含,既然这样,思路就清晰了。

Getshell

首先准备一张图片,利用copy的方式将冰蝎的php马写进去,利用文件包含的形式Getshell

上传之后在文件包含处进行url拼接就可以丢进冰蝎连接了

反弹Metepreter

利用冰蝎自带的反弹Metepreter功能,将shell反弹到kali上

利用python返回一个TTY交互式界面

python3 -c "import pty;pty.spawn('/bin/bash')"

正好是在网站目录下,那我们看看上传的源码和文件包含的源码

<?php

if(isset($_POST['Submit1']))
{

$extension = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);

if($extension=='jpg' || $extension=='jpeg' || $extension=='png' || $extension=='gif')
{
move_uploaded_file($_FILES['file']['tmp_name'],("uploads/".$_FILES['file']['name']));
Echo "<script>alert('upload Done');
</script><b>Uploaded !!!</b><br>name : uploads/".$_FILES['file']['name'];

}
else
{
echo "File is not image";
}
}


?>

 

大概意思就是首先判断有没有文件传入,有文件传入就利用pathinfo()函数返回文件的路径,并使用PATHINFO_EXTENSION返回规定的数组,也就是返回extension,看实例会更清楚:

<?php
print_r(pathinfo("/testweb/test.txt"));
?>
----------------------------------------------
Array
(
[dirname] => /testweb
[basename] => test.txt
[extension] => txt
[filename] => test
)

所以说我们上传的文件都会被检测后缀,使用类似白名单的形式去做了一个上传限制,所以只能上它规定的四个后缀的文件。再看到language.php

<?php
if(isset($_GET['lang'])){
include("/var/www/html/".$_GET['lang']);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>LFI</title>
</head>
<body>
<input type="submit" value="language" 
onclick="window.location='/language.php?lang=en.php';" />  
</form>
</body>
</html>

直接使用了include()函数进行文件读取,没有做限制以及过滤,所以导致了文件包含

言归正传,接着在当前目录下的文件夹中找到了一个密码,是用户bassam的密码

切换用户

提权

成功来到了bassam用户下,并在/home/bassam下找到了第一个Flag

开始提权,linux提权主要分为几种:

1、脏牛提权-需要系统的内核版本在可提权版本内

2、利用地权限用户下可被root用户调用的脚本提权

3、利用环境变量劫持高权限程序提权

这里我们使用第二个方法进行提权,首先查看自己能执行的sudo下的命令,这时候会提示你输入bassam的密码,输入进行就可以了

sudo -l

find是全体用户的权限,那说明也包括root,那就利用find进行提权,可以利用gtfobins查询提权的命令

在终端下执行这条命令,就可以成功提权至root用户,好家伙我直接好家伙,继续利用python交互出TTY

这样我们就成功提权了,并在root目录下拿到最后的Flag

THM{root-Is_Better-Than_All-of-THEM-31337}

总结

知识点:

1、制作图片马

2、文件包含

3、sudo提权

第一次自主完成靶机,没看攻略,而且目前位置网上还没有出现该靶机的攻略,这一点还是让自己有点点成就感的;如果文章中有什么不对的地方,希望各位大佬斧正!蟹蟹!!转载请说明噢!

上一篇:建立监管态势感知体系 提升网络安全监管能力
下一篇: 面试中常见的物联网设备渗透测试手段(硬件)

武汉网盾科技有限公司 版权所有

公司地址:湖北省武汉市东湖高新技术开发区光谷大道70号现代光谷世贸中心A栋23楼

咨询电话:027-87315211     13476091025

鄂ICP备07009628号-20