一次某大学sql注入到getshell

417 阅读3分钟

前言

目标是一大学,在一次挖洞过程中遇到个sql注入,尝试进一步利用扩大危害,漏洞已报送平台进行了修复

点击获取网络安全学习资料
1.2000多本网络安全系列电子书
2.网络安全标准题库资料
3.项目源码
4.网络安全基础入门、Linux、web安全、攻防方面的视频
5.网络安全学习路线图

sql注入getshell失败

在id处连续加两个单引号都报错,经过探测发现是数字型的注入且过滤了空格,这里可以用/**/代替

于是直接上sqlmap

python sqlmap.py -u url --batch --tamper=space2comment.py –dbs

发现是dba权限:

python sqlmap.py -u url --batch --tamper=space2comment.py --is-dba

试了很多方法找web路径
最后注意到操作系统是FreeBSD
无意中看到这个

char(47)就是’/’,立马想到可以通过这个遍历目录、找路径

 

通过从根目录开始逐层遍历,最终找到网站根目录:

写入shell失败,转换成16进制规避单引号还是不行
但是这个注入可以读取服务器上的任意敏感文件(包括非web目录),危害巨大

从其它点继续尝试

读取sql注入处代码,发现并没有代码层面的过滤,explode() 函数把字符串打散为数组,这里以空格为分隔,取数组的第一个,变相地过滤了空格,把空格换成内联注释就能注入

根据泄露的数据库账号、密码尝试连接3306端口失败,估计绑定了本地ip
继续遍历目录,发现了mysql的登陆界面

登录之后却是空白界面,读取处理登录逻辑的代码发现登陆成功直接设置session但不跳转,登陆后直接访问首页就行
查一下secure_file_priv,发现是空值,并没有限制

尝试利用日志写入webshell,发现没有权限设置日志路径

前言

目标是一大学,在一次挖洞过程中遇到个sql注入,尝试进一步利用扩大危害,漏洞已报送平台进行了修复

点击获取网络安全学习资料
1.2000多本网络安全系列电子书
2.网络安全标准题库资料
3.项目源码
4.网络安全基础入门、Linux、web安全、攻防方面的视频
5.网络安全学习路线图

sql注入getshell失败

在id处连续加两个单引号都报错,经过探测发现是数字型的注入且过滤了空格,这里可以用/**/代替

于是直接上sqlmap

python sqlmap.py -u url --batch --tamper=space2comment.py –dbs

发现是dba权限:

python sqlmap.py -u url --batch --tamper=space2comment.py --is-dba

试了很多方法找web路径
最后注意到操作系统是FreeBSD
无意中看到这个

char(47)就是’/’,立马想到可以通过这个遍历目录、找路径

 

通过从根目录开始逐层遍历,最终找到网站根目录:

写入shell失败,转换成16进制规避单引号还是不行
但是这个注入可以读取服务器上的任意敏感文件(包括非web目录),危害巨大

从其它点继续尝试

读取sql注入处代码,发现并没有代码层面的过滤,explode() 函数把字符串打散为数组,这里以空格为分隔,取数组的第一个,变相地过滤了空格,把空格换成内联注释就能注入

根据泄露的数据库账号、密码尝试连接3306端口失败,估计绑定了本地ip
继续遍历目录,发现了mysql的登陆界面

登录之后却是空白界面,读取处理登录逻辑的代码发现登陆成功直接设置session但不跳转,登陆后直接访问首页就行
查一下secure_file_priv,发现是空值,并没有限制

尝试利用日志写入webshell,发现没有权限设置日志路径