SQL注入:为什么拿不到os-shell?
1|0文章目录
2|0权限问题
首先确保注入点的数据库连接用户有FILE权限
使用 --privileges查看
但是
就算有此权限也还有很多问题
SELINUX
因为我的服务器使用的并不是Apache的默认发布目录
所以我把SELINUX禁掉了
按理来说
SELINUX也会对这些操作有影响
mysql文件操作权限
首先说一下Linux的文件权限
chmod命令用于更改文件权限
数字法中
四个数字随意组合共八种
–file-read
参数是文件路径
服务器上的mysql需要对此文件有5权限(执行/读)
因为它实际执行的函数是
mysql有对 /data/test.txt 的5权限才可以加载
否则就算服务器管理员使用此函数也无法读出文件
–file-write 和 --file-dest
这两个是配合使用的
–file-write的参数是Kali上的完整文件路径
–file-dest的参数是服务器上的完整文件路径
服务器上mysql需要对此文件路径有3权限(可写/可执行)
而且mysql的文件导出路径不能有限制
mysql导出路径
它实际执行的函数是
–os-shell
mysql需要对网站发布目录有3权限
以及文件导出路径无限制
实际函数上传了两个php文件,即利用tmpulujm.php上传了一个tmpbtfgo.php的文件
3|0–file-read
payload
解析
0x2f6879是服务器上带完整路径的文件名
4|0–file-write和–file-dest
payload
解析
0x5054…是上传文件的HEX内容
5|0–os-shell
即利用tmpulujm.php上传了一个tmpbtfgo.php的文件
payload
解析
0x300a…是上传php文件的HEX内容
上传的两个php文件内容
退出shell后两文件自动删除
6|0总结
拿到os-shell的条件
- 首先你得知道网站是用什么写的。这个倒是好说,ASP/ASPX/PHP/JSP,很容易看
- 网站的发布目录。这个开发环境中应该都会更改,而不会使用默认的
比如Apache的/var/www/html,这里想说一下某些PHP程序员还有可能写完一个很有用的文件后忘记删掉了,可能叫test.php什么什么的,内容就是一句phpinfo();
找到这个里面会有很多有用的信息 - SELinux。牛逼的管理员会详细配置SELinux,菜鸡如我就只能强制关掉了,SELinux会对数据库对外的操作作限制,特别是针对这种敏感的直接对发布目录进行的操作。
还是得好好看看SELinux啊唉 - 执行权限。上面有详细说明
- 生产环境还会有WAF等防护
__EOF__

本文链接:https://www.cnblogs.com/forforever/p/13763812.html
关于博主:喜欢读书、旅行、爬山。评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】