靶机详情
靶机名称: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提权
第一次自主完成靶机,没看攻略,而且目前位置网上还没有出现该靶机的攻略,这一点还是让自己有点点成就感的;如果文章中有什么不对的地方,希望各位大佬斧正!蟹蟹!!转载请说明噢!
来源:freebuf.com 2020-12-08 17:52:25 by: 木海xixi
请登录后发表评论
注册