本章使用CentOS 7和金戈企业网站搭建了一个Linux靶机。利用此靶机,进行了手工SQL注入,SQLMAP注入,WebShell上传等安全测试,并通过CVE-2021-3156漏洞进行了系统权限提升。然后进一步利用了SSH后门、协议后门、Rootkit后门等进行了权限维持的实践,随着又介绍了使用Chkrootkit、Rkhunter、Lynis、Unhide、GScan等安全检测工具对系统中的后门进行检测。之后介绍了一个Linux挖矿病毒的分析(主要是shell脚本分析),最后使用了软件WAF和OepnRASP对网站进行了安全防护。
进入21世纪,随着信息技术的不断发展,信息安全问题也日益严峻。早期的互联网中,Web并非互联网的主流应用,黑客们主要的攻击目标是网络、操作系统以及软件等领域。随着防火墙与ACL等网络安全产品与技术的兴起,使得暴露在互联网上的非Web服务越来越少,改变了互联网安全的走向。另一方面,Web技术的成熟使得Web应用的功能越来越强大,最终成为了互联网的主流服务。作为企业业务的主要承载者-Web信息系统,正面临着巨大的安全挑战。传统的安全技术,如防火墙、反病毒设备对此束手无策,Web攻击利用自身的合法性绕过了防火墙。
本章将在Linux系统上安装部署金戈企业网站,然后利用网站漏洞获得Webshell,最后利用CVE-2021-315漏洞获得root权限。
靶机构建的主要过程如下:
- 在虚拟机里安装CentOS-7-x86_64-Minimal-2009,采用最小化安装,请采用相同的实验环境,以避免因实验环境不同而产生问题(主要是提权部分会产生问题)。
- 使用小皮面板(PhpStudy Linux)部署web运行环境,安装金戈企业建站系统v0.1
此次实验会使用到以下工具:VMware Workstation虚拟机、金戈企业建站系统v0.1、小皮面板(PhpStudy Linux)、SSH客户端工具、sqlmap、BurpSuite、中国菜刀,Kali-Linux-2021.2-vmware-amd64。
首先,在VMware里新建虚拟机,安装CentOS-7-x86_64-Minimal-2009。安装完成后给CentOS虚拟机配置一个静态IP地址,然后给虚拟机创建一个快照,起名为“初始快照”,方便后面需要的时候恢复初始状态。
然后使用任意SSH客户端工具连接到CentOS虚拟机进行操作。以SecureCRT为例,输入虚拟机的IP地址、用户名后点击“连接”按钮,如可连接会提示“新建主机密钥”窗口,点击“接受并保存”后,会要求输入密码,即为系统登录密码,登录成功后,会显示命令行界面。

图 1.1
接下来需要设置SecureCRT字符编码为UTF-8,否则遇到中文后会出现乱码。右键IP地址标签处,弹出菜单后选择最后一项“会话选项”,在左侧“类别”树形框中,选择“终端”-“外观”,然后在右侧“字体”分组框内,“字符编码”下拉菜单中选择UTF-8,最后点击“确定”。

图 1.2
也可以根据自己的喜好,调整背景颜色或其他设置。
- 安装小皮面板(PHPStudy)
PHPStudy Linux 面板是由PHPStudy官方团队针对Linux服务器推出的一款服务器环境搭建以及管理工具。不熟悉小皮面板使用的可以访问官方网站上的操作手册:https://www.xp.cn/phpstudy-linux/,或者视频教程:https://www.php.cn/course/1101.html进行学习。
然后,根据网页上的安装提示,使用CentOS安装脚本进行安装。

图 1.3
使用以下命令,下载并执行CentOS的安装脚本。
yum install -y wget && wget -O install.sh https://notdocker.xp.cn/install.sh && sh install.sh
由于是在线安装,需要保证虚拟机能够访问互联网,在网络畅通的情况下,一般几分钟后就能完成面板的安装。
安装完成后,SecureCRT窗口里会显示面板相关信息,包含了面板的登录地址、登录初始账号和密码。(这些信息需要保存下来,后面会用到)
内网:http://192.168.142.133:9080/A3BB90
系统初始账号:admin
系统初始密码:vnuI7ABGtn
由于我们是本地虚拟机做实验,所以无需理会外网登录地址,仅需内网地址即可,也不需要到安全组开放9080端口,接下来就使用浏览器访问:http://192.168.142.133:9080/A3BB90并登录,登录后会同意一份软件许可协议,点击“同意”即可。然后会弹出“一键安装基础套件”窗口,这时我们需要安装LNMP环境,Nginx和Apache、PHP相应版本在安装面板时已经自动安装好了,我们点击“一键安装”按钮,开始安装MySQL。安装完成后会提示安装完成,窗口会自动关闭。

图 1.4
这时,使用浏览器访问虚拟机IP,就是网站主页。

图 1.5
- 搭建金戈企业网站
点击左侧面板中“网站”菜单,会看到一个默认的站点,点击“网站目录”后会跳转到“文件管理”页面,此处就是网站的根目录,这时我们把金戈企业建站系统v0.1网站程序压缩包通过按钮“文件上传”上传到网站根目录。然后鼠标移动到压缩文件上,会显示四个按钮,我们点击“解压”按钮,弹出“解压缩”窗口后,点击“解压缩”按钮,等待解压完成后,关闭“解压缩”窗口。然后点击“刷新”按钮,刷新根目录。

图 1.6
由于此网站程序与高版本的PHP会有一些兼容性问题,报错较多,因此需要新安装一个低的PHP 5.3.29版本。点击面板左侧的“软件管理”后,在右侧搜索查找PHP5.3.29版本并安装。

图 1.7
接下来,切换PHP版本为5.3.29。点击左侧菜单的“网站”,可以看到当前的“程序语言”仍然是PHP 5.5.38,现在需要点击后方的“配置”按钮,在弹出的“站点设置”中,选择“PHP版本”,然后在下拉菜单中选择PHP5.3.29,最后点击“保存”按钮,提示“保存成功”后,点击该窗口右上角的关闭以关闭“站点设置”窗口。

图 1.8
然后使用浏览器访问金戈企业建站系统的安装地址:http://192.168.142.133/install/
这时候,会显示“基本运行环境要求”的页面,页面中会显示有Notice类型的报错,如下图:
图 1.9
在这个地方就涉及到PHP的错误等级设置,PHP的error_reporting(错误报告)有以下类型:
- E_ERROR:导致脚本终止运行的致命错误等
- E_WARNING:运行时的警告类错误,脚本不会终止运行
- E_PARSE:编译时的语法解析错误
- E_NOTICE:通知类错误,脚本可能会产生错误
- E_ALL:所有可能出现的错误
其中Notice错误等级最低,这种提示不影响网站程序的正常运行,但看起来页面不整洁,因此还是通过设置,将Notice错误提示忽略掉。
方法一:切换到phpstudy的管理页面,选择面板左侧的“软件管理”,找到并点击php5.3.29后方“设置”按钮,在弹出的“设置[php 5.3.29]”窗口中,点击第二个“参数调整”,找到“error_reporting”错误级别,改为“E_ALL & ~E_NOTICE”后,点击“保存”按钮。

图 1.10
待提示“保存成功”后,点击该窗口右上角关闭“设置[php 5.3.29]”窗口。
方法二:在SSH终端里直接修改php配置文件。使用vi编辑器打开/usr/local/phpstudy/soft/php/php-5.3.29/etc/php.ini文件,查找‘error_reporting’,找到以“error_reporting =”开头的这一行,将其改为:
error_reporting =E_ALL & ~E_NOTIC
然后保存(如果这一行的前面有分号,分号代表注释,要将分号去掉)。
这个配置项的含义如下:E_ALL代表报告所有错误;E_NOTICE代表通知类错误,加~号代表不报告;&表示逻辑与,合起来就是报告除了NOTICE类型之外的所有错误。
修改配置之后,必须重启Nginx,否则配置不能生效。点击左侧的第一个“首页”,在“已安装软件”分组框中,将鼠标移动到Nginx1.15区域内,此时会显示三个按钮,

图 1.11
点击“重启”按钮以重启Nginx服务,待提示“重启成功”后,重新访问金戈企业建站系统安装页面http://192.168.142.133/install/,这时安装页面就没有错误提示了。

图 1.12
点击“设置安装选项>>”按钮,开始下一步安装,这时候访问到“安装界面”,需要提供网站数据库的相关信息,并设置将要登录的网站管理员信息。
这时我们再次切换到phpstudy的管理页面。为网站新建一个数据库。在首页启动数据库服务,等待启动成功后,点击左侧第四个“数据库”,点击“添加数据库”按钮,在弹出的“添加数据库”窗口中,填写数据库名、用户名及密码,可以以以下图片为参考进行填写,也可以点击旁边的按钮生成随机密码;最后点击“保存按钮”即可成功创建一个数据库。

图 1.13
以下是刚才建立的数据库信息:
数据库名:jingesjkm
数据库编码:GB2312
用户名:jingeyhm
密码:jingemima
在这里,数据库编码对于数据库来说也就是存储数据的编码方式,在面板这里默认是选择的UTF-8编码,由于此网站程序环境需要,我们要通过下拉菜单选择GB2312编码。
回过头,切换到网站的安装页面,填写刚才创建的数据库输入的信息和需要创建的管理员信息。以下是填写的内容:

图 1.14
数据库服务器,默认是localhost,意思为本地服务器,也可以填写127.0.0.1本机服务器。
数据库用户名(密码):出于安全的考虑,这里没有直接使用数据库的root用户,而是使用的是上面创建数据库时使用的用户和密码。
管理员账号(密码):admin,这是指网站的管理员,密码可以自行设置,这里设置为159357。点击“下一步”按钮后,正常情况会出现安装完成的提示。如果出现了一些异常的错误情况,如果出现右侧截图的情况,请检查具体报错信息,对应在互联网搜索引擎中自行解决。

图 1.15
安装完成后,按住键盘Ctrl键不放,然后使用鼠标左键分别点击“进入后台”和“进入首页”按钮。金戈网站程序后台登陆地址为:http://192.168.142.133/isadmin/login.php。下图是网站安装完成后的前台页面。

图 1.16
安装完成后,登录后台(登录时如果遇到UID为1000的问题可以参考1.5节的其它问题解决)。使用安装过程中设置的网站管理员账号和密码,为网站添加几篇企业新闻,此过程请自行完成,不再赘述。添加完成后,回到“企业新闻”页面。

图 1.17
完成新闻添加后,给虚拟机创建一个快照,起名为“金戈网站”。
